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 を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

推薦する

ログインスライダー検証を実装するJavaScript

この記事では、ログインスライダー検証を実装するためのJavaScriptの具体的なコードを参考までに...

私が遭遇したIE8の互換性に関する注意事項

1. IE8 の getElementById は id のみをサポートし、name はサポートしま...

MySQLのジョイントインデックス機能の分析と使用例

この記事では、例を使用して、MySQL 共同インデックスの機能と使用方法を説明します。ご参考までに、...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

Vue+Element UI でサマリーポップアップウィンドウを実装するプロセス全体

シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...

CSSのマッチング問題を解決する

問題の説明ご存知のとおり、CSS を記述する場合、HTML のクラスの定義または ID の定義に従っ...

JS での矢印関数と this の記述と理解

目次序文1. JSで関数を書く方法1. 通常の関数の書き方2. 矢印関数の書き方2. 通常の関数でこ...

MySQL 5.7.20 のインストールと設定方法のグラフィック チュートリアル (win10)

この記事では、MySQL 5.7.20のインストールと設定方法を参考までに紹介します。具体的な内容は...

初心者向け入門チュートリアル: ドメイン名の解決とバインディング

では、ドメイン名を登録して仮想ホストを購入した後、IE でドメイン名を入力して Web サイトを開く...

Linux で複数の mysql5.7.19 (tar.gz) ファイルをインストールする方法

LinuxでのMySQL-5.7.19バージョンの初心者向けの最初のインストールについては、前の記事...

検証コードケースのJavaScript実装

この記事では、検証コードの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

Linux で rpm パッケージを見つけるために CD をマウントする方法

前面に書かれたLinux を使用する際にソフトウェアをインストールする必要がある場合があります。もち...

Node.js のフロントエンドとバックエンドのインタラクションによるユーザーログインの実装の実践

目次1. プロジェクト要件次にコーディングを始める1. フロントエンドページを作成する(CSSスタイ...

.Net Core を使用して数千万のデータを MySQL にインポートする手順

目次事前準備実施方法: 1. 単一のデータを挿入する2. マージデータ挿入3. MySqlBulkL...

JDBC-idea で mysql をインポートして java jar パッケージに接続する (mac)

序文1. この記事ではMySQL 8.0バージョンを使用していますバージョン5.0と比較すると、パッ...