製品

Percona

pt-heartbeat

コマンド

pt-heartbeat [ オプション ] [ DSN ] [ –update | –monitor | –check | –stop ]

【主なオプション】

  • ・ [ –update | –monitor | –check | –stop ] の中から少なくとも一つを指定します
      –update : マスタサーバに接続した時間(タイムスタンプ)を更新します
      –monitor : 指定した間隔でレプリケーションの遅延状況を出力します
      –check : レプリケーションの遅延状況を一度だけ出力します
      –stop : pt-heartbeat-sentinelファイルを生成します。このファイルが存在するとupdateとmonitorが機能しなくなります
  • ・ –master-server-id : マスタサーバのサーバIDを指定します
  • ・ –create-table : 遅延状況を記録するheartbeatテーブルを作成します(初めてコマンドを使用する時のみ指定)
  • ・ [ オプション ] : -p パスワード -D データベース名

【主なオプション】

  • ・ –interval : 遅延状況を出力する間隔を指定します(デフォルトでは1秒です)

目的

MySQLサーバのレプリケーションの遅延を測定します

設定ファイル

上記の必須項目を、設定ファイルにまとめておきます
ただし、DSNはコマンドライン上で直接指定する必要があるため、ここでは書きません

# touch /etc/percona-toolkit/pt-heartbeat.conf
# vi /etc/percona-toolkit/pt-heartbeat.conf

・設定ファイルの作成

# touch /etc/percona-toolkit/pt-heartbeat.conf

・設定ファイルの編集

# vi /etc/percona-toolkit/pt-heartbeat.conf

# config for pt-heartbeat.conf
D=repl_test
password=パスワード

・測定するデータベース名

D=repl_test

・マスタ のパスワードを記載

password=パスワード

シナリオ

マスタサーバで以下のSQL文を実行し、レプリケーションラグ測定用のデータベースを作成します

mysql> CREATE DATABASE test;

作成したtestスキーマ上にheartbeatテーブルを作成し、pt-heartbeatを更新するためのデーモンプロセスを開始する

# pt-heartbeat --daemonize -D test --update -h <マスターサーバのIPアドレス> --create-table

スレーブサーバ上で以下のコマンドを実行しpt-heartbeatを開始する(測定間隔:5秒/ラグ推移の平均測定間隔:1秒・3秒・5秒)

# pt-heartbeat -D test --monitor --master-server-id <マスターサーバのサーバーID> --interval 5 --frames 1s,3s,5s

マスターサーバーにて以下のコマンドを実行し、50万件のレコードを読み込むことで遅延を発生させます

[root@localhost employees_db]# mysql -u root -p < employees.sql

結果

データを読み込む際にレプリケーション遅延が発生し、処理が完了するとラグが0に集約していく事が確認できます

[root@localhost ~]# pt-heartbeat -D test --monitor --master-server-id 1000 --interval 5 --frames 1s,3s,5s
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
1.00s [  1.00s,  0.33s,  0.20s ]
0.00s [  0.00s,  0.33s,  0.20s ]
0.99s [  0.99s,  0.66s,  0.40s ]
0.99s [  0.99s,  0.66s,  0.59s ]
5.99s [  5.99s,  2.65s,  1.79s ]
4.99s [  4.99s,  3.99s,  2.59s ]
3.00s [  3.00s,  4.66s,  3.19s ]
~~~~略~~~~
3.99s [  3.99s,  2.99s,  3.19s ]
3.00s [  3.00s,  2.66s,  3.20s ]
2.99s [  2.99s,  3.33s,  2.99s ]
1.99s [  1.99s,  2.66s,  2.59s ]
3.00s [  3.00s,  2.66s,  2.99s ]
3.99s [  3.99s,  2.99s,  2.99s ]
1.98s [  1.98s,  2.99s,  2.79s ]
0.00s [  0.00s,  1.99s,  2.19s ]
0.00s [  0.00s,  0.66s,  1.79s ]
0.00s [  0.00s,  0.00s,  1.19s ]
0.00s [  0.00s,  0.00s,  0.40s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]

良い点

レプリケーションの遅延状況を確認する事ができます

その他

–stopオプションを使用した場合は以下のように–updateと–monitorが機能しなくなります

[root@localhost Et]# pt-heartbeat --master-server-id 1000 --stop
Successfully created file /tmp/pt-heartbeat-sentinel
[root@localhost Et]# pt-heartbeat --master-server-id 1000 --monitor
[root@localhost Et]# pt-heartbeat --master-server-id 1000 --update
[root@localhost Et]# pt-heartbeat --master-server-id 1000 --check
769.00
[root@localhost Et]#

※ /tmp/pt-heartbeat-sentinelファイルを削除すれば、通常の状態に戻ります