赞
踩
假如主库被 rm -fR datadir, 数据目录被删除了,我们有binlog日志备份,怎么恢复?
思路:
1. 建立一个新的数据库实例,端口3309,创建复制账号
- create user 'repl'@'%' IDENTIFIED BY '123456';
- grant replication slave ON *.* to 'repl'@'%';
把备份的binlog日志复制到新的3309数据库实例中,
cp log_bin.* ../mysql_data3309/
重启mysql可以通过
show binary logs;
查看执行过的GTID; 这里的 0745b539-0643-11ed-bb30-000c29023840:1-151446 就是我们后面要恢复到的gtid.
2. 建立一个新的数据库实例,端口3308
① 把最近用xtrabackup工具备份的数据拿到,还原到3308数据库中
xtrabackup --defaults-file=/etc/mysql3307/my.cnf --copy-back --target-dir=/mdata/backup
② 开始执行change master来拉取3309中伪装的binlog数据,让binlog从备份开始的位置重新跑一遍。
- change master to master_host='192.168.88.150', master_port=3309, master_user='repl', master_password='123456', master_ssl=1, master_auto_position=1;
-
- start slave;
③ 关键看 show slave status;
Executed_Gtid_Set的Gtid有没有跟上来,如果执行完binlog中gtid则表示数据已经恢复成功。
细节:这里用做恢复的3308的数据库实例,一定要用新的数据库去操作,我一直用以前主库3307的数据库去测试操作,造成的问题就是Retrieved_Gtid_Set没有数据库,3308的Relay Log一直获取不到数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。