コマンド
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ファイルを削除すれば、通常の状態に戻ります