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的备份,详细信息可以参考官网说明