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

溫馨提示×

溫馨提示×

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

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

如何使用pt工具校驗修復主從

發布時間:2021-11-02 17:24:40 來源:億速云 閱讀:258 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“如何使用pt工具校驗修復主從”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用pt工具校驗修復主從”這篇文章吧。

使用pt工具校驗主從一致性并修復

【原理說明】  

     pt-table-checksum 是 Percona-Toolkit 的組件之一,用于檢測MySQL主、從庫的數據是否一致。其原理是在主庫執行基于statement的sql語句來生成主庫數據塊的checksum,把相同的sql語句傳遞到從庫執行,并在從庫上計算相同數據塊的checksum,最后,比較主從庫上相同數據塊的checksum值,由此判斷主從數據是否一致。檢測過程根據唯一索引將表按row切分為塊(chunk),以為單位計算,可以避免鎖表。檢測時會自動判斷復制延遲、 master的負載, 超過閥值后會自動將檢測暫停,減小對線上服務的影響。
    pt-table-checksum 默認情況下可以應對絕大部分場景,官方說,即使上千個庫、上萬億的行,它依然可以很好的工作,這源自于設計很簡單,一次檢查一個表,不需要太多的內存和多余的操作;必要時,pt-table-checksum 會根據服務器負載動態改變 chunk 大小,減少從庫的延遲。
    為了減少對數據庫的干預,pt-table-checksum還會自動偵測并連接到從庫,當然如果失敗,可以指定--recursion-method選項來告訴從庫在哪里。它的易用性還體現在,復制若有延遲,在從庫 checksum 會暫停直到趕上主庫的計算時間點(也通過選項--設定一個可容忍的延遲最大值,超過這個值也認為不一致)。
    為了保證主數據庫服務的安全,該工具實現了許多保護措施:

    1)自動設置 innodb_lock_wait_timeout 為1s,避免引起鎖

    2)默認當數據庫有25個以上的并發查詢時,pt-table-checksum會暫停。可以設置 --max-load 選項來設置這個閥值
    3)當用     Ctrl+C 停止任務后,工具會正常的完成當前 chunk 檢測,下次使用 --resume 選項啟動可以恢復繼續下一個     chunk

【工作過程】

1. 連接到主庫:pt工具連接到主庫,然后自動發現主庫的所有從庫。默認采用show slave hosts來查找從庫,但是這只有在主從實例端口相同的情況下才有效。

2. 查找主庫或者從庫是否有復制過濾規則:這是為了安全而默認檢查的選項。你可以關閉這個檢查,但是這可能導致checksum的sql語句要么不會同步到從庫,要么到了從庫發現從庫沒有要被checksum的表,這都會導致從庫同步卡庫。

3. 開始獲取表,一個個的計算。

4. 如果是表的第一個chunk,那么chunk-size一般為1000;如果不是表的第一個chunk,那么采用12步中分析出的結果。

5. 檢查表結構,進行數據類型轉換等,生成checksum的sql語句。

6. 根據表上的索引和數據的分布,選擇最合適的split表的方法。

7. 開始checksum表。

8. 默認在chunk一個表之前,先刪除上次這個表相關的計算結果。除非–resume。

9. 根據explain的結果,判斷chunk的size是否超過了你定義的chunk-size的上限。如果超過了,為了不影響線上性能,這個chunk將被忽略。

10. 把要checksum的行加上for update鎖,并計算。

11. 把計算結果存儲到master_crc master_count列中。

12. 調整下一個chunk的大小。

13. 等待從庫追上主庫。如果沒有延遲備份的從庫在運行,最好檢查所有的從庫,如果發現延遲最大的從庫延遲超過max-lag秒,pt工具在這里將暫停。

14. 如果發現主庫的max-load超過某個閾值,pt工具在這里將暫停。

15. 繼續下一個chunk,直到這個table被chunk完畢。

16. 等待從庫執行完checksum,便于生成匯總的統計結果。每個表匯總并統計一次。

17. 循環每個表,直到結束。


【校驗腳本】


pt工具如果使用不當,會影響業務正常使用,甚至出現死鎖情況,下面結合生產經驗,使用如下參數進行校驗

  • TS :完成檢查的時間戳。

  • ERRORS     :檢查時候發生錯誤和警告的數量。

  • DIFFS :不一致的chunk數量。當指定 --no-replicate-check 即檢查完但不立即輸出結果時,會一直為0;當指定 --replicate-check-only 即不檢查只從checksums表中計算crc32,且只顯示不一致的信息(畢竟輸出的大部分應該是一致的,容易造成干擾)。

  • ROWS :比對的表行數。

  • CHUNKS :被劃分到表中的塊的數目。

  • SKIPPED     :由于錯誤或警告或過大,則跳過塊的數目。

  • TIME :執行的時間。

  • TABLE :被檢查的表名

【修復腳本】

點擊(此處)折疊或打開

  1. user=""

  2. password=""

  3. charset="utf8mb4"

  4. replicate="pt.checksum"

  5. chunk_size="1500"

  6. pid="/data/script/mysql/pt-table-sync.pid"

  7. sync_to_master="h=10.9.129.33,P=3306"

  8. tables="kuaikan.device_push_info"


  9. /usr/bin/pt-table-sync  \

  10. --user=${user} \

  11. --password=${password} \

  12. --pid=${pid}  \

  13. --bin-log \

  14. --tables="${tables}" \

  15. --buffer-in-mysql  \

  16. --no-buffer-to-client \

  17. --charset=${charset} \

  18. --no-check-child-tables \

  19. --no-foreign-key-checks  \

  20. --check-master \

  21. --replicate=${replicate} \

  22. --sync-to-master  ${sync_to_master} \

  23. --check-slave \

  24. --check-triggers \

  25. --chunk-size=${chunk_size} \

  26. --print \

  27. --transaction \

  28. --verbose

【修復腳本參數說明】


1)print只是打印需要執行的命令,確認無誤后把參數—print改成—execute
2)sync_to_master此處填寫從庫的地址,只需要填寫從庫地址,會自動從從庫show slave status獲取主庫的信息,不需要再寫主庫的地址,寫了從庫地址后,會根據從庫差異對這個從庫進行更改,無論如何都是在master端執行。并不會對其他從庫的差異進行修復。
3)no-buffer-to-client如果禁用該選項的話,MySQL會一次性發送所有的rows,針對大表
4)lock參數如果 使用—replicate 或者 –sync-to-master 參數時,slave端 是不會鎖表的。鎖表的時候使用的是 lock tables ,但是如果使用 --transaction 的話,就是在事務開始到提交這一段,開始鎖表

以上是“如何使用pt工具校驗修復主從”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

pt
AI

专栏| 清流县| 马山县| 光山县| 绿春县| 介休市| 右玉县| 郸城县| 德州市| 上栗县| 徐州市| 额尔古纳市| 赤壁市| 晋江市| 邯郸市| 石林| 山丹县| 古浪县| 潢川县| 车致| 建瓯市| 巴马| 尚志市| 加查县| 白山市| 石首市| 旺苍县| 牙克石市| 汶上县| 怀化市| 洛南县| 武义县| 奉新县| 虞城县| 陇川县| 外汇| 新源县| 仙游县| 潢川县| 普兰店市| 谷城县|