web-dev-qa-db-ja.com

非標準ポートを使用するスレーブでのpt-table-checksum

MySQLレプリケーションでスレーブドリフトを検出するためにpt-table-checksumを実行しようとしています。私のスレーブは標準のTCPリスニングポートを使用していません。そのため、ツールを実行するとエラーが発生します。

Cannot connect to P=3306,h=,p=...

それはまだマスターのテーブルをチェックサムしますが、スレーブに接続することができないのでそれはあまり役に立ちません。コマンドの実行時にスレーブの代替ポートを指定する方法がわかりません。私の現在のコマンドは次のようになります

pt-table-checksum -h  -P 3388 -p 
4
wjimenez5271

問題は、レプリカがポートをマスターに報告しないことです。デフォルトでは、pt-table-checksumは未知数をデフォルトで埋めることによって接続を試みます。未知数がデフォルトを使用していない場合、これは失敗します。この場合、2つのオプションがあります。

1)--recursion-methodオプションを使用して、SHOW PROCESSLISTの検査からSHOW SLAVE HOSTSの検査に変更し、ホストを報告するようにスレーブを構成します。これはお勧めしません。

2)代わりに、-recursion-method = dsnを使用して、各レプリカへの接続方法をツールに指示するDSN(データソース名)命令の完全なテーブルを作成することをお勧めします。このテーブルがfoo.barの場合、-recursion-method = dsn = D = foo、t = barを使用します。

これはツールキットの2.0シリーズでのみ利用可能ですが、pt-table-checksumは2.0で大幅に改善されているため、とにかくそれを使用する必要があります。

3
Baron Schwartz