• Mysql 通过binlog伪装master恢复数据库


    假如主库被 rm -fR datadir, 数据目录被删除了,我们有binlog日志备份,怎么恢复?

     

    思路:

    1. 建立一个新的数据库实例,端口3309,创建复制账号

    1. create user 'repl'@'%' IDENTIFIED BY '123456';
    2. 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从备份开始的位置重新跑一遍。

    1. 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;
    2. start slave;

    ③ 关键看 show slave status;

     Executed_Gtid_Set的Gtid有没有跟上来,如果执行完binlog中gtid则表示数据已经恢复成功。

    细节:这里用做恢复的3308的数据库实例,一定要用新的数据库去操作,我一直用以前主库3307的数据库去测试操作,造成的问题就是Retrieved_Gtid_Set没有数据库,3308的Relay Log一直获取不到数据。

  • 相关阅读:
    pod详解
    Java客户端如何直接调用es的API
    TextureView和SurfaceView
    sklearn机器学习——day11
    谈一谈MySQL 的索引机制以及优化建议
    IBM Qiskit量子机器学习速成(一)
    Mysql 中如何导出数据?
    “蔚来杯“2022牛客暑期多校训练营(加赛) D题: Directions
    数据结构— — 二叉树的遍历
    [SM6225][Android13]user版本默认允许root和remount
  • 原文地址:https://blog.csdn.net/u010648194/article/details/125900817