01 問題の説明実稼働環境では、MySQL のマスター スレーブ レプリケーションが切断される状況によく遭遇します。マスター スレーブ レプリケーションが切断された場合、通常、問題を解決する手順は次のとおりです。 1. データベースで show slave status を使用して、レプリケーション切断の直感的な理由を確認し、現在のレプリケーション場所を記録します。 2. エラーログをチェックして、レプリケーション切断の理由をより詳しく分析します。 3. マスターとスレーブのレプリケーション関係を修復する 4. レプリケーション関係を修復できない場合は、スレーブデータベースを再構築する必要があります。 02 ソリューションマスターとスレーブのレプリケーション関係が壊れる理由はさまざまです。アプリケーションが使用できず、すぐに復旧する必要があるため、原因を客観的に分析する時間がない場合があります。この場合、レプリケーションの中断の問題とサービスの可用性の間でトレードオフを行い、それに応じて対処する必要があります。 マスターとスレーブ間のレプリケーションの中断を解決する一般的な方法は次のとおりです。 1. 他のスレーブライブラリを見つけてすぐに置き換えるこの方法では、アプリケーションに少なくとも 1 つのマスターと 2 つのスレーブのアーキテクチャが必要です。スレーブ ライブラリの 1 つに問題が発生した場合、他のスレーブ ライブラリをすぐにオンラインにしてアプリケーション アクセスを復元し、障害が発生したスレーブ ライブラリの問題の具体的な原因を後で調査できます。 2. コピー失敗のエラーをスキップする場合によっては、マスターとスレーブ間のレプリケーションが切断される理由を特定できます。たとえば、マスターにスレーブよりも 1 つ多いデータベース db_1 がある場合、マスターで drop database db_1 を実行すると、スレーブのレプリケーションは確実に切断されます。この場合は、トランザクションをスキップすることで解決できます。 方法 1: (現在のトランザクションを直接スキップする)GTID モードでは、次のコマンドで解決できます。 mysql> スレーブを停止します。 mysql> SET GTID_NEXT='xxxxxx:yyy'; ----- スキップするgtidイベントを設定します mysql> BEGIN;COMMIT; mysql> GTID_NEXT='AUTOMATIC' を設定します。 mysql>スレーブを起動します。 非 GTID モードでは、次のコマンドで解決できます。 奴隷を停止します。 sql_slave_skip_counterを1に設定します。 スレーブを起動します。 方法2: (新しい場所を指定する)バイナリログ分析を通じて次のトランザクションの具体的な場所がわかっている場合は、次のトランザクションの具体的な場所を指定しても解決できます。 GTID モードの場合: mysql> スレーブを停止します。 mysql> マスターをリセットします。 mysql> SET @@GLOBAL.GTID_PURGED ='xxxxxxx:yyyyyy' ----- は、これらの gtid イベントが実行されたことを示します。mysql> START SLAVE; GTID_PURGED は GLOBAL でなければならないことに注意してください。上記のコマンドは、set global gtid_purged='xxx:yyy' と記述することもできます。 非GTIDモードの場合: 奴隷を停止します。 マスターをmaster_log_file='mysql-bin.001360'、master_log_pos=676383371に変更します。 スレーブを起動します。 方法3: pt-slave-restartツールトランザクションをスキップしても切断が続く場合 (たとえば、スレーブ データベースで 100 個のデータを削除したが、マスター データベースでこれらの 100 個のデータを更新する場合)、切断された位置を継続的にスキップできる pt-slave-restart ツールを使用できます。 使い方は次のとおりです: pt-slave-restart -h 10.xxx.xxx.xxx -P ポート -u ユーザ -p パスワード 並列レプリケーションを使用すると、pt-slave-restart がエラーを報告する場合があります。このとき、並列レプリケーションをシングルスレッド レプリケーションに変更してから、pt-slave-restart ツールを使用できます。次の記事を参照してください。 pt-slave-restart ツール 方法4: パラメータslave_exec_modeを設定するこのパラメータは、マスタースレーブレプリケーションプロセス中のスレーブライブラリ実行モードを変更できます。厳密モードに設定すると、エラーが報告されるとすべてのレプリケーションが停止します。べき等モードに設定すると、特定のエラー番号のエラーはスキップされます。コマンドは次のとおりです。 グローバルslave_exec_modeをidempotentに設定する 詳細については、前回の記事を参照してください。 MySQL レプリケーション問題の 3 つのパラメータの紹介 この記事には、レプリケーション エラーをスキップするための他の 2 つのパラメーター、slave_skip_errors と sql_slave_skip_counter があります。 3. バックアップを使用してスレーブライブラリを再構築するこの方法は多くのシナリオでは使用されません。通常、この方法は、スレーブ ライブラリが使用できないか、マスター ライブラリと同期できない場合にのみ検討されます。たとえば、マスター ライブラリでマスター リセット操作が実行され、すべてのバイナリ ログがクリアされます。この場合、スレーブ ライブラリは正しいバイナリ ログを取得して読み取ることができず、レプリケーションが切断されます。この場合、スレーブ ライブラリを再構築することが唯一の方法である可能性があります。 上記は、MySQL マスター スレーブ レプリケーション切断の一般的な修復方法の詳細です。MySQL マスター スレーブ レプリケーション切断の修復の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ユニアプリプロジェクトでのウォーターフォールレイアウトの実装
>>: JavaScriptの厳密モードが8進数をサポートしていない問題の説明
まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...
フレーム構造タグ <frameset></frameset>フレームを使用す...
dom要素に新しい子要素を追加し、新しく追加された新しい要素がコンテナーのスコープを超えた場合は、次...
序文通知バー コンポーネントは、比較的一般的なコンポーネントです。基本的に、すべてのサイトにこのよう...
正解useRouterの使用: // ルーターパス: "/user/:uid" ...
問題の説明(キープアライブとは何か)キープアライブ 名前の通り、アクティブな状態を維持します。誰が活...
典型的なレイアウト例上の写真のように、正方形の真ん中に一定の隙間があり、その隙間は固定されています。...
1. コマンドの紹介時間は、コマンドの実行に費やされた時間や関連するシステム リソース、その他の情報...
説明と紹介Docker inspect は Docker クライアントのネイティブ コマンドであり、...
古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...
まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...
序文日常の開発では、サーバー上でさまざまなテキストやログの表示操作を実行する必要があることがよくあり...
多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...
目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...
HTML に CSS を追加するにはどうすればいいですか? HTML で CSS を設定する方法は ...