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

推薦する

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

Nginx でアンチホットリンクを設定するための手順を完了する

必要:通常、サイト側は、ウェブサイト上の動画や写真が盗まれるのを防ぎたいと考えています。結局のところ...

iframe に関するいくつかの発見と考察

この物語は、今日の予期せぬ発見から始まります。同社には複数のウェブサイトがある。友達リンクにはお互い...

CSS3 でクールなスライス画像カルーセル効果を実現

今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...

MySQL の遅いクエリとクエリ再構築方法の記録

序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...

Web デザイン ヘルプ: Web フォント サイズ データ リファレンス

<br />内容はインターネットから転載したものです。どこから見つけたのか忘れてしまいま...

Linux Centos8 CA証明書作成チュートリアル

必要なファイルをインストールする Yum インストール openssl-* -yデータベースインデッ...

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...

MySQLは集計関数を使用して単一のテーブルをクエリします

集計関数データセットに作用し、そのデータセットの値を返します。 count: 統計結果のレコード数。...

CentOS 6 ZLMediaKit のコンパイルとインストール分析

Centos6にZLMediaKitをインストールするZLMediaKit の作者は Ubuntu ...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

VMware Workstation 14 Pro は CentOS 7.0 をインストールします

VMware Workstation 14 ProにCentOS 7.0をインストールする具体的な方...

フォームのmethod=post/getの違い

フォームは、get と post の 2 つのデータ転送方法を提供します。どちらもデータを送信する方...

トークン生成と検証を実装するミニプログラム

目次プロセスデモミニプログラムバックエンドインターフェースプロセス各リクエストインターフェースは検証...

Linux での MySQL 5.1 および 5.7 のインストール チュートリアル

以下のコンテンツのオペレーティング システムは次のとおりです: Centos 6.7 yum で M...