91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

延安市| 宣恩县| 大城县| 淳安县| 龙海市| 鸡泽县| 日喀则市| 鄢陵县| 胶南市| 开化县| 克拉玛依市| 红河县| 仁寿县| 左云县| 勃利县| 黎平县| 孟村| 泰来县| 锦屏县| 富川| 阜康市| 新野县| 旬邑县| 图木舒克市| 镇安县| 瓮安县| 麻栗坡县| 许昌县| 岱山县| 呼和浩特市| 东海县| 海伦市| 麟游县| 宿迁市| 玛多县| 宜春市| 翁牛特旗| 沾益县| 滨海县| 临澧县| 喀喇|