亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中怎么實現延時復制

發布時間:2021-08-06 14:18:50 來源:億速云 閱讀:112 作者:Leah 欄目:MySQL數據庫

今天就跟大家聊聊有關Mysql中怎么實現延時復制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

首先研究下mysql的復制結構,4.0以上開始,復制分為2個進程,io進程和sql進程。其中io進程連接到master讀取binlog,寫入relaylog,而sql進程讀取relaylog后apply到slave上。

binlog和relaylog格式dump出來是這樣的:

#090108 20:24:17 server id 1 log_pos 9466422 Query thread_id=34456 exec_time=0 error_code=0
SET TIMESTAMP=1231417457;
insert into xxxx (UDusedo,UDdirect,UDuserid,UDusername,UDgetuserid,UDgetusername,UDcoins,UDtype,UDzone1,UDtargetvalue,UDdate,UD
ip,UDstatus) values ('33','n','7495715','LWGZOY','7495715','LWGZOY','1000','prop','3','56009376',now(),'116.53.1.144','00');

log中有SET TIMESTAMP=1231417457是為了防止slave和master之間時間不同造成某些時間字段值不一致的情況。其實也等同于這句sql在master上運行的時間,那么我們只要獲取到它再和當前slave上的時間比較,如果少于我們需要的延時就讓復制停下,這不就實現了延時復制么.

在mysql中可以通過函數UNIX_TIMESTAMP獲取到和上面的TIMESTAMP同樣的結果。

mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1231750815 |
+------------------+
1 row in set (0.00 sec)

如何挖relaylog的尾部是個問題,因為日志可能很大,所以我們要借助下面的命令:

[root@HB-150-189 data]# mysql -e "show slave statusG"
*************************** 1. row ***************************
Master_Host: 192.168.1.104
Master_User: rep
Master_Port: 3306
Connect_retry: 60
Master_Log_File: HBDB104-bin.104
Read_Master_Log_Pos: 534427423
Relay_Log_File: HB-150-189-relay-bin.070
Relay_Log_Pos: 20200284
Relay_Master_Log_File: HBDB104-bin.104
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_do_db: aushop,auhj
Replicate_ignore_db:
Last_errno: 0
Last_error:
Skip_counter: 0
Exec_master_log_pos: 534427423
Relay_log_space: 20200284

其中得到Relay_Log_File的名字,Relay_Log_Pos: 20200284,通過這個可以得到一個offset,以此來挖掘relaylog來獲取到最近的TIMESTAMP,然后使用:

mysqlbinlog -j 20200284./HB-150-189-relay-bin.070|grep "SET TIMESTAMP"|sed -n '1p'

在加上shell的處理就可以輕松獲取最近的TIMESTAMP了

再看下show slave status的輸出,版本為4.0.26:

mysql> show slave statusG
*************************** 1. row ***************************
Master_Host: 192.168.1.184
Master_User: rep
Master_Port: 3306
Connect_retry: 60
Master_Log_File: HBDB184-bin.072
Read_Master_Log_Pos: 358310392
Relay_Log_File: HB150-130-relay-bin.076
Relay_Log_Pos: 348847513
Relay_Master_Log_File: HBDB184-bin.072
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_do_db: money
Replicate_ignore_db:
Last_errno: 0
Last_error:
Skip_counter: 0
Exec_master_log_pos: 358310392
Relay_log_space: 348847513
1 row in set (0.00 sec)

輸出信息包括了Slave_IO_Running, Slave_SQL_Running的狀態。

mysql 4以后,可以通過STOP SLAVE IO_THREAD來停止io進程的活動,STOP SLAVE SQL_THREAD來停止sql進程的活動,大家只要使用shell結合crontab和nohup,加上對

[root@HB-150-189 data]# mysqladmin extended-status|grep Slave_running

看完上述內容,你們對Mysql中怎么實現延時復制有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴宁市| 阿鲁科尔沁旗| 西平县| 永年县| 离岛区| 聂荣县| 峨山| 思南县| 新余市| 阿坝县| 枣强县| 交城县| 苍山县| 肃南| 高尔夫| 小金县| 达州市| 方正县| 互助| 甘孜县| 谢通门县| 太仆寺旗| 阜新市| 正定县| 通渭县| 高雄市| 二手房| 佛学| 荔波县| 汶川县| 蚌埠市| 宁都县| 新巴尔虎右旗| 云安县| 和龙市| 锡林郭勒盟| 道真| 茂名市| 连南| 常山县| 府谷县|