欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

percona-toolkit對MySQL的復(fù)制和監(jiān)控類操作教程

 更新時間:2015年11月18日 15:48:27   作者:飛鴻無痕  
這篇文章主要介紹了使用percona-toolkit對MySQL進行復(fù)制和監(jiān)控類操作的教程,percona-toolkit是一款強大的MySQL輔助軟件,需要的朋友可以參考下

復(fù)制類工具
1.  pt-heartbeat
功能介紹:
監(jiān)控mysql復(fù)制延遲
用法介紹:
pt-heartbeat [OPTION...] [DSN] --update|--monitor|--check|--stop
測量復(fù)制落后主mysql或者主PostgreSQL多少時間,你可以使用這個腳本去更新主或者監(jiān)控復(fù)制,具體用法見后面的示例.
原理:pt-heartbeat通過真實的復(fù)制數(shù)據(jù)來確認(rèn)mysql和postgresql復(fù)制延遲,這個避免了對復(fù)制機制的依賴,從而能得出準(zhǔn)確的落后復(fù)制時間,包含兩部分:第一部分在主上pt-heartbeat的--update線程會在指定的時間間隔更新一個時間戳,第二部分是pt-heartbeat的--monitor線程或者--check線程連接到從上檢查復(fù)制的心跳記錄(前面更新的時間戳),并和當(dāng)前系統(tǒng)時間進行比較,得出時間的差異。
你可以手工創(chuàng)建heartbeat表或者添加--create-table參數(shù),推薦使用MEMORY引擎。表結(jié)構(gòu)為:

CREATE TABLE heartbeat (
 ts       varchar(26) NOT NULL,
 server_id    int unsigned NOT NULL PRIMARY KEY,
 file       varchar(255) DEFAULT NULL,  -- SHOW MASTER STATUS
 position     bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS
 relay_master_log_file varchar(255) DEFAULT NULL,  -- SHOW SLAVE STATUS
 exec_master_log_pos bigint unsigned DEFAULT NULL -- SHOW SLAVE STATUS
);

 
使用示例:
范例1:創(chuàng)建一個后臺進程定期更新主上的test庫的heartbeat表()默認(rèn)是1s,可以--interval指定,執(zhí)行后會成一個heartbeat表,test庫為我監(jiān)控的同步庫:

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

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

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

監(jiān)控結(jié)果如下:

0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]

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

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

范例4:監(jiān)控PostgreSQL需要添加--dbi-driver Pg:

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

 
2. pt-slave-delay
功能介紹:
設(shè)置從服務(wù)器落后于主服務(wù)器指定時間。
用法介紹:
pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]
原理:通過啟動和停止復(fù)制sql線程來設(shè)置從落后于主指定時間。默認(rèn)是基于從上relay日志的二進制日志的位置來判斷,因此不需要連接到主服務(wù)器,如果IO進程不落后主服務(wù)器太多的話,這個檢查方式工作很好,如果網(wǎng)絡(luò)通暢的話,一般IO線程落后主通常都是毫秒級別。一般是通過--delay and --delay"+"--interval來控制。--interval是指定檢查是否啟動或者停止從上sql線程的頻繁度,默認(rèn)的是1分鐘檢查一次。
使用示例:
范例1:使從落后主1分鐘,并每隔1分鐘檢測一次,運行10分鐘

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

如果不加--run-time參數(shù)會一直執(zhí)行。
范例2:使從落后主1分鐘,并每隔15秒鐘檢測一次,運行10分鐘

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

運行結(jié)果如下:

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

 
3. pt-slave-find
功能介紹:
查找和打印mysql所有從服務(wù)器復(fù)制層級關(guān)系
用法介紹:
pt-slave-find [OPTION...] MASTER-HOST
原理:連接mysql主服務(wù)器并查找其所有的從,然后打印出所有從服務(wù)器的層級關(guān)系。
使用示例:
范例1:查找主服務(wù)器為192.168.3.135的mysql有所有從的層級關(guān)系:

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

4. pt-slave-restart
功能介紹:
監(jiān)視mysql復(fù)制錯誤,并嘗試重啟mysql復(fù)制當(dāng)復(fù)制停止的時候
用法介紹:
pt-slave-restart [OPTION...] [DSN]
監(jiān)視一個或者多個mysql復(fù)制錯誤,當(dāng)從停止的時候嘗試重新啟動復(fù)制。你可以指定跳過的錯誤并運行從到指定的日志位置。
使用示例:
范例1:監(jiān)視192.168.3.92的從,跳過1個錯誤

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

         范例2:監(jiān)視192.168.3.92的從,跳過錯誤代碼為1062的錯誤。

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

5. pt-table-checksum
功能介紹:
檢查mysql復(fù)制一致性
用法介紹:
pt-table-checksum [OPTION...] [DSN]
工作原理:pt-table-checksum在主上執(zhí)行檢查語句在線檢查mysql復(fù)制的一致性,生成replace語句,然后通過復(fù)制傳遞到從,再通過update更新master_src的值。通過檢測從上this_src和master_src的值從而判斷復(fù)制是否一致。
注意:使用的時候選擇業(yè)務(wù)地峰的時候運行,因為運行的時候會造成表的部分記錄鎖定。使用--max-load來指定最大的負(fù)載情況,如果達到那個負(fù)載這個暫停運行。如果發(fā)現(xiàn)有不一致的數(shù)據(jù),可以使用pt-table-sync工具來修復(fù)。
注意:和1.0版本不同,新版本的pt-table-checksum只需要在master上執(zhí)行即可。
通過 –explain參數(shù)再結(jié)合二進制日志就可以看出腳本的工作原理,如我的test庫有一個名字為zhang的表,我們通過抓取二進制日志來查看腳本的原理:

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*/;
UPDATE `test`.`checksums` SET chunk_time = '0.000563', master_crc = '31012777', master_cnt = '4' WHERE db = 'test' AND tbl = 'zhang' AND chunk = '1'

從這里可以很明顯的看出原理了,前面已經(jīng)說了,這里就不贅述了。
使用示例:
范例1:比較test數(shù)據(jù)庫同步是否一致,結(jié)果顯示所有的表。

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

參數(shù)說明:第一次運行的時候需要添加--create-replicate-table參數(shù),如果不加這個就需要手工運行添加表結(jié)構(gòu)的SQL,表結(jié)構(gòu)SQL如下:

CREATE TABLE checksums (
  db       char(64)   NOT NULL,
  tbl      char(64)   NOT NULL,
  chunk     int     NOT NULL,
  chunk_time   float      NULL,
  chunk_index  varchar(200)   NULL,
  lower_boundary text       NULL,
  upper_boundary text       NULL,
  this_crc    char(40)   NOT NULL,
  this_cnt    int     NOT NULL,
  master_crc   char(40)     NULL,
  master_cnt   int       NULL,
  ts       timestamp  NOT NULL,
  PRIMARY KEY (db, tbl, chunk),
  INDEX ts_db_tbl (ts, db, tbl)
) ENGINE=InnoDB;

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

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

從結(jié)果中,我們可以看到test.aaa和test.heartbeat表的DIFFS不為0,那么就是這兩個表不同步了。
 
范例2:比較test數(shù)據(jù)庫同步是否一致,結(jié)果只顯示數(shù)據(jù)不一致的表(添加--replicate-check-only參數(shù)即可,這個值查看checksums數(shù)據(jù)不會重新對表進行比較,因此需要先運行上面的比較語句之后再運行這個語句,否則顯示不了最新的變化。)。

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

結(jié)果如下:

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

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

6. pt-table-sync
功能介紹:
高效同步mysql表的數(shù)據(jù)
用法介紹:
pt-table-sync [OPTION...] DSN [DSN...]
原理:總是在主上執(zhí)行數(shù)據(jù)的更改,再同步到從上,不會直接更改成從的數(shù)據(jù),在主上執(zhí)行更改是基于主上現(xiàn)在的數(shù)據(jù),不會更改主上的數(shù)據(jù)。注意使用之前先備份你的數(shù)據(jù),避免造成數(shù)據(jù)的丟失.執(zhí)行execute之前最好先換成--print或--dry-run查看一下會變更哪些數(shù)據(jù)。
使用示例:
范例1:同步3.135的test庫的aaa表到192.168.3.92,在執(zhí)行之前可以用--execute參數(shù)換成--print來查看會變更什么東西,后面那個主機必須是master,否則會報錯推出。

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數(shù)據(jù)庫同步到192.168.3.92,使從上具有一樣的數(shù)據(jù)。

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

范例3:只同步指定的表

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

范例4:根據(jù)pt-table-checksum的結(jié)果進行數(shù)據(jù)同步

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

范例5:根據(jù)pt-table-checksum使從的數(shù)據(jù)和主的數(shù)據(jù)一致

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

監(jiān)控類工具
1. pt-deadlock-logger
功能介紹:
提取和記錄mysql死鎖的相關(guān)信息
用法介紹:
pt-deadlock-logger [OPTION...] SOURCE_DSN
收集和保存mysql上最近的死鎖信息,可以直接打印死鎖信息和存儲死鎖信息到數(shù)據(jù)庫中,死鎖信息包括發(fā)生死鎖的服務(wù)器、最近發(fā)生死鎖的時間、死鎖線程id、死鎖的事務(wù)id、發(fā)生死鎖時事務(wù)執(zhí)行了多長時間等等非常多的信息。詳情見下面的示例。
使用示例:
范例1:打印本地mysql的死鎖信息

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

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

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數(shù)據(jù)庫最近發(fā)生的外鍵錯誤信息??梢酝ㄟ^參數(shù)控制直接打印錯誤信息或者將錯誤信息存儲到數(shù)據(jù)庫的表中。
使用示例:
我在服務(wù)器上運行的時候一直報如下錯誤:

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

我懷疑是這個程序有問題,回頭換一個版本試一下或者調(diào)試一下那個程序。
 
3. pt-mext
功能介紹:
并行查看SHOW GLOBAL STATUS的多個樣本的信息。
用法介紹:
pt-mext [OPTIONS] -- COMMAND
原理:pt-mext執(zhí)行你指定的COMMAND,并每次讀取一行結(jié)果,把空行分割的內(nèi)容保存到一個一個的臨時文件中,最后結(jié)合這些臨時文件并行查看結(jié)果。
使用示例:
范例1:每隔10s執(zhí)行一次SHOW GLOBAL STATUS,并將結(jié)果合并到一起查看

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

 
4. pt-query-digest
功能介紹:
分析查詢執(zhí)行日志,并產(chǎn)生一個查詢報告,為MySQL、PostgreSQL、 memcached過濾、重放或者轉(zhuǎn)換語句。
用法介紹:
pt-query-digest [OPTION...] [FILE]
解析和分析mysql日志文件
使用示例:
范例1:分析本地的慢查詢文件

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

范例2:重新回顧滿查詢?nèi)罩?,并將結(jié)果保存到query_review中,注意query_review表的表結(jié)構(gòu)必須先建好,表結(jié)構(gòu)如下:

CREATE TABLE query_review (
  checksum   BIGINT UNSIGNED NOT NULL PRIMARY KEY,
  fingerprint TEXT NOT NULL,
  sample    TEXT NOT NULL,
  first_seen  DATETIME,
  last_seen  DATETIME,
  reviewed_by VARCHAR(20),
  reviewed_on DATETIME,
  comments   TEXT
);

命令如下:

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

5. pt-trend
功能介紹:
居于一組時間序列的數(shù)據(jù)點做統(tǒng)計。
用法介紹:
pt-trend [OPTION...] [FILE ...]
讀取一個慢查詢?nèi)罩?,并輸出統(tǒng)計信息。也可以指定多個文件。如果不指定文件的話直接從標(biāo)準(zhǔn)輸入中讀取信息。
使用示例:
范例1:讀取本地慢查詢?nèi)罩静⑤敵鼋y(tǒng)計信息

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

相關(guān)文章

  • Windows server 2008 r2下MySQL5.7.17 winx64安裝版配置方法圖文教程

    Windows server 2008 r2下MySQL5.7.17 winx64安裝版配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows server 2008 r2下MySQL5.7.17 winx64安裝版配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • MySQL load語句詳細(xì)介紹

    MySQL load語句詳細(xì)介紹

    這篇文章主要介紹了MySQL load語句詳細(xì)介紹,本文講解了load的基本語法、文件的路徑、配置選項、STARTING LINES選項、TERMINATED LINES選項等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • MySQL數(shù)據(jù)庫show processlist指令使用解析

    MySQL數(shù)據(jù)庫show processlist指令使用解析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫show processlist指令使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 一文解析MySQL的MVCC實現(xiàn)原理

    一文解析MySQL的MVCC實現(xiàn)原理

    這篇文章主要介紹了MySQL的MVCC實現(xiàn)原理,MVCC全稱是Multi-Version?Concurrency?Control是一種并發(fā)控制的方法,通過維護一個數(shù)據(jù)的多個版本,減少讀寫操作的沖突
    2022-08-08
  • Mysql插入數(shù)據(jù)方式(insert into 、replace into解析)

    Mysql插入數(shù)據(jù)方式(insert into 、replace into解析)

    這篇文章主要介紹了Mysql插入數(shù)據(jù)方式(insert into 、replace into解析),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Mysql服務(wù)添加 iptables防火墻策略的方案

    Mysql服務(wù)添加 iptables防火墻策略的方案

    這篇文章主要介紹了給Mysql服務(wù)添加 iptables防火墻策略的方案,本文給大家分享兩種解決方案,需要的朋友可以參考下
    2021-04-04
  • Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql我們可以使用遞歸查詢來構(gòu)建一個遞歸樹,本文就來介紹一下Mysql實現(xiàn)遞歸樹查詢的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 干涉MySQL優(yōu)化器使用hash?join的方法

    干涉MySQL優(yōu)化器使用hash?join的方法

    這篇文章主要介紹了如何干涉MySQL優(yōu)化器使用hash?join,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • mysql當(dāng)中怎么執(zhí)行sql腳本文件

    mysql當(dāng)中怎么執(zhí)行sql腳本文件

    這篇文章主要給大家介紹了關(guān)于mysql當(dāng)中怎么執(zhí)行sql腳本文件的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • MySQL中json_extract函數(shù)說明及使用方式

    MySQL中json_extract函數(shù)說明及使用方式

    今天看mysql中的json數(shù)據(jù)類型,涉及到一些使用,使用到了函數(shù)json_extract來,下面這篇文章主要給大家介紹了關(guān)于MySQL中json_extract函數(shù)說明及使用方式的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論