MySQL延時從庫處理演練

大家好,我是anyux。本文介紹MySQL延時從庫處理演練。

MySQL延時從庫處理演練

演示前請確保主從數據庫運行正常,pos點保持一致,如果出現錯誤,請與主庫保持一致

<code> mysql -uroot -proot -S /data/3307/mysql.sock -e "CHANGE MASTER TO
 MASTER_HOST='192.168.255.113',
 MASTER_USER='repl',
 MASTER_PASSWORD='repl',
 MASTER_PORT=3306,
 MASTER_LOG_FILE='log-bin.xxx',
 MASTER_LOG_POS=xxx,
 MASTER_CONNECT_RETRY=10;"/<code>


1.設置從庫延時為300秒

<code> stop slave;
 change master to master_delay=300;
 start slave;/<code>


主庫創建業務數據

<code> create database delay charset utf8mb4;
 use delay;
 create table tmp(id int);
 insert into tmp values (1),(2),(3);
 commit;
 drop database delay;/<code>

從庫操作

2.停止從庫sql線程,獲取relay的位置點

<code> stop slave sql_thread;/<code>

查看從庫狀態

主要看sql線程是否關閉

<code> show slave status\\G/<code>


查看Relay_Log_File和Relay_Log_Pos,它們分別對應中繼日誌和sql線程讀取點

sed命令直接定位relaylog日誌起點信息

<code> cd /data/3307/data
 sed -n '3p' relay-log.info/<code>

grep命令配合mysql過濾起點信息

<code> mysql -uroot -proot -S /data/3307/mysql.sock -e "show slave status\\G" | grep "Relay_Log"/<code>

下面的Relay_Log_pos:496表示為起點

MySQL延時從庫處理演練

3.找到relay的截取終點

mysqlbinlog 查看drop語句前的倒數第二個at數值,就是終點

<code> cd /data/3307/data
 mysqlbinlog --base64-output=decode-rows db01-relay-bin.000003 | grep -B 10 "drop"/<code>

可以看到第二列Pos數值為927,此數值為截取的終點

MySQL延時從庫處理演練

show relaylog查看drop語句前一行,就是終點

<code> show relaylog events in 'db01-relay-bin.000003';/<code>
MySQL延時從庫處理演練


4.截取relaylog

截取後,打開relay.sql查看是否有drop語句,小心不要截錯

<code> cd /data/3307/data
 mysqlbinlog  --start-position=496 --stop-position=927 db01-relay-bin.000002 > /tmp/relay.sql/<code>
MySQL延時從庫處理演練

5.恢復relay到從庫

登錄從庫

<code> mysql -uroot -proot -S /data/3307/mysql.sock/<code>

關閉日誌記錄功能

<code> set sql_log_bin=0;/<code>

恢復數據

<code> source /tmp/slave.sql;/<code>

驗證數據

<code> use delay;
 select * from tmp;/<code>


6.全備數據庫

<code> mysqldump -uroot -proot -S /data/3307/mysql.sock --databases delay >/tmp/delay.sql/<code>


7.恢復備份到主庫

<code> mysql -uroot -proot -e "set sql_log_bin=0;source /tmp/delay.sql;"/<code>

驗證數據

<code> use delay;
 select * from tmp;/<code>

此時主庫與從庫數據狀態一致,

8.恢復業務

MySQL延時從庫處理演練


分享到:


相關文章: