これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド pt-slave-restartp です。
プログラム:
NAME
pt-slave-restart - エラー後に MySQL レプリケーションを監視して再起動します。
SYNOPSIS
使用法: pt-slave-restart [オプション] [DSN]
pt-slave-restart は、XNUMX つ以上の MySQL レプリケーション スレーブのエラーを監視し、次のことを試みます。
レプリケーションが停止した場合は再開します。
リスク
Percona Toolkit は成熟しており、現実世界で実証されており、十分にテストされていますが、すべてデータベースです
ツールはシステムやデータベース サーバーにリスクをもたらす可能性があります。 このツールを使用する前に、
お願いします:
・ツールのドキュメントを読む
・ツールの既知の「バグ」を確認します
· 非運用サーバーでツールをテストする
· 運用サーバーをバックアップし、バックアップを検証します。
DESCRIPTION
pt-slave-restart は XNUMX つ以上の MySQL レプリケーション スレーブを監視し、ステートメントをスキップしようとします
エラーの原因となるもの。 指数関数的に変化するスリープでスレーブをインテリジェントにポーリングします
時間。 エラーを指定して、特定のバイナリログ位置までスレーブをスキップして実行できます。
このツールはスレーブが過去のエラーを進めるのに役立ちますが、これに依存しないでください。
レプリケーションを「修正」します。 スレーブエラーが頻繁に、または予期せず発生する場合は、次のことを特定する必要があります。
そして根本原因を解決します。
出力
「--verbose」を指定すると、pt-slave-restart はスレーブを見つけるたびに XNUMX 行出力します。
エラーがあります。 詳細については、「--verbose」を参照してください。
SLEEP
pt-slave-restart は、スレーブのポーリングの間にインテリジェントにスリープします。 現在の睡眠時間
不定。
· 初期スリープ時間は「--sleep」で与えられます。
· チェックしてエラーが見つかった場合、前回のスリープ時間を半分にします。
· エラーが見つからなかった場合は、前回のスリープ時間を XNUMX 倍にします。
· スリープ時間は、以下は「--min-sleep」で制限され、それ以上は「--max-sleep」で制限されます。
· エラーを発見した直後、pt-slave-restart は別のエラーが非常に深刻であると想定します。
次に発生する可能性が高いため、現在のスリープ時間または最初のスリープ時間でスリープします。
どちらか小さい方。
GLOBAL お取引 IDS
Percona Toolkit 2.2.8 以降、pt-slave-restart は導入されたグローバル トランザクション ID をサポートします。
MySQL 5.6.5では。 次のことに留意することが重要です。
· pt-slave-restart は、複数のレプリケーション スレッドが存在する場合にトランザクションをスキップしません。
使用されています (slave_Parallel_workers > 0)。 pt-slave-restart は GTID を知りません
イベントは、特定のスレーブ スレッドの失敗したトランザクションのイベントです。
· デフォルトの動作では、スレーブのマスターからの次のトランザクションをスキップします。 書き込みます
それぞれが独自の UUID を持つ異なるサーバーから発信することができます。
「--master-uuid」を参照してください。
EXIT ステータス
終了ステータス 0 (戻り値または戻りコードとも呼ばれる) は、次のことを示します。
成功。 その他の値は、Perl プロセス自体の終了ステータス、または Perl プロセスの終了ステータスを表します。
監視するサーバーが複数ある場合に終了した、最後にフォークされたプロセス。
互換性の確保
pt-slave-restart は、多くのバージョンの MySQL で動作するはずです。 多くの出力列の大文字と小文字
SHOW SLAVE STATUS の文字列は時間の経過とともに変化するため、すべて小文字として扱われます。
OPTIONS
このツールは追加のコマンドライン引数を受け入れます。 「概要」と使用方法を参照してください。
詳細については情報。
- いつも
エラーがない場合でもスレーブを起動します。 このオプションを有効にすると、pt-slave-restart
必要に応じてスレーブを手動で停止することはできません。
--ask-pass
MySQL に接続するときにパスワードの入力を求められます。
- 文字コード
短縮形: -A; タイプ: 文字列
デフォルトの文字セット。 値が utf8 の場合、STDOUT の Perl の binmode を utf8 に設定します。
mysql_enable_utf8 オプションを DBD::mysql に渡し、その後 SET NAMES UTF8 を実行します。
MySQL に接続します。 他の値は、utf8 レイヤーを使用せずに STDOUT で binmode を設定します。
MySQL に接続した後、SET NAMES を実行します。
--[no]チェックリレーログ
デフォルト:はい
スレーブエラーをチェックする前に、最後のリレーログファイルと位置を確認してください。
デフォルトでは、どちらでもない場合、pt-slave-restart は何も実行しません (スリープするだけです)。
リレー ログ ファイルとリレー ログの位置は、前回のチェック以降変更されていません。 これ
無限ループを防ぎます(つまり、同じリレーログファイルで同じエラーを再開します)
同じリレーログの位置)。
ただし、特定のスレーブ エラーの場合は、次のように指定してこのチェックを無効にする必要があります。
「--no-check-relay-log」。 自分が何をしているのか理解していない限り、これを行わないでください。
--config
タイプ:配列
このコンマ区切りの構成ファイルのリストを読んでください。 指定する場合、これが最初である必要があります
コマンドラインのオプション。
-デーモン化
バックグラウンドにフォークしてシェルから切り離します。 POSIX オペレーティング システムのみ。
-データベース
短縮形:-D; タイプ:文字列
使用するデータベース。
--デフォルトファイル
短縮形: -F; タイプ: 文字列
指定されたファイルから mysql オプションのみを読み取ります。 絶対パス名を指定する必要があります。
--エラーの長さ
タイプ:int
印刷するエラー メッセージの最大長。 「--verbose」が印刷できるほど高く設定されている場合
エラーの場合、このオプションはエラー テキストを指定された長さに切り詰めます。 これはできる
端末への回り込みを防ぐのに役立ちます。
--エラー番号
タイプ: ハッシュ
このカンマ区切りのエラーのリストのみを再開してください。 pt-slave-restart のみを試行させます
エラー番号がこのエラーのカンマ区切りリストに含まれている場合は再起動します。 が見えた場合
エラーがリストにない場合は終了します。
エラー番号は「SHOW SLAVE STATUS」の「last_errno」列にあります。
--エラーテキスト
タイプ:文字列
このパターンに一致するエラーのみを再起動します。 対象となる Perl 正規表現
エラー テキストがあれば、それが照合されます。 エラー テキストが存在し、一致する場合、pt-slave-
restart はスレーブの再起動を試みます。 存在するが一致しない場合は、pt-slave-
再起動すると終了します。
エラーテキストは「SHOW SLAVE STATUS」の「last_error」列にあります。
- 助けて
ヘルプを表示して終了します。
- ホスト
短い形式: -h; タイプ: 文字列
ホストに接続します。
- ログ
タイプ:文字列
デーモン化されたときに、すべての出力をこのファイルに出力します。
--最大スリープ
型: 浮動小数点数; デフォルト: 64
最大スリープ秒数。
pt-slave-restart がスレーブを再度ポーリングするまでにスリープする最大時間。 これは
pt-slave-restart が実行中の他のすべてのインスタンスが終了するまで待機する時間も
「--stop」と「--monitor」の両方が指定されている場合。
「スリープ」を参照してください。
--分睡眠
型: 浮動小数点数; デフォルト: 0.015625
pt-slave-restart がスレーブを再度ポーリングするまでにスリープする最小時間。 見る
"寝る"。
- モニター
スレーブを監視するかどうか (デフォルト)。 --monitor を明示的に指定しない限り、
「--stop」を指定すると無効になります。
- パスワード
短い形式: -p; タイプ: 文字列
接続時に使用するパスワード。 パスワードにカンマが含まれている場合はエスケープする必要があります
バックスラッシュ付き: "exam\,ple"
--pid
タイプ:文字列
指定された PID ファイルを作成します。 PID ファイルがすでに存在する場合、ツールは起動しません。
含まれているPIDは、現在のPIDとは異なります。 ただし、PIDファイルの場合
存在し、それに含まれる PID が実行されなくなった場合、ツールは PID を上書きします
現在の PID を持つファイル。 PID ファイルは、ツールが終了すると自動的に削除されます。
- 港
短縮形: -P; 型: int
接続に使用するポート番号。
- 静かな
短縮形: -q
通常の出力を抑制します (「--verbose」を無効にします)。
-再帰
タイプ:int; デフォルト:0
指定されたサーバーのスレーブを監視します。最大で指定された数のサーバーをディープに監視します。
階層。 デフォルトの深さ 0 は、「指定されたスレーブを監視するだけ」を意味します。
pt-slave-restart は「SHOW PROCESSLIST」を検査し、どの接続を特定しようとします
スレーブからのものである場合は、スレーブに接続します。 「--recursion-method」を参照してください。
再帰は、プログラムの開始時にすべてのスレーブを見つけて監視することで機能します。 もし
複数のスレーブがある場合、「pt-slave-restart」は「fork()」を使用してそれらを監視します。
これは、「SHOW SLAVE HOSTS」に表示されるようにスレーブを設定している場合にも機能します。
このための最小設定は「report_host」パラメータですが、他にも設定があります。
「report」パラメータには、ポート、ユーザー名、パスワードも含まれます。
--再帰法
タイプ: 配列; デフォルト: プロセスリスト、ホスト
スレーブを見つけるために使用される推奨される再帰方法。
考えられる方法は次のとおりです。
メソッドの用途
=========== ==================
プロセスリスト SHOW PROCESSLIST
ホスト スレーブホストを表示
none スレーブを見つけません
SHOW SLAVE HOSTS は信頼できないため、processlist メソッドが推奨されます。
ただし、サーバーが標準以外のポートを使用する場合は、hosts メソッドが必要です。
3306)。 通常、pt-slave-restart は正しく動作し、スレーブを見つけますが、
優先メソッドが指定される可能性があり、それが最初に使用されます。 奴隷が見つからなかったら、
他の方法も試行されます。
- ランタイム
タイプ:時間
出る前に走る時間。 指定された時間が経過した後に pt-slave-restart を停止します
が経過しました。 オプションの接尾辞: s=秒、m=分、h=時間、d=日。 接尾辞がない場合は、s
使用されている。
--センチネル
タイプ: 文字列; デフォルト: /tmp/pt-slave-restart-sentinel
このファイルが存在する場合は終了します。
--set-vars
タイプ:配列
この「変数=値」ペアのカンマ区切りリストに MySQL 変数を設定します。
デフォルトでは、ツールは以下を設定します。
wait_timeout=10000
コマンドラインで指定された変数は、これらのデフォルトをオーバーライドします。 例えば、
「--set-vars wait_timeout=500」を指定すると、デフォルト値の 10000 がオーバーライドされます。
変数を設定できない場合、ツールは警告を出力し、続行します。
--スキップカウント
タイプ:int; デフォルト:1
スレーブの再起動時にスキップするステートメントの数。
--master-uuid
タイプ:文字列
GTID を使用する場合、それをスキップするには空のトランザクションを作成する必要があります。 もし
書き込みは上記のレプリケーション ツリーの別のノードから来ていますが、そうではありません。
どの UUID のどのイベントをスキップするかを知ることができます。
デフォルトでは、スレーブのマスターからのトランザクション (「SHOW SLAVE」の「Master_UUID」)
STATUS")はスキップされます。
たとえば、
マスター1 -> スレーブ1 -> スレーブ2
master2 に書き込まれたスレーブ 1 のイベントをスキップする場合は、UUID を指定する必要があります
それ以外の場合、ツールはデフォルトでslave1のUUIDを使用します。
「グローバルトランザクションID」を参照してください。
- 寝る
タイプ:int; デフォルト:1
スレーブをチェックする間の初期スリープ秒数。
「スリープ」を参照してください。
- ソケット
短縮形: -S; タイプ: 文字列
接続に使用するソケットファイル。
- ストップ
センチネル ファイルを作成して、実行中のインスタンスを停止します。
「pt-slave-restart」により、「--sentinel」で指定されたセンチネル ファイルが作成されます。 これ
同じものを監視している実行中のすべてのインスタンスを停止する効果があるはずです。
センチネルファイル。 「--monitor」が指定されていない場合、「pt-slave-restart」は終了後に終了します。
ファイルを作成しています。 指定した場合、「pt-slave-restart」は一定間隔待機します。
「--max-sleep」で指定した場合は、ファイルを削除して作業を続行します。
これは、必要に応じて cron ジョブを正常に停止したり、cron ジョブを置き換えたりするのに便利かもしれません。
インスタンスを別のインスタンスで実行しています。 たとえば、停止して再起動したい場合は、
"pt-slave-restart" XNUMX 時間ごと (確実に XNUMX 時間ごとに再起動されるようにするため)
サーバーのクラッシュやその他の問題の場合)、次のような「crontab」行を使用できます。
この:
0 * * * * pt-slave-restart --monitor --stop --sentinel /tmp/pt-slave-restartup
デフォルト以外の「--sentinel」は、毎時「cron」ジョブがインスタンスのみを停止するようにします。
以前は同じオプションで (つまり、同じ「cron」ジョブから) 開始されていました。
「--センチネル」も参照してください。
--マスターまで
タイプ:文字列
このマスター ログ ファイルと位置まで実行します。 スレーブを起動し、失敗した場合は再試行します。
指定された複製座標に到達するまで。 座標はログファイルです
そして、relay_master_log_file、exec_master_log_pos によって与えられるマスター上の位置。 の
引数は「file,pos」の形式である必要があります。 ファイル名と位置を「」で区切ります。
単一のカンマとスペースは不要です。
これにより、START SLAVE に UNTIL 句が指定されることになります。
この時点に到達したら、スレーブを停止し、pt-slave-restart を終了する必要があります。
--リレーまで
タイプ:文字列
このリレー ログ ファイルと位置まで実行します。 「--until-master」と似ていますが、スレーブでは
代わりにログをリレーします。 座標はrelay_log_file、relay_log_posで与えられます。
- ユーザー
短い形式: -u; タイプ: 文字列
現在のユーザーでない場合は、ログインするユーザー。
-詳細
短い形式: -v; 累積: はい。 デフォルト: 1
冗長にしましょう。 複数回指定できます。 詳細度 1 は接続情報を出力します。
タイムスタンプ、relay_log_file、relay_log_pos、および last_errno。 冗長性 2 の追加
last_error。 「--error-length」も参照してください。 Verbosity 3 は現在のスリープ時間を出力します。
pt-slave-restart がスリープするたびに。
- バージョン
バージョンを表示して終了します。
-[no]バージョンチェック
デフォルト:はい
Percona Toolkit、MySQL、およびその他のプログラムの最新バージョンを確認してください。
これは標準の「アップデートを自動的に確認する」機能であり、さらに XNUMX つの機能が追加されています。
特徴。 まず、ツールはローカル システム上の他のプログラムのバージョンをチェックします。
独自のバージョンに追加。 たとえば、すべての MySQL サーバーのバージョンをチェックします。
Perl、および Perl モジュール DBD::mysql に接続します。 次に、チェックして警告します。
既知の問題があるバージョンについて。 たとえば、MySQL 5.5.25 には重大なバグがあり、
5.5.25aとして再リリースされました。
更新または既知の問題は、ツールの通常の出力の前に STDOUT に出力されます。
この機能がツールの通常の動作を妨げることはありません。
詳細については、次のWebサイトをご覧ください。 。
バージョンを表示して終了します。
DSN OPTIONS
これらの DSN オプションは、DSN を作成するために使用されます。 各オプションは「option=value」のように与えられます。
オプションでは大文字と小文字が区別されるため、P と p は同じオプションではありません。 そんなことはありえない
「=」の前後には空白があり、値に空白が含まれる場合は引用符で囲む必要があります。
DSN オプションはカンマで区切られます。 詳細については、percona-toolkit マンページを参照してください。
・A
DSN: 文字セット; コピー: はい
デフォルトの文字セット。
・ NS
DSN: データベース; コピー: はい
デフォルトのデータベース。
・ NS
DSN: mysql_read_default_file; コピー: はい
指定されたファイルからデフォルトのオプションのみを読み取ります
・h
DSN: ホスト; コピー: はい
ホストに接続します。
・ NS
DSN: パスワード; コピー: はい
接続時に使用するパスワード。 パスワードにカンマが含まれている場合はエスケープする必要があります
バックスラッシュ付き: "exam\,ple"
・p
DSN: ポート; コピー: はい
接続に使用するポート番号。
・ NS
DSN: mysql_socket; コピー: はい
接続に使用するソケットファイル。
・あなた
DSN: ユーザー; コピー: はい
現在のユーザーでない場合は、ログインするユーザー。
ENVIRONMENT
環境変数「PTDEBUG」を使用すると、STDERR への詳細なデバッグ出力が有効になります。 有効にする
デバッグしてすべての出力をファイルにキャプチャするには、次のようにツールを実行します。
PTDEBUG=1 pt-slave-restart ... > ファイル 2>&1
注意: デバッグ出力は大量であり、数メガバイトの出力が生成される可能性があります。
SYSTEM 募集要項
Perl、DBI、DBD::mysql、およびいくつかのコア パッケージが必要です。
Perlのかなり新しいバージョン。
onworks.net サービスを使用して pt-slave-restartp をオンラインで使用する