xtrabackup在备份的时候同时读取redolog和bin-log position,最后将redolog应用到数据库文件中,所以能够实现热备不停机、不锁表将master的数据同步到slave
前提:安装好xtrabackup,mysql 开启binlog
步骤1:创建一个备份并prepare
TheMaster$ innobackupex --defaults-file=/opt/mysql/my.cnf --user=root--password=password /path/to/backupdir
备份完成后,在指定目录下会生成以日期命名的文件夹
然后进行prepare ,所谓的prepare就是将redolog应用到数据库文件中
TheMaster$innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=password
--apply-log /path/to/backupdir/$TIMESTAMP/
步骤2:把备份复制到TheSlave
使用scp或者其他工具来传输备份文件
TheMaster$scp -rpvC -i6000 /backup/xtrmysql/2016-09-11_11-52-21/ 10.0.0.1:/backup/mysql_bak/
把备份复制到mysql配置的datadir下
TheSlave$ mv /backup/mysql_bak/2016-09-11_11-52-21/ /opt/mysql/data
步骤3:启动从数据库上的复制线程
先查看xtrabackup_binlog_info来确定binarylog的位置
TheSlave$ less /backup/mysql_bak/2016-09-11_11-52-21/xtrabackup_binlog_info
mysql-bin.000531 327075954
在slave上开启主从复制
TheSlave|mysql>CHANGE MASTER TO
MASTER_HOST=‘$masterip‘,
MASTER_USER=‘replication‘,
MASTER_PASSWORD=‘password‘,
MASTER_LOG_FILE=‘mysql-bin.000531‘,
MASTER_LOG_POS=327075954;
然后启动slave
mysql> START SLAVE;
xtrabackup也支持开启了gtid的备份,详细信息可以参考官网说明
原文地址:http://3379770.blog.51cto.com/3369770/1909231