亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

percona-toolkit對MySQL的復制和監控類操作教程

2024-07-24 13:08:13
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了使用percona-toolkit對MySQL進行復制和監控類操作的教程,percona-toolkit是一款強大的MySQL輔助軟件,需要的朋友可以參考下

復制類工具 1. pt-heartbeat

功能介紹:

監控mysql復制延遲

用法介紹:

pt-heartbeat [OPTION...] [DSN] --update|--monitor|--check|--stop

測量復制落后主mysql或者主PostgreSQL多少時間,你可以使用這個腳本去更新主或者監控復制,具體用法見后面的示例.

原理:pt-heartbeat通過真實的復制數據來確認mysql和postgresql復制延遲,這個避免了對復制機制的依賴,從而能得出準確的落后復制時間,包含兩部分:第一部分在主上pt-heartbeat的--update線程會在指定的時間間隔更新一個時間戳,第二部分是pt-heartbeat的--monitor線程或者--check線程連接到從上檢查復制的心跳記錄(前面更新的時間戳),并和當前系統時間進行比較,得出時間的差異。

你可以手工創建heartbeat表或者添加--create-table參數,推薦使用MEMORY引擎。表結構為:

 

 
  1. CREATE TABLE heartbeat ( 
  2. ts varchar(26) NOT NULL, 
  3. server_id int unsigned NOT NULL PRIMARY KEY, 
  4. file varchar(255) DEFAULT NULL, -- SHOW MASTER STATUS 
  5. position bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS 
  6. relay_master_log_file varchar(255) DEFAULT NULL, -- SHOW SLAVE STATUS 
  7. exec_master_log_pos bigint unsigned DEFAULT NULL -- SHOW SLAVE STATUS 
  8. ); 

使用示例:

范例1:創建一個后臺進程定期更新主上的test庫的heartbeat表()默認是1s,可以--interval指定,執行后會成一個heartbeat表,test庫為我監控的同步庫:

 

 
  1. pt-heartbeat -D test --update --user=root --password=zhang@123 -h192.168.3.135 --create-table –daemonize 

范例2:監控復制在slave上的落后程度(會一直監控):

 

 
  1. pt-heartbeat -D test --monitor --user=root --password=zhang@123 -h192.168.3.92 

監控結果如下:

 

  1. 0.00s [ 0.00s, 0.00s, 0.00s ] 
  2. 0.00s [ 0.00s, 0.00s, 0.00s ] 
  3. 0.00s [ 0.00s, 0.00s, 0.00s ] 
  4. 0.00s [ 0.00s, 0.00s, 0.00s ] 
  5. 0.00s [ 0.00s, 0.00s, 0.00s ] 
  6. 0.00s [ 0.00s, 0.00s, 0.00s ] 

范例3:監控復制在slave上的落后程度(監控一次退出):

 

 
  1. pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92 

范例4:監控PostgreSQL需要添加--dbi-driver Pg:

 

 
  1. pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92 --dbi-driver Pg 

2. pt-slave-delay

功能介紹:

設置從服務器落后于主服務器指定時間。

用法介紹:

pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]

原理:通過啟動和停止復制sql線程來設置從落后于主指定時間。默認是基于從上relay日志的二進制日志的位置來判斷,因此不需要連接到主服務器,如果IO進程不落后主服務器太多的話,這個檢查方式工作很好,如果網絡通暢的話,一般IO線程落后主通常都是毫秒級別。一般是通過--delay and --delay"+"--interval來控制。--interval是指定檢查是否啟動或者停止從上sql線程的頻繁度,默認的是1分鐘檢查一次。

使用示例:

范例1:使從落后主1分鐘,并每隔1分鐘檢測一次,運行10分鐘

 

 
  1. pt-slave-delay --user=root --password=zhang@123 --delay 1m --run-time 10m --host=192.168.3.92 

如果不加--run-time參數會一直執行。

范例2:使從落后主1分鐘,并每隔15秒鐘檢測一次,運行10分鐘

 

 
  1. pt-slave-delay --user=root --password=zhang@123 --delay 1m --interval 15s --run-time 10m --host=192.168.3.92 

運行結果如下:

 

 
  1. 2012-05-20T16:34:50 slave running 0 seconds behind 
  2. 2012-05-20T16:34:50 STOP SLAVE until 2012-05-20T16:35:50 at master position mysql-bin.000032/4392054 
  3. 2012-05-20T16:35:05 slave stopped at master position mysql-bin.000032/4397124 
  4. 2012-05-20T16:35:20 slave stopped at master position mysql-bin.000032/4402194 
  5. 2012-05-20T16:35:35 slave stopped at master position mysql-bin.000032/4407264 
  6. 2012-05-20T16:35:50 no new binlog events 
  7. 2012-05-20T16:36:05 START SLAVE until master 2012-05-20T16:35:05 mysql-bin.000032/4397124 

3. pt-slave-find

功能介紹:

查找和打印mysql所有從服務器復制層級關系

用法介紹:

pt-slave-find [OPTION...] MASTER-HOST

原理:連接mysql主服務器并查找其所有的從,然后打印出所有從服務器的層級關系。

使用示例:

范例1:查找主服務器為192.168.3.135的mysql有所有從的層級關系:

 

 
  1. pt-slave-find --user=root --password=zhang@123 --host=192.168.3.135 

4. pt-slave-restart

功能介紹:

監視mysql復制錯誤,并嘗試重啟mysql復制當復制停止的時候

用法介紹:

pt-slave-restart [OPTION...] [DSN]

監視一個或者多個mysql復制錯誤,當從停止的時候嘗試重新啟動復制。你可以指定跳過的錯誤并運行從到指定的日志位置。

使用示例:

范例1:監視192.168.3.92的從,跳過1個錯誤

 

 
  1. pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --skip-count=1 

范例2:監視192.168.3.92的從,跳過錯誤代碼為1062的錯誤。

 

 
  1. pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --error-numbers=1062 

5. pt-table-checksum

功能介紹:

檢查mysql復制一致性

用法介紹:

pt-table-checksum [OPTION...] [DSN]

工作原理:pt-table-checksum在主上執行檢查語句在線檢查mysql復制的一致性,生成replace語句,然后通過復制傳遞到從,再通過update更新master_src的值。通過檢測從上this_src和master_src的值從而判斷復制是否一致。

注意:使用的時候選擇業務地峰的時候運行,因為運行的時候會造成表的部分記錄鎖定。使用--max-load來指定最大的負載情況,如果達到那個負載這個暫停運行。如果發現有不一致的數據,可以使用pt-table-sync工具來修復。

注意:和1.0版本不同,新版本的pt-table-checksum只需要在master上執行即可。

通過 –explain參數再結合二進制日志就可以看出腳本的工作原理,如我的test庫有一個名字為zhang的表,我們通過抓取二進制日志來查看腳本的原理:

 

 
  1. REPLACE INTO `test`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT 'test''zhang''1', NULL, NULL, NULL, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `id`, `name`, CONCAT(ISNULL(`name`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`zhang` /*checksum table*/
  2. UPDATE `test`.`checksums` SET chunk_time = '0.000563', master_crc = '31012777', master_cnt = '4' WHERE db = 'test' AND tbl = 'zhang' AND chunk = '1' 

從這里可以很明顯的看出原理了,前面已經說了,這里就不贅述了。

使用示例:

范例1:比較test數據庫同步是否一致,結果顯示所有的表。

 

 
  1. pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --create-replicate-table --host=192.168.3.135 --port 3306 -uroot -pzhang@123 

參數說明:第一次運行的時候需要添加--create-replicate-table參數,如果不加這個就需要手工運行添加表結構的SQL,表結構SQL如下:

 

 
  1. CREATE TABLE checksums ( 
  2. db char(64) NOT NULL, 
  3. tbl char(64) NOT NULL, 
  4. chunk int NOT NULL, 
  5. chunk_time float NULL, 
  6. chunk_index varchar(200) NULL, 
  7. lower_boundary text NULL, 
  8. upper_boundary text NULL, 
  9. this_crc char(40) NOT NULL, 
  10. this_cnt int NOT NULL, 
  11. master_crc char(40) NULL, 
  12. master_cnt int NULL, 
  13. ts timestamp NOT NULL, 
  14. PRIMARY KEY (db, tbl, chunk), 
  15. INDEX ts_db_tbl (ts, db, tbl) 
  16. ) ENGINE=InnoDB; 

之所以使用--nocheck-replication-filters參數是因為我的my.cnf配置了replicate-ignore-db和replicate-wild-do-table等參數。另外需要特別注意執行的checksums所在的數據庫必須是同步的數據庫。我剛開始使用的時候摸索的很久,官網也沒有范例。呵呵!

結果如下:

 

 
  1. TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE 
  2. 05-23T16:19:29 0 1 2 1 0 0.006 test.aaa 
  3. 05-23T16:19:29 0 0 1 1 0 0.017 test.bbb 
  4. 05-23T16:19:29 0 0 0 1 0 0.007 test.category_part 
  5. 05-23T16:19:31 0 0 233617 6 0 1.887 test.collect_data 
  6. 05-23T16:19:34 0 0 250346 5 0 2.709 test.effective_user 
  7. 05-23T16:19:34 0 1 1 1 0 0.008 test.heartbeat 
  8. 05-23T16:19:39 0 0 1000000 11 0 5.353 test.oss_pvinfo2 

從結果中,我們可以看到test.aaa和test.heartbeat表的DIFFS不為0,那么就是這兩個表不同步了。

范例2:比較test數據庫同步是否一致,結果只顯示數據不一致的表(添加--replicate-check-only參數即可,這個值查看checksums數據不會重新對表進行比較,因此需要先運行上面的比較語句之后再運行這個語句,否則顯示不了最新的變化。)。

 

 
  1. pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --replicate-check-only --lock-wait-timeout=120 --host=192.168.3.135 --port 3306 --user=root --password=zhang@123 

結果如下:

 

 
  1. Differences on localhost.localdomain 
  2. TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY 
  3. test.aaa 1 1 1  
  4. test.heartbeat 1 0 1 

從結果可以看出,只顯示了兩個不同步的表。

6. pt-table-sync

功能介紹:

高效同步mysql表的數據

用法介紹:

pt-table-sync [OPTION...] DSN [DSN...]

原理:總是在主上執行數據的更改,再同步到從上,不會直接更改成從的數據,在主上執行更改是基于主上現在的數據,不會更改主上的數據。注意使用之前先備份你的數據,避免造成數據的丟失.執行execute之前最好先換成--print或--dry-run查看一下會變更哪些數據。

使用示例:

范例1:同步3.135的test庫的aaa表到192.168.3.92,在執行之前可以用--execute參數換成--print來查看會變更什么東西,后面那個主機必須是master,否則會報錯推出。

 

 
  1. pt-table-sync --execute --user=root --password=zhang@123 h=192.168.3.135,D=test,t=aaa h=192.168.3.92 

范例2:將主的test數據庫同步到192.168.3.92,使從上具有一樣的數據。

 

 
  1. pt-table-sync --execute --sync-to-master --user=root --password=zhang@123 h=192.168.3.92 --database test 

范例3:只同步指定的表

 

  1. pt-table-sync --execute --sync-to-master --user=root --password=zhang@123 h=192.168.3.92,D=test,t=aaa 

范例4:根據pt-table-checksum的結果進行數據同步

 

  1. pt-table-sync --execute --replicate test.checksums --user=root --password=zhang@123 h=192.168.3.135  

范例5:根據pt-table-checksum使從的數據和主的數據一致

 

 
  1. pt-table-sync --execute --replicate test.checksums --user=root --password=zhang@123 --sync-to-master h=192.168.3.92,D=test,t=aaa 

監控類工具 1. pt-deadlock-logger

功能介紹:

提取和記錄mysql死鎖的相關信息

用法介紹:

pt-deadlock-logger [OPTION...] SOURCE_DSN

收集和保存mysql上最近的死鎖信息,可以直接打印死鎖信息和存儲死鎖信息到數據庫中,死鎖信息包括發生死鎖的服務器、最近發生死鎖的時間、死鎖線程id、死鎖的事務id、發生死鎖時事務執行了多長時間等等非常多的信息。詳情見下面的示例。

使用示例:

范例1:打印本地mysql的死鎖信息

 

 
  1. pt-deadlock-logger --user=root --password=zhang@123 h=localhost –print 

范例2:將本地的mysql死鎖信息記錄到數據庫的表中,也打印出來

 

 
  1. pt-deadlock-logger --user=root --password=zhang@123 h=localhost --print D=test,t=deadlocks 

2. pt-fk-error-logger

功能介紹:

提取和記錄mysql外鍵錯誤信息

用法介紹:

pt-fk-error-logger [OPTION...] SOURCE_DSN

通過SHOW INNODB STATUS提取和保存mysql數據庫最近發生的外鍵錯誤信息??梢酝ㄟ^參數控制直接打印錯誤信息或者將錯誤信息存儲到數據庫的表中。

使用示例:

我在服務器上運行的時候一直報如下錯誤:

 

 
  1. Use of uninitialized value in concatenation (.) or string at /usr/bin/pt-fk-error-logger line 2045 

我懷疑是這個程序有問題,回頭換一個版本試一下或者調試一下那個程序。

3. pt-mext

功能介紹:

并行查看SHOW GLOBAL STATUS的多個樣本的信息。

用法介紹:

pt-mext [OPTIONS] -- COMMAND

原理:pt-mext執行你指定的COMMAND,并每次讀取一行結果,把空行分割的內容保存到一個一個的臨時文件中,最后結合這些臨時文件并行查看結果。

使用示例:

范例1:每隔10s執行一次SHOW GLOBAL STATUS,并將結果合并到一起查看

 

 
  1. pt-mext -- mysqladmin ext -uroot -pzhang@123 -i10 -c3 

4. pt-query-digest

功能介紹:

分析查詢執行日志,并產生一個查詢報告,為MySQL、PostgreSQL、 memcached過濾、重放或者轉換語句。

用法介紹:

pt-query-digest [OPTION...] [FILE]

解析和分析mysql日志文件

使用示例:

范例1:分析本地的慢查詢文件

 

 
  1. pt-query-digest --user=root --password=zhang@123 /data/dbdata/localhost-slow.log 

范例2:重新回顧滿查詢日志,并將結果保存到query_review中,注意query_review表的表結構必須先建好,表結構如下:

 

 
  1. CREATE TABLE query_review ( 
  2. checksum BIGINT UNSIGNED NOT NULL PRIMARY KEY, 
  3. fingerprint TEXT NOT NULL, 
  4. sample TEXT NOT NULL, 
  5. first_seen DATETIME, 
  6. last_seen DATETIME, 
  7. reviewed_by VARCHAR(20), 
  8. reviewed_on DATETIME, 
  9. comments TEXT 
  10. ); 

命令如下:

 

 
  1. pt-query-digest --user=root --password=zhang@123 --review h=localhost,D=test,t=query_review /data/dbdata/localhost-slow.log 

5. pt-trend

功能介紹:

居于一組時間序列的數據點做統計。

用法介紹:

pt-trend [OPTION...] [FILE ...]

讀取一個慢查詢日志,并輸出統計信息。也可以指定多個文件。如果不指定文件的話直接從標準輸入中讀取信息。

使用示例:

范例1:讀取本地慢查詢日志并輸出統計信息

 

 
  1. pt-trend /data/dbdata/localhost-slow.log 


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区天堂av| 中文字幕视频一区二区在线有码| 国产成人午夜视频网址| 51午夜精品视频| 欧美美最猛性xxxxxx| 色久欧美在线视频观看| 国产精品电影观看| 欧美日韩国产一区在线| 91亚洲精品一区二区| 91香蕉嫩草神马影院在线观看| 亚洲福利视频网| 国产精品主播视频| 亚洲国内精品视频| 中文字幕不卡在线视频极品| 日韩在线中文字| 欧美一级片一区| 亚洲欧美综合区自拍另类| 国产一区二区黑人欧美xxxx| 国产精品免费久久久久久| 亚洲国产精品高清久久久| 精品视频在线播放| 国产美女久久精品香蕉69| 久久综合亚洲社区| 精品色蜜蜜精品视频在线观看| 久久综合亚洲社区| 国产精品夫妻激情| 97超级碰碰碰久久久| 国产色婷婷国产综合在线理论片a| 国产精品视频白浆免费视频| 91在线播放国产| 日韩av在线免费观看| 国产在线视频2019最新视频| 疯狂蹂躏欧美一区二区精品| 国产精品亚洲第一区| 亚洲第一区中文99精品| 国产精品亚洲欧美导航| 亚洲精品免费一区二区三区| 国产日韩欧美夫妻视频在线观看| 久久久国产一区二区| 91精品国产高清久久久久久| 欧美精品在线极品| 成人黄色在线播放| 久久综合免费视频影院| 欧美亚洲视频在线看网址| 成人亚洲综合色就1024| 亚洲va男人天堂| 国产日韩欧美在线看| 亚洲一区二区三区视频播放| 欧美精品久久久久久久免费观看| 欧美电影第一页| 久久久久久久一区二区三区| 亚洲自拍另类欧美丝袜| 97在线精品视频| 久久91亚洲人成电影网站| 欧美猛交ⅹxxx乱大交视频| 久久国产精品免费视频| 亚洲第一级黄色片| 国产精品久久久久久网站| 自拍视频国产精品| 精品国产一区二区三区在线观看| 亚洲精品女av网站| 成人精品视频在线| 日本在线观看天堂男亚洲| 国产精品视频网站| 国产精品久久久久久久久男| 成人免费视频xnxx.com| 欧美日韩免费一区| 57pao国产成人免费| 国产网站欧美日韩免费精品在线观看| 亚洲激情中文字幕| 久久九九有精品国产23| 日韩av电影免费观看高清| 午夜精品一区二区三区在线| 欧美激情女人20p| 久久精品国产一区二区三区| 国产精品久久久久久久午夜| 久久av.com| 欧美日韩国产在线看| 国产97色在线|日韩| 亚洲欧美激情精品一区二区| 久久精品成人欧美大片古装| 久久国产精品久久久| 欧美日韩不卡合集视频| 精品久久久国产| 欧美成人在线网站| 久久97精品久久久久久久不卡| 久久天天躁狠狠躁夜夜爽蜜月| 久久99国产精品自在自在app| 亚州av一区二区| 精品美女永久免费视频| 91九色国产社区在线观看| 亚洲风情亚aⅴ在线发布| 欧美综合国产精品久久丁香| 久久人91精品久久久久久不卡| 久久天堂av综合合色| 久久久久久久一区二区| 欧美激情区在线播放| 亚洲精品久久久久久久久| 欧美日韩在线视频观看| 中文字幕久久亚洲| 国产成人一区二| 欧美韩日一区二区| 亚洲一品av免费观看| 国产婷婷97碰碰久久人人蜜臀| 综合国产在线视频| 久久夜色撩人精品| 国产欧美久久一区二区| 美女视频久久黄| 欧美日韩成人在线视频| 日韩欧美大尺度| 日韩亚洲成人av在线| 日韩亚洲欧美中文在线| 欧美孕妇毛茸茸xxxx| 色av中文字幕一区| 欧美黑人xxx| 国产精品情侣自拍| 4438全国亚洲精品在线观看视频| 日韩在线免费视频| 国产精品白嫩美女在线观看| 国产精品直播网红| 91精品国产九九九久久久亚洲| 视频在线观看一区二区| 精品久久香蕉国产线看观看亚洲| 一区二区欧美久久| 国产精品视频播放| 欧美电影《睫毛膏》| 91亚洲精品久久久| 性欧美办公室18xxxxhd| 欧美大片在线影院| 国产精品久久久久av| 国产丝袜精品第一页| 国产精品美女免费视频| 日韩精品免费在线播放| 日韩成人在线视频| 国产精品久久久久久久电影| 91国内产香蕉| 中文字幕精品视频| 69影院欧美专区视频| 日韩欧美国产中文字幕| 欧美日韩美女在线观看| 91久久久亚洲精品| 日韩av在线免费观看一区| 欧美性xxxx18| 亚洲国产成人一区| 国产日韩欧美综合| 九九久久久久久久久激情| 91精品在线一区| 欧美极品欧美精品欧美视频| 欧美精品情趣视频| 欧美成人精品不卡视频在线观看| 最近2019免费中文字幕视频三| 在线精品国产成人综合| 精品亚洲一区二区三区四区五区| 亚洲自拍偷拍视频| 亚洲国产精品专区久久| 久久91超碰青草是什么| 欧美国产视频日韩| 亚洲大胆人体在线| 欧亚精品中文字幕| 欧美最猛性xxxx| 久久久av免费| 久久综合久久美利坚合众国| 中文字幕日韩在线观看| 国产精品一区二区女厕厕|