MySQL · 2016-10-09 0

利用innobackupex 进行MySQL从库搭建

知识准备:
1、在备份InnoDB的过程中,记录的变更保存于xtrabackup_logfile文件,所以在prepare(–apply-log)的时候,需要重放该部分数据到表空间。
2、如果库中只使用了innodb或者XtraDB引擎,恢复的时候使用xtrabackup_binlog_pos_innodb文件确定pos信息;
3、如果还有其他引擎(如MyISAM),恢复的时候使用xtrabackup_binlog_info确定pos信息;
4、innobackupex的过程图示
xtrabackup (2)
将xtrabackup_logfile中的日志进行重做
xtra (1)
1、在主库上进行全备,然后进行prepare
backup:
innobackupex --defaults-file=/app/mysql/my.cnf  --user=root --password=myroot321  \
--use-memory=1024M --no-timestamp --backup  /data/backup/full

prepare:
innobackupex --apply-log  /data/backup/full

2、将备份进行压缩,拷贝到从库

tar -czvf mysql_full_backup.tar.gz /data/backup/full
scp mysql_full_backup.tar.gz xxx@xxx:/path/

3、在主库上创建复制用户

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$slaveip' IDENTIFIED BY '$slavepass';

SHOW GRANTS;

4、配置从库,修改my.cnf 文件

server-id=2

5、启动slave

cat /bakcup/xtrabackup_binlog_info
mysql-bin.000001    421        62f821d2-7453-11e4-bebb-fa163e43bfe5:1

1、使用master_log_file  和 master_log_pos 进行change
CHANGE MASTER TO
MASTER_HOST='$masterip',
MASTER_USER='repl',
MASTER_PASSWORD='$slavepass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=421;
2、也可以使用gtid来进行
slave1 > SET GLOBAL gtid_purged="62f821d2-7453-11e4-bebb-fa163e43bfe5:1";
slave1 > CHANGE MASTER TO 
MASTER_HOST="$masterip", 
master_user="repl", 
master_password="$slavepass", 
MASTER_AUTO_POSITION = 1;

6、启动slave,检查slave 状态是否正常

START SLAVE;
-------------
SHOW SLAVE STATUS \G
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 13
...
 至此:利用innobackupex 进行MySQL 从库搭建已经完成。