MySQLフィルタリングレプリケーションのアイデアの詳細な説明

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

mysql フィルター レプリケーション

2つのアイデア:

  • メインライブラリのバイナリログに実装されています (推奨されません。メインライブラリのバイナリログが完全であることを確認してください)
  • ライブラリのSQLスレッドから実装

したがって、バイナリログの整合性を可能な限り保証する必要があるため、マスター/スレーブ フィルタリング レプリケーションは使用せず、スレーブ データベースでのみ使用するようにしてください。

メインデータベースに実装

マスター側のバイナリ ログの整合性を保証するために、バイナリ ログ フィルタリングは使用されません。

メインライブラリの構成パラメータ:

# 設定ファイルに binlog-do-db=db_name を追加します。# ホワイトリストを定義し、指定されたデータベースに関連する操作のみをバイナリ ログに記録します。メイン データベースがクラッシュした場合、指定されたデータベースの内容のみが復元されます。ログが不完全になるため、メイン サーバーではこの方法は推奨されません。
binlog-ignore-db=db_name #ブラックリストを定義します。無視として定義されたデータベースへの書き込み操作はバイナリ ログに記録されません。

ライブラリから実装

設定ファイルをダウンロードできます

REPLICATE_DO_DB = (db_list) #コピーするライブラリをフィルターしますREPLICATE_IGNORE_DB = (db_list) #コピーしないライブラリREPLICATE_DO_TABLE = (tbl_list) #テーブルをフィルターしますREPLICATE_IGNORE_TABLE = (tbl_list) #フィルターされたテーブルを無視しますREPLICATE_WILD_DO_TABLE = (wild_tbl_list) #通常の一致に従ってテーブルをフィルターしますREPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list) #通常の一致に従ってこれらのテーブルのフィルターを無視しますREPLICATE_REWRITE_DB = (db_pair_list)
#ソースデータベースのdb1のステートメントをスレーブデータベースのdb2に書き換えます
レプリケーション フィルターの変更 REPLICATE_REWRITE_DB = ((db1, db2));

文法:

公式ウェブサイトの構文リファレンス: https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html

レプリケーション フィルターの変更 filter[, filter][, ...]

フィルター: {
    REPLICATE_DO_DB = (db_list)
  | REPLICATE_IGNORE_DB = (db_list)
  | REPLICATE_DO_TABLE = (tbl_list)
  | REPLICATE_IGNORE_TABLE = (テーブルリスト)
  | REPLICATE_WILD_DO_TABLE = (ワイルドテーブルリスト)
  | REPLICATE_WILD_IGNORE_TABLE = (ワイルドテーブルリスト)
  | REPLICATE_REWRITE_DB = (db_pair_list)
}
# ライブラリからフィルターされたレプリケーションを実装します stop slave sql_thread;
レプリケーションフィルターを変更します。replicate_do_db=(db);
​ スレーブ sql_thread を開始します。

# フィルターされたレプリケーションをキャンセルします stop slave sql_thread;
​ レプリケーション フィルターを変更します。replicate_do_db=();
​ スレーブ sql_thread を開始します。

いくつかの質問

マスター データベースはテーブルを削除しますが、スレーブ データベースにはこのテーブルがないため、スレーブ データベースの SQL スレッドが閉じられます。

または、マスターとスレーブは正常ですが、スレーブが誤ってテーブルを削除し、その後マスターがそのテーブルを削除します。すると、スレーブは存在しないテーブルを削除し、エラーを報告して、SQL スレッドを終了させます。

解決策: この手順をスキップする

解決策: スレーブ SQL スレッドの誤った操作手順をスキップします。stop slave sql_thread;

#Executed_Gtid_Setを見つけて19まで実行
gtid_next='94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:20' を設定し、gtid を次のトランザクションに割り当てて、開始し、コミットします。
gtid_next=automatic に設定すると、システムが自動的に gtid を割り当てます。
スレーブ sql_thread を開始します。

MySQL フィルタリングとレプリケーションのアイデアの詳細な説明に関するこの記事はこれで終わりです。MySQL フィルタリングとレプリケーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?
  • MySQL 外部キー (FOREIGN KEY) の使用例の詳細な説明
  • MySQL のストアド プロシージャを使用して 100 万件のレコードをすばやく生成する方法
  • Pythonインターフェース自動化はpymysqlデータベース操作プロセスを簡単に分析します
  • MySQL トランザクション制御フローと ACID 特性
  • MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード
  • MySQL で重複時間を削除して時間差を計算する実装
  • MySQL データベースでは、datetime、bigint、timestamp を使用して時間の選択を表します。時間を保存するのに最も効率的なのはどれですか?
  • MySQL グローバルロックとテーブルレベルロックの具体的な使用法
  • Redo ログと Undo ログに基づく MySQL クラッシュ回復の分析

<<:  画像ファイルの形式とその選択方法

>>:  CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

推薦する

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

よく使われるCSSスタイル(レイアウト)の詳しい説明

新しいCSS3プロパティと互換性ありCSS3では、プラグインprefixfree.min.jsを使用...

docker を使用して Spring Boot をデプロイし、Skywalking に接続する方法

目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...

ポップアップ効果を実現するにはjsを使用します

この記事の例では、ポップアップ効果を実現するためのjsの具体的なコードを参考までに共有しています。具...

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

ルート変更を監視するJavaScriptの詳細な説明

目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...

ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

私がこれまで携わってきた多くのプロジェクトでは、基本的に避けられない悪循環がありました。それは、ホー...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

SQL 最適化チュートリアル: IN クエリと RANGE クエリ

序文「High Performance MySQL」では、インデックスでは範囲フィールドの後の部分が...

一般的な nginx コマンドをシェル スクリプトに組み込む方法の詳細な説明

1. nginxシェルスクリプトを保存するフォルダを作成する /usr/local/タスク/ngin...

MySQLトリガーの使用と注意すべき点

目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...

Js における new 演算子の役割の詳細な説明

序文Js は現在最も一般的に使用されているコード操作言語であり、その中でも new 演算子は特によく...

Linux でリモート サーバー ファイルの状態を表示する方法

以下のように表示されます。 test コマンドはファイルが存在するかどうかを判断します。 ssh u...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...

MySQL 8.0.11 Community Green Edition の Windows 用インストール手順図

このチュートリアルでは、インストールに最新の MySQL コミュニティ グリーン バージョンである ...