pt-table-checksum 到底會不會影響MySQL業務性能-愛可生

2021-01-07 愛可生雲資料庫

問題

用 pt-table-checksum 時,會不會影響業務性能?

實驗

實驗開始前,給大家分享一個小經驗:任何性能評估,不要相信別人的評測結果,要在自己的環境上測試,並(大概)知曉原理。

我們先建一對主從:

然後用 mysqlslap一個持續的壓力:

開另外一個會話,將 master 上的 general log 打開:

然後通過 pt-table-checksum 進行一次比較:

查看 master 的 general log,由於 mysqlslap 的影響,general log 中有很多內容,我們找到與 pt-table-checksum 相關的線程:

將該線程的操作單獨列出來:

操作比較多,我們一點一點來說明:

這裡工具調小了 innodb 鎖等待時間。使得之後的操作,只要在 innodb 上稍微等待,就會馬上放棄操作,對業務影響很小。

另外工具調小了 wait_timeout 時間,倒是沒有特別的作用。

工具將隔離級別調整為了 RR 級別,事務的維護代價會比 RC 要高,不過後面我們會看到工具使用的每個事務都很小,加上之前提到 innodb 鎖等待時間調到很小,對線上業務產生的成本比較小。

RR 級別是數據對比的基本要求。

工具通過一系列操作,了解表的概況。工具是一個數據塊一個數據塊進行校驗,這裡獲取了第一個數據塊的下邊界。

接下來工具獲取了下一個數據塊的下邊界,每個 SQL都會 EXPLAIN,看一下執行成本,非常小心翼翼。

之後工具獲取了一個數據塊的 checksum,這個數據塊不大,如果跟業務流量有衝突,會馬上出發 innodb 的鎖超時,立刻退讓。

以上是 pt-table-checksum 的一些設計,可以看到這幾處都是精心維護了業務流量不受影響。

工具還設計了其他的一些機制保障業務流量,比如參數 --max-load 和 --pause-file 等,還有精心設計的數據塊劃分方法,索引選擇方法等。大家根據自己的情況配合使用即可達到很好的效果。

總結

本期我們介紹了簡單分析 pt-table-checksum 是否會影響業務流量,坊間會流傳工具的各種參數建議或者不建議使用,算命的情況比較多,大家都可以用簡單的實驗來分析其中機制。

還是那個觀點,性能測試不能相信道聽途說,得通過實驗去分析。

關於愛可生

愛可生成立於2003年,依託於融合、開放、創新的數據處理技術和服務能力,為大型行業用戶的特定場景提供深度挖掘數據價值的解決方案。

公司持續積累的核心關鍵技術,覆蓋到分布式資料庫集群、雲數據平臺、資料庫大體量運管平臺、海量數據集成於存儲、清洗與治理、人工智慧分析挖掘、可視化展現、安全與隱私保護等多個領域。

公司已與多個行業內的專業公司建立了長期夥伴關係,不斷促進新技術與行業知識相結合,為用戶尋求新的數據驅動的價值增長點。公司已在金融、能源電力、廣電、政府等行業取得了眾多大型用戶典型成功案例,獲得了市場的認可和業務的持續增長。

相關焦點

  • MySQL 數據校驗工具-愛可生
    個表,不需要太多的內存和多餘的操作;必要時,pt-table-checksum 會根據伺服器負載動態改變 chunk 大小,減少從庫的延遲。  為了減少對資料庫的幹預,pt-table-checksum 還會?動偵測並連接到從庫,當然如果失敗,可以指定 --recursion-method 選項來告訴從庫在哪裡。
  • 驗證MySQL主從一致性(pt-table-checksum&pt-table-sync)
    insert into test values(5,'e');在Master主庫執行pt-table-checksum命令。它會使用concat_ws函數將數據合併為一行,然後使用crc32函數生成校驗碼,最後將其插入percona庫的checksums表中。
  • [MySQL FAQ]系列 — pt-table-checksum工具使用報錯一例
    圖片來自Percona官網今天同事在用 percona toolkit 工具中的 pt-table-checksum 對主從資料庫進行校驗,提交命令後,一直提示下面的信息:Pausing because Threads_running=0看字面意思是在提示當前活躍線程數為0,但為什麼不繼續執行呢。
  • pt-table-checksum原理
    今天主要介紹的是pt-table-checksum的原理,相信使用過主從的同學對pt-table-checksum工具都不會陌生,可以說pt-table-checksum是主從校驗使用最廣泛的工具,幫助DBA同學完成主從數據的一致性校驗。
  • MySQL 優化案例 - select count-愛可生
    mysql> select * from sys.innodb_buffer_stats_by_table where object_schema = 'test';Empty set (1.92 sec)mysql> select count(*) from test.sbtest1;++| count(*) |++| 5188434 |++1 row in set
  • MySQL - percona-toolkit工具
    ,並給出建議,有bug 已廢棄pt-show-grants 規範化和列印權限 pt-upgrade 在多個伺服器上執行查詢,並比較不同 性能類pt-index-usage:分析日誌中索引使用情況,並出報告 pt-pmp:為查詢結果跟蹤,並匯總跟蹤結果 pt-visual-explain:格式化執行計劃
  • 使用pt工具檢測MySQL主從延遲(r12筆記第7天)
    # ps -ef|grep heartbeatroot     19920     1  0 22:35 ?        00:00:00:00 perl /usr/local/bin/pt-heartbeat h=10.127.128.99,u=pt_checksum,p=pt_checksum,P=3306 -D test --create-table --interval=1 --update --replace --daemonize   接下來的就是重點工作了,我們可以開啟monitor選項來監控主從延遲的情況,有一點需要提一下
  • 為什麼這次 MySQL 崩潰恢復要這麼久-愛可生
    作者:xuty本文來源:原創投稿 *愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。非常疑惑這段時間 MySQL 到底做了什麼事情?居然需要這麼長時間。雖說這裡虛擬機地 IOPS 並不是很高,但也絕對不需要這麼久吧?而且從日誌輸出來看,這塊應該也不是在做真正地數據恢復,那麼也可以排除是大事務回滾導致的耗時長,那麼原因到底是啥呢?
  • MySQL 大量 Opening tables 案例分析-愛可生
    值得懷疑的是,這臺 MySQL 伺服器的磁碟寫入性能很差,會不會是因為磁碟寫入太差導致這個現象?  (ha_innodb.cc:6250),ha_innobase::open(ha_innodb.cc:5888),handler::ha_open(handler.cc:2759),open_table_from_share(table.cc:3353),open_table(sql_base.cc:3559),open_and_process_table(sql_base.cc:5145),open_tables
  • MySQL的Online DDL語句
    如果指定了ALGORITHM選項,但不支持的話,會直接報錯。注意: 在執行 OnlineDDL之前,要在非業務高峰期去執行,並要確認待執行的表上面沒有未提交的事務、鎖等信息。可以通過如下的SQL語句查看是否有事務和鎖等信息。
  • MySQL裡快速找到 binlog 中是否有大事務-愛可生
    我們知道在 GTID 模式下,事務開頭必然會有一個 GTID_event,如圖中紅框標註。 下面附上本期命令的文字版: ~/opt/mysql/5.7.20/bin/mysqlbinlog data/mysql-bin.000001 | grep "GTID$(printf '\t')last_committed" -B 1 \ | grep -E
  • MySQL 表如何計算統計信息-愛可生
    比如對比指定表在系統表 mysql.innodb_index_stats 的數據跟 distinct 查詢的結果,如果相差太大,可以考慮增加這個值。 當 analyze table 變的非常慢時,可能是這個值設置的太大了,此時要考慮減小這個值。
  • 解密TenDB(MySQL) Flashback 實現(二):按記錄回滾實現
    (見下文示例)如果過濾條件行較多時,建議將 過濾度 比較高的列欄位放在第1列,會提高過濾性能。(不要求是主鍵)請勿將可能修改的欄位作為條件,可能導致過濾的結果不對--filter-lines-terminated-by只在--filter-rows指定時有效,指定行分隔符。指定文件時,默認\n,直接命令行輸入時,默認空格。
  • MySQL中InnoDB-Cluster 日常運維掃盲-愛可生
    目前任職於愛可生,為各大運營商及銀行金融企業提供 MySQL 相關技術支持、MySQL 相關課程培訓等工作。 本文來源:原創投稿 *愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本篇是《innodb-cluster 掃盲-安裝篇》的續篇。
  • MySQL性能調優之對系統最大打開文件數限制調整-愛可生
    //mysql 默認的默認是500011. limit_3= open_files_limit ? open_files_limit : 5000;12.13. 所以open_files_limit期待的最低14.
  • MySQL 實戰筆記 第04期:alter table 語句進度評估
    stage/innodb/alter table (log apply table):此階段包括應用程式運行 ALTER TABLE 時生成的並發 DML 日誌。此階段的持續時間取決於 table 更改的程度。如果未在 table 上運行任何並發 DML,則此階段是即時的。
  • 技術分享 | MySQL 閃回工具 MyFlash|mysql|session|query|server...
    作者:陳怡愛可生南分團隊 DBA,負責公司自動化運維平臺維護和處理客戶問題。本文來源:原創投稿*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。
  • MySQL 變量及性能狀態查看知識技巧
    現在大家對MySQL的監控通常有兩種做法,一是連接到mysql資料庫內部,使用show status,show variables,flush status 來查看mysql的各種性能指標;二是直接使用mysqladmin查看其性能指標。
  • 技術分享 | MySQL 閃回工具 MyFlash
    作者:陳怡愛可生南分團隊 DBA,負責公司自動化運維平臺維護和處理客戶問題。本文來源:原創投稿*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。
  • MySQL 性能優化之骨灰級,高階神技 !
    2、優化的需求1) 穩定性和業務可持續性,通常比性能更重要!2) 優化不可避免涉及到變更,變更就有風險!3) 優化使性能變好,維持和變差是等概率事件!4) 切記優化,應該是各部門協同,共同參與的工作,任何單一部門都不能對資料庫進行優化!5) 所以優化工作,是由業務需要驅使的!!!