基本的な概要MySQL にはレプリケーション同期を指定する 2 つの方法があることがわかっています。
GTID ベースの方法は、1 つのマスターと複数のスレーブのアーキテクチャでのマスターとスレーブの切り替えに明らかな利点があり、日常的なレプリケーションの異常のトラブルシューティングにも便利です。MySQL 5.7.6 以降では、GTID モードの動的なオープンとクローズがサポートされています。パラメータ GTID_MODE には次の値があります。
GTIDをオンラインで有効にする1. GTID検証ENFORCE_GTID_CONSISTENCYをWARNに設定するこの操作の目的は、マスターデータベースで実行されるSQL文がGTID整合性チェックに違反することを許可し、マスターデータベースのエラーログに警告レベルのログのみをリマインダーとして出力することです。これは、レプリケーションモードをGTIDモードに変更した場合、GTIDのいくつかの制限によりアプリケーションが異常なエラーを引き起こさないことを考慮するためです。 たとえば、CREATE TABLE AS SELECT 構文は GTID モードではサポートされておらず、ENFORCE_GTID_CONSISTENCY が WARN に設定されている場合、エラー ログには直接的なエラー メッセージではなく、エラー メッセージのみが表示されます。 ## この操作は、マスター データベースとスレーブ データベースの両方で実行されます。 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; 2. GTID検証ENFORCE_GTID_CONSISTENCYをONに設定する一定期間(厳しい状況では 1 日以上)観察した後、前の手順のエラー ログに該当する警告情報が表示されていないことを確認してから、GTID 整合性チェックを正式に有効にします。ON に設定すると、CREATE TABLE AS SELECT ステートメントを再度実行すると、エラーが直接報告されます。 ## この操作はマスター データベースとスレーブ データベースの両方で実行されます SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; 3. GTID_MODEをOFF_PERMISSIVEに設定するこの操作は遷移属性であり、新しく生成されたトランザクションがまだ匿名トランザクションであることを示しますが、GTID トランザクションを複製および同期することもできます。 ## この操作は、マスター データベースとスレーブ データベースの両方で実行されます。 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 4. GTID_MODEをON_PERMISSIVEに設定するこの操作はまだ移行属性であり、新しく生成されたすべてのトランザクションは GTID トランザクションであることを意味しますが、匿名トランザクションも複製できます。 ## この操作はマスター データベースとスレーブ データベースの両方で実行されます SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; 5. (キーポイント) 匿名トランザクションが再生されることを確認するこの手順の目的は、完全な GTID モードへの正式な変換の前にすべての古い匿名トランザクションが再生され、GTID_MODE が ON に設定されている場合に、残りの匿名トランザクションによってレプリケーション同期エラーが発生しないようにすることです。これを確認するには、次の 2 つの方法があります。 ## この操作はスレーブ データベースでのみ実行できます。## 方法 1: ステータス値によって出力される匿名トランザクションの数が 0 であることを確認します (注: 0 が表示されている場合は、ステータス値が後で 0 から 0 より大きい値に変わったとしても、変換が完了したことを意味します) 'ONGOING_ANONYMOUS_TRANSACTION_COUNT' のようなステータスを表示します。 ## スレーブ データベースでこのステートメントを複数回実行します。## 方法 2: ビュー LAST_SEEN_TRANSACTION をクエリして、現在同期されているトランザクションにまだ ANONYMOUS トランザクションがあるかどうかを確認します。select * from performance_schema.replication_applier_status_by_worker; 匿名トランザクションの数が0であることを確認してください 再生スレッドによって再生されるすべてのトランザクションがGTIDトランザクションであることを確認する 6. ログ切り替えのラウンドをトリガーする FLUSH LOGSこの操作の目的は、マスター データベースでバイナリ ログのローテーションをトリガーして、新しく生成されたバイナリ ログがすべて GTID を含むトランザクションになるようにすることです (バイナリ ログに 2 種類のトランザクション ログが含まれることを防ぐため)。 ## この操作はメイン データベース FLUSH LOGS でのみ実行できます。 7. GTID_MODEを正式にオンにするGTIDを正式に開始 ## この操作はマスター データベースとスレーブ データベースの両方で実行されます SET @@GLOBAL.GTID_MODE = ON; @@GTID_MODE、@@ENFORCE_GTID_CONSISTENCY を選択します。 8. GTIDパラメータの永続性を確保するために設定ファイルを変更する再起動が失敗しないようにするには、my.cnf 構成ファイルに GTID パラメータを追加します。この操作は最初の手順でも実行できます。 ## この操作は、gtid-mode = ON のマスターデータベースとスレーブデータベースの両方で実行されます。 強制GTID一貫性 = 1 9. レプリケーションモードをGTIDモードに変更するレプリケーションモードをPOSベースからGTIDベースに変更する ## レプリケーションを停止します STOP SLAVE; ## GTID モードに変更 CHANGE MASTER TO MASTER_AUTO_POSITION = 1; ## レプリケーションを開始します START SLAVE; ## レプリケーション同期ステータスを確認する SHOW SLAVE STATUS\G GTIDをオンラインで無効にするこの方法は、GTID をオンラインで有効にする逆の操作に似ています。以下では、詳細な説明はせずに、手順と特定のコマンドのみを説明します。
1. レプリケーションをPOSポイントベースに変更する奴隷を停止します。 スレーブステータスを表示\G ## show slave status\G から Master_Log_File と Exec_Master_Log_Pos を取得し、CHANGE MASTER TO に入力します。 マスター_自動位置 = 0、 MASTER_LOG_FILE='mysql-bin.000017', マスターログPOS = 224126137; スレーブを起動します。 スレーブステータスを表示\G 2. GTID_MODEをON_PERMISSIVEに設定する## この操作はマスター データベースとスレーブ データベースの両方で実行されます SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; 3. GTID_MODEをOFF_PERMISSIVEに設定する## この操作は、マスター データベースとスレーブ データベースの両方で実行されます。 SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 4. (重要なポイント) GTIDトランザクションの再生が完了していることを確認するGTID_OWNED ステータス変数が null になり、replication_applier_status_by_worker テーブル内のすべてのトランザクションが匿名トランザクションに変換されることを確認します。 ## この操作はスレーブ データベースで実行できます SELECT @@GLOBAL.GTID_OWNED; performance_schema.replication_applier_status_by_worker から * を選択します。 5. FLUSH LOGSのトリガー## この操作はメイン データベース FLUSH LOGS で実行できます。 6. GTID_MODEをOFFに設定する## この操作はマスター データベースとスレーブ データベースの両方で実行されます。 SET @@GLOBAL.GTID_MODE = OFF; 7. ENFORCE_GTID_CONSISTENCYをOFFに設定する## この操作は、マスター データベースとスレーブ データベースの両方で実行されます。 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = OFF; 8. my.cnf設定ファイル内のGTID関連パラメータをOFFに変更します。## この操作はマスターデータベースとスレーブデータベースの両方で実行されます。gtid-mode = OFF 強制GTID一貫性 = 1 コマンドの簡略化1. GTIDをオンラインで有効にするコマンドがマスターデータベースで実行されるかスレーブデータベースで実行されるかを判断する @@GLOBAL.ENFORCE_GTID_CONSISTENCY を WARN に設定します。 @@GLOBAL.ENFORCE_GTID_CONSISTENCY を ON に設定します。 @@GLOBAL.GTID_MODE を OFF_PERMISSIVE に設定します。 @@GLOBAL.GTID_MODE を ON_PERMISSIVE に設定します。 'ONGOING_ANONYMOUS_TRANSACTION_COUNT' のようなステータスを表示します。 performance_schema.replication_applier_status_by_worker から * を選択します。 ログをフラッシュします。 @@GLOBAL.GTID_MODE を ON に設定します。 ## 設定ファイルの変更 gtid-mode = ON 強制GTID一貫性 = 1 ## レプリケーションモードをPOSベースからGTIDベースに変更する 奴隷を止めろ。 MASTERをMASTER_AUTO_POSITION = 1に変更します。 スレーブを起動します。 スレーブステータスを表示\G 2. GTIDをオンラインで無効にするコマンドがマスターデータベースで実行されるかスレーブデータベースで実行されるかを判断する 奴隷を停止します。 スレーブステータスを表示\G ## show slave status\G から Master_Log_File と Exec_Master_Log_Pos を取得し、CHANGE MASTER TO に入力します。 マスター_自動位置 = 0、 MASTER_LOG_FILE='mysql-bin.000017', マスターログPOS = 224126137; スレーブを起動します。 スレーブステータスを表示\G @@GLOBAL.GTID_MODE を ON_PERMISSIVE に設定します。 @@GLOBAL.GTID_MODE を OFF_PERMISSIVE に設定します。 @@GLOBAL.GTID_OWNED を選択します。 performance_schema.replication_applier_status_by_worker から * を選択します。 ログをフラッシュします。 @@GLOBAL.GTID_MODE を OFF に設定します。 @@GLOBAL.ENFORCE_GTID_CONSISTENCY を OFF に設定します。 ## my.cnf 設定ファイルの GTID 関連パラメータを OFF に変更します gtidモード = オフ 強制GTID一貫性 = 1 参考リンクレプリケーションモードの変更 レプリケーションモードの変更 レプリケーションモードの変更 上記は、MySQL オンラインで GTID モードを有効または無効にする方法について編集者が紹介したものです。皆様のお役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Vue + Axios リクエストインターフェース方式とパラメータ渡し方式の詳しい説明
>>: HTML フォーマットの json のサンプルコード
この記事では、画像の一時停止を実現するためのjQueryプラグインの具体的なコードを参考までに共有し...
各浮動小数点型のストレージ サイズと範囲は、次の表に示されています。タイプサイズ範囲(符号付き)範囲...
この記事の例では、星のきらめき効果を実現するためのjsの具体的なコードを共有しています。具体的な内容...
目次モードパラメータハッシュ履歴ハッシュ履歴.push()ハッシュ履歴.replace()アドレスバ...
目次導入複数の異なるハッシュを区別するハッシュチャンクハッシュコンテンツハッシュjs キャッシュの実...
インターネット上には Linux サーバーを監視するためのツール、コンポーネント、プログラムが多数あ...
SVG (Scalable Vector Graphics)は、XML 構文に基づいた画像形式です。...
Web フォームは、訪問者と Web サイト所有者間の主要なコミュニケーション チャネルです。フィー...
CSS ファイルでは、背景を使用する、つまり背景画像を追加する必要がある場合があります。これは通常、...
問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...
Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...
Web ページでは、あるページに情報を入力すると、別のページにジャンプし、入力した情報が別のページ...
viteを使用してvue3プロジェクトを構築するターミナルで次のコマンドを実行すると、Vite を使...
以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...
目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...