MySQL pt-slave-restart ツールの使い方の紹介

MySQL pt-slave-restart ツールの使い方の紹介

MySQL マスター スレーブ レプリケーション環境を設定する場合、マスター データベースとスレーブ データベースの両方でユーザーのアカウント パスワードを初期化する必要があるシナリオに遭遇することがよくあります。通常の状況では、ユーザー情報をインポートする前に、マスター データベースとスレーブ データベースの両方でセッション レベルの binlog をオフにする必要があります。

ただし、セッションレベルのバイナリログを閉じるという事前アクションが無視される場合もあります。たとえば、GTIDベースのレプリケーションモードでは、マスターライブラリとスレーブライブラリがユーザーのアカウントとパスワード情報を直接インポートします。マスターライブラリとスレーブライブラリは、アカウントとパスワードのトランザクションを独自のGTIDに記録します。このとき、GTID方式を使用してレプリケーションを構築すると、エラーが発生します。スレーブライブラリにはすでにアカウントがあるため、マスターライブラリからスレーブライブラリに同期されたユーザー情報にエラーが発生し、ユーザーがすでに存在することを示します。この場合、マスターライブラリからコピーされたユーザーをスレーブライブラリに作成するためのSQL文をスキップする必要があります。

GTID モードでは、次の方法でトランザクションをスキップできます。

奴隷を停止します。
gtid_next=xxxxx を設定します。
始める;
専念;
gtid_next=自動を設定します。
スレーブを起動します。

ただし、トランザクションが多数ある場合は、1 つずつスキップすることはできません。同じエラーを一括でスキップする必要があります。これを処理する方法はいくつかあります。

MySQL レプリケーション問題の 3 つのパラメータの紹介

それぞれslave_skip_errorsパラメータまたはslave_exec_modeパラメータを調整します。

今日は、pt-slave-restart ツールを使用してトランザクションをスキップする別の方法を見ていきます。コマンドは次のとおりです。

./pt-スレーブ再起動 -uroot -proot123 --error-numbers=1062

このコマンドは分かりやすいです。エラー コードを明確に記述してスキップするだけです。多くの情報が出力されます。デフォルトでは、出力される内容は、タイムスタンプ、接続情報、リレー ログ ファイル、リレー ログの位置、および最後のエラー番号です。例えば:

2020-09-22T00:59:09 P=3306、h=192.168.7.194、p=...、u=ルート リレービン.000005 369 1032
2020-09-22T00:59:09 P=3306、h=192.168.7.194、p=...、u=ルート リレーbin.000005 726 1032
2020-09-22T00:59:09 P=3306、h=192.168.7.194、p=...、u=ルート リレービン.000005 1085 1032
2020-09-22T00:59:09 P=3306、h=192.168.7.194、p=...、u=ルート リレービン.000005 1444 1032
2020-09-22T00:59:09 P=3306、h=192.168.7.194、p=...、u=ルート リレービン.000005 1800 1032

--verbose オプションを使用してさらに情報を追加したり、--quiet オプションを使用してすべての出力を抑制したりできます。

注記:

マルチスレッド レプリケーション (slave_parallel_workers > 0) を使用する場合、pt-slave-restart はトランザクションをスキップできません。 pt-slave-restart は、GTID イベントの失敗したトランザクションを実行した特定のスレーブ スレッドを特定できません。

使用する必要がある場合は、マルチスレッドレプリケーションのワーカーを一時的にシャットダウンしてください。

pt-slave-restart のその他のパラメータについては、pt-slave-restart --help コマンドを使用して表示するか、次の共通パラメータ リストを参照してください。

--always : 手動で停止した場合でも、スレーブ スレッドを停止しません --ask-pass : パスワード入力が背後の開発者に覗き見されるのを防ぐために、-p コマンドを置き換えます --error-numbers : スキップするエラーを指定します。, で区切ることができます --error-text : エラー メッセージに基づいて一致してスキップします --log : ファイルに出力します --recurse : マスター側で実行し、スレーブ側を監視します --runtime : ツールが終了する前に実行される時間。デフォルトは秒、m=分、h=時間、d=日

--slave-user --slave-password : マスター側から実行するときに使用するスレーブ データベースのアカウントとパスワード --skip-count : 一度にスキップするエラーの数。大胆であれば、より大きな数を設定できます。指定しない場合、デフォルトは 1 です --master-uuid : カスケード レプリケーションの場合、上位または上位トランザクションのエラーをスキップするように指定します --until-master : 指定された master_log_pos、ファイル位置に到達したら停止します。形式: "file:pos"

--until-relay : 上記と同じですが、relay_logの位置に基づいて停止します

上記は、MySQL pt-slave-restart ツールの使用方法の紹介の詳細な内容です。MySQL pt-slave-restart ツールの使用方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません
  • mysql データベースmysql: [エラー] 不明なオプション ''--skip-grant-tables''
  • MySQL ビューの一貫性を確保する方法の詳細な説明 (チェック オプション付き)
  • MySQL に絵文字を保存するときに表示されるエラー メッセージ「java.sql.SQLException: 文字列値が正しくありません:'\xF0\x9F\x92\xA9\x0D\x0A...'」の解決方法
  • MySQL の NULL と空の文字列
  • ODBC経由でMySQLとPHPを任意のデータベースに接続する例
  • Ubuntu で apt-get を使用して mysql をインストールおよび完全にアンインストールする方法の詳細な説明
  • AES_ENCRYPT() と AES_DECRYPT() を使用して MySQL を暗号化および復号化する正しい方法の例
  • mysqlサーバーは--skip-grant-tablesオプションで実行されています
  • pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

<<:  flex-grow、flex-shrink、flex-basis、9グリッドレイアウトを理解する

>>:  クラウドネイティブテクノロジーKubernetesスケジューリングユニットポッドの使用の詳細な説明

推薦する

Nginx におけるサーバーとロケーションのマッチングロジックの詳細な理解

サーバーマッチングロジックNginx は、リクエストを実行するサーバー ブロックを決定するときに、サ...

Vueでlessを使用する問題を解決する

1. less依存関係をインストールします: npm install less less-loade...

シャドウソックスを使用してLAN透過ゲートウェイを構築する

目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...

HTMLのmarquee属性でテキストを踊らせる

構文: <marquee> …</marquee>モバイル属性マーキーを使用...

Nginx リバース プロキシ springboot jar パッケージ プロセス分析

Springboot プロジェクトをサーバーにデプロイする方法としては、war パッケージにパッケー...

ウェブデザインの発展と西洋建築の類似点は何でしょうか?

歴史は常に驚くほどうまく繰り返される。西洋建築とウェブデザインは、どちらも工学と芸術の組み合わせです...

フォーム送信時に追加のパラメータを渡すためのいくつかの一般的な方法

フォームを送信するときに、送信前に追加のパラメータが追加される状況が発生する場合があります。この問題...

MySQLはOracleシーケンスに似たソリューションを実装しています

MySQLはOracleのようなシーケンスを実装しているOracle は通常、主キー フィールドを処...

Javascript 操作メカニズム イベントループ

目次1. 4つのコンセプト1. JavaScriptはシングルスレッドです2. タスクキュー3. 同...

Tomcat サーバーの応答が遅い場合の解決策

1. 分析的思考1. 機械自身の理由を排除する2. サーバーパフォーマンス分析3. プロジェクト自体...

JavaScript のアンチシェイクとスロットリングの違いと実装

目次1. 手ぶれ補正2. スロットリング3. まとめ序文:フロントエンド開発者には、次の 2 つの要...

IE6 フォントを定義できません: 13px サイズは無効です。IE6 は自動的に大きいフォント ソリューションを表示します。

数日前、Web ページのモジュールを調整していたとき、ページのフォント サイズを 13px に設定し...

MySQLは2つの日付間の日数、月数、年数を計算します

MySQL 組み込みの日付関数 TIMESTAMPDIFF は、2 つの日付間の秒数、分数、時間数、...

HTMLテーブルレイアウトの実践的な使い方の詳しい説明

テーブルはいつ使用されますか?最近では、Web ページの全体的なレイアウトにテーブルが使用されること...