在日常生活中,我们做的比较多的操作就是在线添加从库,比如线上有一主一丛两个数据库,由于业务的需要一台从库的读取量无法满足现在的需求,这样就需要我们在线添加从库,出于安全考虑,我们通常需要在从库上进行在线克隆slave
克隆slave时候,常用参数–slave-info和–safe-slave-backup
–slave-info会将master的binary log的文件名和偏移位置保存到xtrabackup_slave_info文件中
–safe-slave-backup 则会暂停salve的sql线程,直到没有打开的临时表的时候开始备份,待备份结束后sql线程会自动启动,这样操作的目的主要是确保一致性的复制状态。
例子:
master:192.168.1.1
slave:192.168.1.2
newslave:192.168.1.3
在slave上进行备份
innobackupex –user=backup –password=’123456′ –socket=/tmp/mysql.sock –defaults-file=/tmp/my.cnf –slave-info –safe-slave-backup /data/backup/hotbackup/cloneslave –no-timestamp –parallel=2
备份完查看xtrabackup_slave_info文件的内容,这个内容即为搭建从库时候的change master to参数
在主机名为slave的主机上进行还原
innobackupex –apply-log –redo-only –use-memory=2g /data/backup/hotbackup/cloneslave
将还原的文件复制到新的从库上
rsync -avprP -e ssh /data/backup/hotbackup/cloneslave newslave:/root/data
在主机名master的主库上添加对主机newslave的授权:
mysql>grant replication slave on *.* to ‘repl’@’slave2’ identified by ‘123456’;
在主机newslave上拷贝slave主机的my.cnf并且修改server-id参数,修改完毕后,启动新的从库的newslave
scp slave:/etc/my.cnf /etc/
skip-slave-start
server-id=3
log-slave-updates=1
查看slave备份完的xtrabackup_slave_info文件的内容,这个内容即为搭建从库时候的change master to参数,在newslave上执行change master to master_host=”,master_user=”,master_password=”,master_log_file=”,master_log_pos=123;
启动从库并检查状态是否正常
start slave