mysql point in time recovery using sql_thread SQL_Thread增量恢复binlog 要点

来源:这里教程网 时间:2026-03-01 11:12:17 作者:

一、mysql point in time  recovery  using sql_thread   SQL_Thread增量恢复binlog,网上有很多类似文章,这里把我实验的要点记录下来: 二、    1)重新初始化一个实例, 恢复全量备份文件。     2)找到第一个binlog文件的position,和剩下所有的binlog。     3)将binlog伪装成relaylog,通过sql thread增量恢复。 三、将relay log info的repository改到file中,并生成这个文件。

    SET GLOBAL relay_log_info_repository='FILE';

    CHANGE MASTER TO master_host='1'; 并且通过该步骤,生成 relay.info 文件。

    假如不想生成relay_log.info文件可以使用如下语句:

  CHANGE MASTER TO RELAY_LOG_FILE='mysql-relay-bin.000001',   RELAY_LOG_POS=1, MASTER_HOST='dummy'; 四、关闭实例,将需要增量的binlog文件伪装成relaylog。 [root@mysql1 mysql]# for i in $(ls /tmp/binlogs/*.0*) do     ext=$(echo $i | cut -d'.' -f2);  cp $i mysql-relay-bin.$ext; done chown mysql:mysql -R . 五、修改relay.info文件和relay-log.index文件    如果没有生成relay_log.info文件,本步骤可以忽略

    将relay.info的第二三行改成需要执行的第一个binlog(现在是relaylog)的文件名和position:

    /data/mysql57/relaylog/mysql - relay . 000003

    1276895

第二三行对应Relay_log_name和Relay_log_pos,等同于: mysqlbinlog mysql-relay.000003 --start-position=1276895 | mysql -u -p -S 修改该文件是为了告诉SQL_Thread从哪一个文件和哪一个position开 始执行事务 再修改relay-log.index,清空原有信息,添加以下信息,为的是告诉SQL_Thread还有哪些 relaylog是需要执行的。

    /data/mysql57/relaylog/mysql-relay.000003

    /data/mysql57/relaylog/mysql-relay.000004

    /data/mysql57/relaylog/mysql-relay.000005

    /data/mysql57/relaylog/mysql-relay.000006

    /data/mysql57/relaylog/mysql-relay.000007

    /data/mysql57/relaylog/mysql-relay.000008

    /data/mysql57/relaylog/mysql-relay.000009

    /data/mysql57/relaylog/mysql-relay.000010

六、 启动实例,开启SQL_Thread:

    START SLAVE  sql_thread ;

只需要开启SQL_Thread即可

mysql> CHANGE MASTER TO RELAY_LOG_FILE='mysql1-relay-bin.000001', 
       RELAY_LOG_POS=1, MASTER_HOST='dummy';
mysql> set global slave_parallel_type='LOGICAL_CLOCK';
mysql> SET GLOBAL SLAVE_PARALLEL_WORKERS=8;
mysql> START SLAVE SQL_THREAD UNTIL 
       SQL_BEFORE_GTIDS = '7766037d-4d1e-11e7-8a51-08002718d305:25076';

该测试使用的版本为 :MySQL 5.7.22 如果没有使用gtid模式,请使用如下语句:将START SLAVE sql_thread后添加一个  UNTIL RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos 即可。

相关推荐