1、查看原库数据文件大小:
1 | du -sh *|grep data |
2、使用innodbackex备份数据
在percona官方下载xtrabackup软件,并解压
1 | wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz |
开始执行备份,指定配置文件、用户名、密码、端口、备份的目录
1 | ./innobackupex --defaults-file=/etc/my.cnf --user=root --password=12345678 --port=3306 /data/ |
(总体耗时25分钟左右,备份文件大小23G)
3、采用innodbackex备份出来的数据去恢复,将数据文件拷贝到节点1,执行恢复操作:
先把事务日志恢复(–apply-log)
1 | /data/soft/percona-xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=12345678 --port=3306 --apply-log /data/2018-09-14_13-34-38 |
恢复数据之前需要清除数据目录下的所有数据:
1 | rm -rf /data/mysql/data/* |
开始恢复数据
1 | /data/soft/percona-xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=12345678 --port=3306 --copy-back --rsync /data/2018-09-14_13-34-38 |
数据恢复完成之后,删除datadir下的事务日志log文件(innodb引擎才会有)
1 | shell > cd /data/mysql/data |
设置数据目录权限
1 | shell > chown -R mysql:mysql /data/mysql/data |
启动节点1的mysql
1 | /etc/init.d/mysql restart |
恢复总体耗时(35分钟)
4、原库使用mysqldump方法备份一份数据,用于恢复节点2:
原库操作
1 | /data/mysql/bin/mysqldump --all-databases --set-gtid-purged=ON --single-transaction -uroot -p12345678 > /db/test.dump |
备份需要指定–set-gtid-purged=ON参数在备份文件中输出global.gtid_purged信息,
指定–single-transaction参数避免备份过程中产生锁
(备份耗时10分钟,备份文件大小11G)
5、将mysqldump备份出的数据拷贝到节点2,节点2进行恢复操作:
如果从库@@GLOBAL.GTID_EXECUTED值不为空需要执行reset master;
1 | root@db 07:55: [(none)]> stop group_replication; |
开始执行恢复
1 | [root@dax-mysql-mha bin]# mysql -u root -p12345678 < /data/test.dump |
总体耗时(60分钟左右)
6、关于使用mysqldump备份恢复和innobackupex备份恢复的比较:
1 | 数据文件目录大小23G情况下,mysqldump逻辑备份出来数据大小11G,备份耗时十分钟,恢复耗时一小时; |