XtraBackup做mysql主从同步
一、背景:
线上一个主库压力比较大,所以增加一个从库,但是不能重启或者停止主库的正常运行,不能锁库锁表影响业务的正常运行。所以这里想到了XtraBackup
二、XtraBackup介绍:
Xtrabackup的优点:
1
、备份完成快速、可靠
2
、备份期间不间断的事务处理
3
、节省磁盘空间和网络带宽
4
、自动备份验证
5
、提高正常运行时间由于更快的恢复时间
备份INNODB引擎的数据库不会锁库锁表,但是备份MyISAM的表还是会锁的,还支持增量备份。
官方地址:
三、环境说明
系统版本:CentOS Linux release 7.0.1406 (Core)
内核版本:3.10.0-123.9.3.el7.x86_64
mysql版本:5.6.26
xtrabackup版本:percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm
四、安装XtraBackup
安装在主库上
建议大家使用rpm方式安装,网上很多文档都是编译安装,编译安装费时费力,我这次做主从刚开始使用编译安装,发现编译时服务器资源被耗尽都无法ssh,导致服务器无法处理请求。所以最后选择了rpm方式安装,这种方式安装非常快。
# yum install perl-Time-HiRes # yum install perl-DBD-MySQL -y # yum install perl-Digest-MD5 -y # wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.9/binary/redhat/7/x86_64/percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm # rpm -ivh percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm
五、主库主从配置
1.主库配置/etc/my.cnf
增加server-id 和 bin-log # vim /etc/my.cnf server-id = 128 log-bin = mysql-bin
2.主库配置授权账号
mysql> grant replication slave on *.* to rep@'192.168.199.183' identified by '123'; mysql> flush privileges;
3.手动设置主库server-id和log-bin 参数
set global server_id=128
因为这两个参数是动态参数,不用重启主库也可以生效 如果你的主库已经设置这两个参数,请忽略这一步操作
六、从库主从配置
从库安装步骤略
1.从库配置/etc/my.cnf
增加server-id 和 bin-log # vim /etc/my.cnf server-id = 129 #如果需要在从库上做bin-log备份可以添加如下参数 log-bin = mysql-bin log-slave-updates = 1 expire-logs-days=10
七、备份主库数据
1.主库机器上创建备份目录
# mkdir -p /backup/full_data
2.执行全库备份
2.1.备份
# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --socket=/tmp/mysql.sock /data/backup/full_data PS:备份完成后,会在/backup/full_data/目录下生成一个时间点的目录,这里是2016-07-14_05-19-52。你也可以加一个--no-timestamp参数不产生这个目录,直接备份到/backup/full_data/目录下
2.2.重放redo log
#下面preparing,undo撤销未提交的事务,重放redo log # innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --apply-log --socket=/tmp/mysql.sock /data/backup/full_data/2016-07-14_05-19-52
ps:1、ls -l /data/backup/full_data/2016-07-14_05-19-52/查看,你发现xtrabackup会把你数据库datadir下的所有数据 文件都复制过来还新增了5个xtrabackup_开头的文件,我们关心的是xtrabackup_binlog_info这个文件,因为这个文件里面记 录了你做从库需要change到主库的binlog的位置和pos点
2、如果只想备份一个库,加“--include=navy”指定库名即可, “--databases=navy”不好使。
八、恢复数据到从库
1.停止从库
# /etc/init.d/mysqld stop
2.把主库备份文件拷贝到从库机器
# scp -ap /data/backup/full_data/2016-07-14_05-19-52 root@192.168.11.129:/data/mysql/
3.修改恢复文件权限
# chown -R mysql:mysql /data/mysql/
4.启动数据库
# /etc/init.d/mysqld start
5.确认数据是否恢复成功
登录从库,执行show databases;
6.确认同步的位置点
在从库上或者主库上都可以查看该信息,我们是在从库上查看
# cat /data/mysql/xtrabackup_binlog_info mysql-bin.000016 4542174
九、开始主从同步
1.配置从库 主从配置
#登录从库并执行
mysql > CHANGE MASTER TO MASTER_HOST='192.168.199.182',MASTER_USER='rep', MASTER_PASSWORD='123',MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=4542174;
2.开始同步
mysql> start slave;
3.查看同步状态
mysql> show slave status\G
UnixFBI 运维特工
www.unixfbi.com