mysql point in time recovery using sql_thread SQL_Thread增量恢復binlog 要點

e71hao發表於2018-08-01

一、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中,並生成這個檔案。


  1. SET GLOBAL relay_log_info_repository='FILE';

  2. CHANGE MASTER TO master_host='1';
    並且透過該步驟,生成 relay.info 檔案。

  3. 假如不想生成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檔案,本步驟可以忽略

  1. 將relay.info的第二三行改成需要執行的第一個binlog(現在是relaylog)的檔名和position:


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

  2. 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是需要執行的。


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

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

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

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

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

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

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

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


六、 啟動例項,開啟SQL_Thread:


  1. 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 即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-2168905/,如需轉載,請註明出處,否則將追究法律責任。

相關文章