在日常生活中,我们做的比较多的操作就是在线添加从库,比如线上有一主一丛两个数据库,由于业务的需要一台从库的读取量无法满足现在的需求,这样就需要我们在线添加从库,出于安全考虑,我们通常需要在从库上进行在线克隆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
克隆slave