赞
踩
MySQL数据库本身提供的工具并不支持真正的增量备份。使用Xtrabackup工具可支持对InnoDB存储引擎的增量备份。
xtrabackup有innobackupex和xtrabackup两个工具。xtrabackup只能备份InnoDB和XtraDB数据表,innobackupex封装了xtrabackup,可以备份MyISAM数据表。
关于xtrabackup可以自己了解。下面开始在测试环境下操作主从备份恢复。
环境:
Master:192.168.99.204 MySQL 5.6.33
Slave:192.168.99.209 MySQL 5.6.33
备份数据放在:/data/pxb
在Master,Slave上:
查看/etc/my.cnf。确定设置了log_bin和datadir
更改后需要重启MySQL
Step1:
执行命令对Master进行全量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --socket=/var/lib/mysql/mysql.sock /data/pxb
--defaults-file指定MySQL配置文件
--user MySQL的执行备份操作的用户账号(实际线上环境需要自己创建执行备份的用户账号)
--password 执行备份操作的用户密码
--socket MySQL的socket连接文件
最后指定备份数据存放路径
完成后会如下图所示
查看备份的数据文件目录下xtraback_info的内容如下
xtrabackup_checkpoints的内容如下,其中记录了backup type和lsn相关信息
Step2:
copy备份数据到Slave
scp -r /data/pxb/xxxxx root@192.168.99.209:/opt/
Step3:
在Slave上执行命令
innobackupex --apply-log /opt/2020-03-18_16-38-12
查看xtrabackup_checkpoints内容可见backup type已经改为full-prepared
Step4:
在Slave上停止MySQL。清除Slave上数据
/etc/init.d/mysql stop
rm -rf /var/lib/mysql/data/*
Step5
恢复Master数据到Slave
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /opt/2020-03-18_16-38-12
Step6:
查看备份数据中的binlog和position
cat /opt/2020-03-18_16-38-12/xtrabackup_binlog_info
记录下binlog和位置信息
Step7:
改变恢复数据所属,重启MySQL
chown -R mysql:mysql ./data
/etc/init.d/mysql start
Step8:
从Master同步数据到Slave。
mysql -uroot -p123456
stop slave;
change master to master_host='192.168.99.204',master_user='backup',master_password='123456',master_log_file='binlog.000001',master_log_pos=4360694;
start slave;
查看同步状态
在Master上登陆MySQL后执行
show master status;
在Slave上登陆MySQL后执行
show slave status\G
如果正常可以看到Slave在同步Master的数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。