日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

percona-toolkit 之 【pt-slave-delay】说明

發布時間:2024/6/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 percona-toolkit 之 【pt-slave-delay】说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:

????? 在主從復制的架構中,正常情況下主上操作的記錄也會在從上進行操作,雖說是異步復制,但操作會“實時”的同步到從。比如在主上不小心誤操作了,還沒等反應過來從上也會馬上執行誤操作,后期只有通過二進制或則備份恢復數據了,費時,又費力,沒有任何回旋的余地,而且也會影響到網站的功能。而pt-slave-delay故意讓主上的操作延遲制定的時間寫入到從,這樣就可以快速的處理上面說的問題了。下面介紹下使用方法,其實挺簡單的。

前提:

下載地址:wget www.percona.com/downloads/percona-toolkit/2.2.2/percona-toolkit-2.2.2.tar.gz

安裝方法:perl Makefile.PL;make;make install

使用方法:

pt-slave-delay [OPTIONS] SLAVE_DSN [MASTER_DSN]

????? 執行該命令鏈接數據庫的賬號需要有 PROCESS、REPLICATION CLIENT、and SUPER權限。他是通過Slave的relay log(中繼日志)的position(偏移量),不斷啟動,關閉?replication SQL thread 來保持主從一直延時固定的時間來實現的,所以沒有必要鏈接主服務器。如果想在運行中停止的話,按CTRL+C中斷就可以了。具體執行的命令:

pt-slave-delay --delay=1m --interval=15s --run-time=10m u=root,p=123456,h=192.168.200.25,P=3307#--delay :從庫延遲主庫的時間,上面為1分鐘。 #--interval :檢查的間隔時間,上面為15s檢查一次。(可選),不選則1分鐘檢查一次。 #--run-time :該命令運行時間,上面為該命令運行10分鐘關閉。(可選),不選則永遠運行。
#--ask-pass :隱性輸入密碼。 其他的為鏈接數據庫的賬號信息,賬號要有PROCESS, REPLICATION CLIENT, and SUPER權限注意:延遲的時間實際為 delay+interval,即該命令的讓從延遲主75s。

還有一些具體的參數請見:http://www.percona.com/doc/percona-toolkit/2.2/pt-slave-delay.html

背景:

主: root@localhost : aaa 02:37:21>select * from test; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+ 3 rows in set (0.00 sec)從:root@192.168.200.25 : aaa 03:11:44>select * from test; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+ 3 rows in set (0.00 sec)root@192.168.200.25 : aaa 03:12:05>show slave status\G; *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.200.25Master_User: repMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000003Read_Master_Log_Pos: 1919Relay_Log_File: zhoujy-relay-bin.000131Relay_Log_Pos: 1636Relay_Master_Log_File: mysql-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: aaaReplicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 1919Relay_Log_Space: 1951Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1Master_UUID: Master_Info_File: /opt/mysql/mysql5.6/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update itMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 View Code

執行:

session1:命令

zhoujy@zhoujy:~$ pt-slave-delay --delay=1m --interval=15s --run-time=10m --ask-pass u=root,h=192.168.200.25,P=3307 Enter password for 192.168.200.25: 2013-10-23T15:16:40 slave running 0 seconds behind 2013-10-23T15:16:40 STOP SLAVE until 2013-10-23T15:17:40 at master position mysql-bin.000003/1919 2013-10-23T15:16:55 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:10 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:25 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:40 no new binlog events

session2:主

root@localhost : aaa 03:17:34>insert into test(name) values('d'),('e'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0root@localhost : aaa 03:17:44>select * from test; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | | 5 | e | +----+------+ 5 rows in set (0.00 sec)

session3:從

root@192.168.200.25 : aaa 03:17:31>select * from test; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+ 3 rows in set (0.00 sec)

從session3里面看到,數據還沒有同步過來,因為在session2里插入了數據,繼續看session1的輸出日志:

zhoujy@zhoujy:~$ pt-slave-delay --delay=1m --interval=15s --run-time=10m --ask-pass u=root,h=192.168.200.25,P=3307 Enter password for 192.168.200.25: 2013-10-23T15:16:40 slave running 0 seconds behind 2013-10-23T15:16:40 STOP SLAVE until 2013-10-23T15:17:40 at master position mysql-bin.000003/1919 2013-10-23T15:16:55 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:10 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:25 slave stopped at master position mysql-bin.000003/1919 2013-10-23T15:17:40 no new binlog events 2013-10-23T15:17:55 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:18:10 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:18:25 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:18:40 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:18:55 START SLAVE until master 2013-10-23T15:17:55 mysql-bin.000003/2142 2013-10-23T15:19:10 slave running 0 seconds behind

在日志里面看到了,在15:17:55的時候檢測到了新的事件,在15:18:55的時候進行了同步,數據差不多在15:17:40寫進去的,時間點剛好一致。15s后檢測到了,1m后同步到從。

繼續看從上的數據:

root@192.168.200.25 : aaa 03:18:57>select * from test; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | | 5 | e | +----+------+ 5 rows in set (0.00 sec)

最后命令運行了10m后,自動結束:

2013-10-23T15:25:40 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:25:55 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:26:10 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:26:25 no new binlog events 2013-10-23T15:26:40 slave stopped at master position mysql-bin.000003/2142 2013-10-23T15:26:40 Setting slave to run normally

原理:

這個過程的實現:

pt-slave-delay –delay=10m 開始運行

(a)連接到從服務器
檢測從服務器落后主服務器多少秒$behind,并輸出。
然后記錄當前時間,以及Slave_IO_Thread獲取到的master_log_file與read_master_log_pos做為一個對象,保存到某數組@positions中。

情況一:
如果從服務器的Slave_SQL_Thread正在運行,并且$behind小于10分鐘, STOP SLAVE SQL_THREAD,并計算出多長時間之后(now()-$behind+10分鐘),
才需要再次START SLAVE。再次START的時間點稱為$next_start。等待一分鐘,再goto(a)

情況二:
如果從服務器的Slave_SQL_Thread正在運行,并且$behind超出10分鐘, 那就什么也不做。

情況三:
如果從服務器的Slave_SQL_Thread已經被STOP了,并且當前時間沒有達到$next_start, 那就等待一分鐘,再goto(a)

情況四:
如果從服務器的Slave_SQL_Thread已經被STOP了,并且當前時間達到$next_start,說明從服務器已經休息夠了,
就從數組@positions中挑選一個合適的對象出來,此對象記錄的時間要比較接近當前時間的10分鐘之前。
然后START SLAVE SQL_THREAD UNTIL 此對象的master_log_file與read_master_log_pos。等待一分鐘,goto(a)

總結:

通過上面的方法很好的解決了主的誤操作影響到從,前提是從允許延遲一定的時間。那如何解決呢?當在主上執行了誤操作之后,回到從上

執行:

slave stop;

再執行:

MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos? Pos通過mysqlbinlog查看二進制日志獲得。

這樣就跳過了錯誤,最后通過切換主從或則把從的表覆蓋到主上(需要關閉應用)讓主的誤操作的數據恢復,和通過binlog和備份比大大減少了恢復時間。

在5.6里面已經包含了延遲這個功能:

CHANGE MASTER TO MASTER_DELAY = N ...;

?

轉載于:https://www.cnblogs.com/zhoujinyi/p/3384283.html

總結

以上是生活随笔為你收集整理的percona-toolkit 之 【pt-slave-delay】说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美日韩二区 | 国产日韩欧美视频在线观看 | 青青草91| 黄色片久久 | 中文亚洲av片在线观看 | 国产亚洲精品成人无码精品网站 | 国产 丝袜 欧美中文 另类 | 黄页网站免费在线观看 | www日本xxx| 亚洲第一黄色 | 国产国语性生话播放 | 欧美少妇15p | 欧美日韩国产在线一区 | 91成人精品一区在线播放 | 亚洲国产综合av | 亚洲国产av一区 | 亚洲国产综合网 | 国产视频中文字幕 | av黄色在线播放 | 亚洲欧美国产高清 | 天天色亚洲 | 国产精品6666 | 日本精品在线播放 | 国产主播中文字幕 | 中文字幕视频在线 | 天天干天天操天天干 | 亚洲狼人综合 | 外国av在线 | 中文字幕88页 | 日本一区二区三区视频免费看 | 亚洲综合情 | 香蕉视频成人在线 | 国产精品久久久久久久久久直播 | 波多野结衣高清在线 | 日日操夜夜 | 国产精品免费一区二区三区在线观看 | 天天综合久久综合 | 粉嫩av在线播放 | 农村少妇无套内谢粗又长 | 国产精品久久久久野外 | 黄色免费一级 | 懂色av一区二区在线播放 | 少妇高潮一区二区三区69 | 国产按摩一区二区三区 | 国语粗话呻吟对白对白 | 国产成人精品av在线观 | 久久99精品国产.久久久久久 | 偷偷操不一样的99 | 欧美日韩视频在线播放 | 97色干| 青青青国产精品一区二区 | 黄色精品免费 | 伊伊综合网 | 国产精品免费无码 | 夜夜嗨老熟女av一区二区三区 | 青青射| 亚洲成av人片在线观看无码 | 日日爱夜夜爱 | 日本囗交做爰视频 | 精品丰满少妇一区二区三区 | 手机av在线播放 | 亚洲婷婷丁香 | 青青青青青草 | 免费一级特黄 | 香蕉久久久久久 | 成人无码一区二区三区 | 91福利在线视频 | 熟妇大屁股一区二区三区视频 | 三上悠亚一区二区 | av尤物在线| 成人一级片视频 | 女人张开双腿让男人捅 | 欧美日本激情 | 久久一区二区精品 | 国产午夜成人久久无码一区二区 | 国产一区精品视频 | 国产成人欧美 | 日本成人在线免费 | 丝袜毛片| 天天影视插插插 | 在线视频观看一区二区 | 精品国模| 黄色大片国产 | 色哟哟网站在线观看 | 五月天婷婷色 | 女生被男生c| 国产在线美女 | 国产精品久久久久影院老司 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 欧美黑人疯狂性受xxxxx野外 | 精品欧美一区二区三区久久久 | 91jk制服白丝超短裙大长腿 | 好吊视频一区 | 蜜臀久久 | 网址在线观看你懂的 | 黄色亚洲网站 | 91麻豆精品国产理伦片在线观看 | 韩国一区二区视频 | 精品亚洲一区二区三区四区五区高 |