MySQLに対するpercona-toolkitのクラス操作のコピーと監視チュートリアル

12003 ワード

クラスツール1をコピーします.pt-heartbeat機能紹介:監視mysqlコピー遅延用法紹介:pt-heartbeat[OPTION...][DSN]--update|--monitor|--check|--stopはレプリケーションの遅れたマスターmysqlまたはマスターPostgreSQLの時間を測定し、このスクリプトを使用してマスターを更新するか、レプリケーションを監視することができます.具体的な使い方は後述の例を参照してください.原理:pt-heartbeatは実際のレプリケーションデータによってmysqlとpostgresqlのレプリケーション遅延を確認し、これはレプリケーションメカニズムへの依存を回避し、正確な遅れたレプリケーション時間を得ることができ、2つの部分を含む:第1の部分はメインでpt-heartbeatの--updateスレッドは指定された時間間隔でタイムスタンプを更新し、第2部はpt-heartbeatの--monitorスレッドまたは--checkスレッドが上からコピーした心拍記録(前に更新されたタイムスタンプ)をチェックし、現在のシステム時間と比較して時間の違いを得る.heartbeatテーブルを手動で作成したり、--create-tableパラメータを追加したりすることができます.MEMORYエンジンの使用をお勧めします.テーブル構造は次のとおりです.

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:バックグラウンド・プロセスを作成して、メインのtestライブラリのheartbeatテーブル()を定期的に更新するデフォルトは1 sです.--intervalで指定できます.実行すると、heartbeatテーブルになります.testライブラリは私が監視している同期ライブラリです.

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

例2:slaveでのレプリケーションの遅れを監視する(常に監視する):

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

モニタリングの結果は次のとおりです.

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:slaveでのレプリケーションの遅れを監視する(一度の終了を監視する):

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

例4: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機能紹介:サーバからプライマリサーバに遅れる指定時間を設定します.使用法紹介:pt-slave-delay[OPTION...]SLAVE-HOST[MASTER-HOST]原理:sqlスレッドのコピーを開始および停止することにより、マスター指定時間に遅れて設定する.デフォルトはrelayログからのバイナリログの位置に基づいて判断されるため、プライマリサーバに接続する必要はありません.IOプロセスがプライマリサーバに遅れていなければ、このチェック方式はよく機能し、ネットワークがスムーズであれば、一般的にIOスレッドの遅れたプライマリは通常ミリ秒レベルです.一般的には--delay and--delay"+"--intervalによって制御されます.--intervalは、上のsqlスレッドから起動または停止するかどうかをチェックする頻度を指定し、デフォルトでは1分に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パラメータを追加しないと、ずっと実行されます.例2:遅れたマスターから1分間、15秒ごとに検出し、10分間運転する

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

実行結果は次のとおりです.

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すべてのサーバからのレプリケーション階層関係の検索と印刷方法紹介:pt-slave-find[OPTION...]MASTER-HOST原理:mysqlプライマリサーバに接続し、すべてのスレーブを検索し、すべてのスレーブサーバの階層関係を印刷します.使用例:例1:プライマリ・サーバが192.168.3.135のmysqlを検索するには、すべてのセカンダリ・レベルの関係があります.

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

4.pt-slave-restart機能紹介:mysqlレプリケーションエラーを監視し、mysqlレプリケーションを再起動しようとするレプリケーションが停止した場合の使い方紹介:pt-slave-restart[OPTION...][DSN]1つ以上のmysqlレプリケーションエラーを監視し、停止時からレプリケーションを再起動しようとします.スキップされたエラーを指定し、指定したログの場所まで実行できます.使用例:例1:192.168.3.92のスレーブを監視し、1つのエラーをスキップ

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

例2: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レプリケーション整合性チェック使い方紹介:pt-table-checksum[OPTION...][DSN]動作原理:pt-table-checksumメインでチェック文を実行mysqlレプリケーションの一貫性をオンラインでチェックし、replace文を生成し、レプリケーションによってスレーブに渡し、updateによってmaster_を更新するsrcの値.上から検出srcとmaster_srcの値は、レプリケーションが一致するかどうかを判断します.注意:使用時にビジネスピークを選択したときに実行します.実行時にテーブルの一部のレコードがロックされるためです.--max-loadを使用して、その負荷に達したら運転を一時停止する最大の負荷状況を指定します.一致しないデータが見つかった場合は、pt-table-syncツールを使用して修復できます.注:1.0バージョンとは異なり、新しいバージョンのpt-table-checksumはmasterで実行するだけです.私のtestライブラリにzhangという名前のテーブルがあるように、スクリプトの動作原理は、Cexplainパラメータとバイナリ・ログを組み合わせることでわかります.バイナリ・ログをキャプチャすることで、スクリプトの原理を確認します.

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'

ここから明らかに原理がわかるようになりましたが、前に述べたように、ここでは余計なことは言いません.使用例:例1:testデータベースの同期が一致しているかどうかを比較した結果、すべてのテーブルが表示されます.

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は以下の通りです.

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パラメータを使用するのは私のmyのためです.cnfはreplicate-ignore-dbやreplicate-wild-do-tableなどのパラメータを構成しています.また、実行するchecksumsが存在するデータベースは同期データベースである必要があることに特に注意してください.私が使い始めたばかりの頃は模索していましたが、公式サイトにも例がありませんでした.ほほほ!結果は次のとおりです.

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

結果からtestが見えますaaaとtestheartbeatテーブルのDIFFSは0ではありません.では、この2つのテーブルが同期していません.例2:testデータベースの同期が一致しているかどうかを比較した結果、データが一致していないテーブルのみが表示されます(replicate-check-onlyパラメータを追加すればいいです.この値はchecksumsデータを表示してもテーブルを再比較しないため、上記の比較文を実行してからこの文を実行する必要があります.そうしないと、最新の変更は表示されません).

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

結果は次のとおりです.

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

結果から、2つの非同期テーブルのみが表示されていることがわかります.
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でなければなりません.そうしないと、エラーが発生します.

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に同期し、上から同じデータを持つようにします.

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:pt-table-checksumの結果によるデータ同期

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

例5:pt-table-checksumに従ってスレーブのデータとプライマリのデータを一致させる

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のデッドロック情報を印刷する

pt-deadlock-logger --user=root --password=zhang@123 h=localhost �Cprint

例2:ローカルmysqlデッドロック情報をデータベースのテーブルに記録し、印刷する

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データベースで最近発生した外部キーエラー情報を抽出し保存する.パラメータ制御により、エラー情報を直接印刷するか、データベースのテーブルにエラー情報を格納できます.使用例:サーバ上で実行している間、次のエラーを報告していました.

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行の結果を読み取るたびに、空行分割の内容を1つの一時ファイルに保存し、最後にこれらの一時ファイルと結びつけて結果を並列に表示します.使用例:例1:SHOW GLOBAL STATUSを10 sごとに実行し、結果をまとめて表示する

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

  4. pt-query-digest機能紹介:クエリー実行ログを分析し、MySQL、PostgreSQL、memcachedの文をフィルタ、再生、または変換するクエリーレポートを生成します.使用法紹介:pt-query-digest[OPTION...][FILE]mysqlログファイルの解析と解析の使用例:例1:ローカルの遅いクエリーファイルの解析

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

例2:フルクエリー・ログを再レビューし、結果をquery_に保存reviewではquery_に注意reviewテーブルのテーブル構造は、次のように構築する必要があります.

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機能紹介:時間系列のセットにあるデータポイントを統計する.使用法紹介:pt-trend[OPTION...][FILE ...] 遅いクエリー・ログを読み込み、統計を出力します.複数のファイルを指定することもできます.ファイルを指定しない場合は、そのまま標準入力から情報を読み込みます.使用例:例1:ローカル・スロー・クエリー・ログを読み込み、統計を出力します.

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