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

推薦する

HTML で水平ナビゲーション構造を設定する方法

この記事では、主にリスト構造を使用して水平ナビゲーション構造を設定する 2 つの方法を紹介します。こ...

JenkinsのLinuxインストール手順と各種問題解決(ページアクセス初期化パスワード)

1. Java環境jdk1.8を準備するJavaがインストールされているかどうかを確認します。イン...

CSSで特殊なグラフィックを描く方法

1. 三角形境界線の設定 コード: 幅: 300ピクセル; 高さ: 300px; 背景: 赤; 境界...

Docker で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード

目次1. 概要1. 原則2. 実装3. スレーブインスタンスを作成する4. マスタースレーブ構成要約...

Vueでブラウザタイトルを動的に設定する方法の詳細な説明

目次ナンセンス文章最初ルーター/index.js 2番目1. プラグインをインストールする2.mai...

Vue コンポーネントの切り替え、動的コ​​ンポーネント、コンポーネントのキャッシュについて

目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...

HTML の表のフレームとルール属性の詳細な説明

テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...

Vue で CSS カスタム変数を使用する方法

目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

一定時間後にNavicatがデータベースから自動的に切断される問題の解決方法

これは、データベース サーバーが、接続が多すぎるのを避けるために、一定時間非アクティブな状態が続くと...

a タグをクリックして入力ファイルのアップロードダイアログボックスを表示する方法

htmlコードをコピーコードは次のとおりです。 <SPAN class=tag><...

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

Nginx 構成検出サービスのステータスを実装する方法

1. チェックステータスモジュールがインストールされているかどうかを確認します。 [root@loc...

Angular環境構築と簡単な体験のまとめ

Angular入門Angular は、Google が開発したオープンソースの Web フロントエン...