序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションです。実際、マスター スレーブ レプリケーションには、特にスレーブ側で多くのオプションがあります。テーブルやデータベースを無視するなどのレプリケーション フィルターを設定できます。これらのフィルター オプションは、再起動せずにオンラインで変更できます。以前はこれについてあまり知りませんでしたが、最近関連情報を読み、個人的にこの機能は非常に便利だと思いました。この記事ではその内容を皆さんと共有します。 1. コピーフィルタパラメータの概要 まず、レプリケーション フィルターを設定するためのさまざまなパラメーターを理解する必要があります。レプリケーション フィルタリングはスレーブ データベース側で設定されます。特定のデータベースまたはテーブルのみをコピーしたり、特定のデータベースまたはテーブルのコピーを無視したりできます。これらはすべて、異なるパラメータによって制御されます。以下では、さまざまなパラメータの機能について簡単に紹介します。
これらのレプリケーション フィルター パラメーターは理解しやすいです。名前を見るだけで、パラメーターの機能を大まかに理解できます。デフォルトでは、これらのパラメータは設定されていません。マスター スレーブ レプリケーションを有効にすると、スレーブ データベースはデフォルトでマスター データベースから送信されたすべてのデータを同期します。 2. コピーフィルターのオプションを変更する スレーブ ライブラリのレプリケーション戦略を一時的に調整する場合は、上記のパラメータを設定できます。フィルタリング パラメータを構成ファイルに書き込んでからスレーブ ライブラリを再起動して適用することもできますが、この方法ではインスタンスを再起動する必要があるため、推奨されません。 MySQL バージョン 5.7 では、レプリケーション フィルタリングをオンラインで設定できます。ただし、レプリケーションを停止する必要はありますが、インスタンスを再起動する必要がないため、一時的な調整には便利です。 CHANGE REPLICATION FILTER ステートメントが主に使用されます。簡単なテストをしてみましょう。 # レプリケーションフィルタリングはデフォルトでは設定されていませんmysql> show slave status\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 10.0.3.16 マスターユーザー: repl マスターポート: 3306 接続再試行: 60 マスターログファイル: binlog.000004 読み取りマスターログ位置: 35198 リレーログファイル: リレーbin.000002 リレーログ位置: 910 リレーマスターログファイル: binlog.000004 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 35198 # db1 ライブラリのレプリケーションを無視するように設定します。mysql> STOP SLAVE SQL_THREAD; クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> レプリケーション フィルターを変更します。REPLICATE_IGNORE_DB = (db1); クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> スレーブ SQL_THREAD を開始します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql>スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 10.0.3.16 マスターユーザー: repl マスターポート: 3306 接続再試行: 60 マスターログファイル: binlog.000004 読み取りマスターログ位置: 35198 リレーログファイル: リレーbin.000002 リレーログ位置: 910 リレーマスターログファイル: binlog.000004 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: db1 テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 35198 # マスター データベースに db1 を作成して、スレーブ データベースが同期されているかどうかをテストします。mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8; クエリは正常、1 行が影響を受けました (0.01 秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |db1| |mysql | | パフォーマンススキーマ | |システム| |テストデータベース| +--------------------+ セット内の 6 行 (0.00 秒) # スレーブ データベースのステータスを表示します。mysql> show databases; +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| |テストデータベース| +--------------------+ セット内の行数は 5 です (0.00 秒) mysql>スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 10.0.3.16 マスターユーザー: repl マスターポート: 33061 接続再試行: 60 マスターログファイル: binlog.000004 読み取りマスターログ位置: 35383 リレーログファイル: リレーbin.000002 リレーログ位置: 1095 リレーマスターログファイル: binlog.000004 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: db1 テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 35383 # レプリケーション フィルター パラメーターをキャンセルします。mysql> STOP SLAVE SQL_THREAD; クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> レプリケーション フィルターの変更 REPLICATE_IGNORE_DB = (); クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> スレーブ SQL_THREAD を開始します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql>スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 10.0.3.16 マスターユーザー: repl マスターポート: 3306 接続再試行: 60 マスターログファイル: binlog.000004 読み取りマスターログ位置: 35383 リレーログファイル: リレーbin.000002 リレーログ位置: 1095 リレーマスターログファイル: binlog.000004 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 35383 CHANGE REPLICATION FILTER ステートメントを使用して、レプリケーション フィルター オプションをオンラインで変更する方法を簡単に説明しました。リストされているすべてのフィルター パラメーターはこのステートメントを使用して変更できますが、一部のオプションは相互に排他的であることに注意してください。実際のニーズに応じて適切なパラメータを設定する必要があります。以下は公式ドキュメントのサンプル構文です。 レプリケーション フィルターの変更 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) db_リスト: db_name[, db_name][, ...] テーブルリスト: db_name.table_name[, db_table_name][, ...] ワイルドテーブルリスト: 'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...] db_ペアリスト: (db_pair)[, (db_pair)][, ...] db_ペア: から_db、へ_db 要約: この記事では、レプリケーション フィルター オプションをオンラインで変更する方法を紹介します。フィルター パラメーターによって用途が異なります。フィルター パラメーターを実際に設定する必要がある場合は、包括的なテストを実施することをお勧めします。一部のパラメーター設定は、他のデータベース テーブルのレプリケーションに影響を与える可能性があります。永続的に有効にしたい場合は、オンラインで変更してから構成ファイルに追加して、スレーブ ライブラリを再起動した後も有効になるようにすることができます。 上記は、MySQL のマスタースレーブレプリケーションオプションをオンラインで変更する方法の詳細です。MySQL のマスタースレーブレプリケーションの変更の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: UbuntuはCUDAの複数のバージョンをインストールし、いつでも切り替えることができます
この記事では、CSS3 を使用した Web サイトの商品表示の効果を紹介し、皆さんと共有します。詳細...
編集者注: この記事は、Teambition チームの @娄昊川 が寄稿したものです。Teambit...
システム提供のMySQLをアンインストールする1. MySQLがシステムにインストールされているかど...
目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...
選択ドロップダウン リスト フォームは誰もがよく知っているかもしれませんが、デフォルトのドロップダウ...
目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...
1. mysql をインストールします。次のコマンドを実行して、YUM ソースを更新します。 rpm...
私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...
1. ワニスの紹介Varnish は、高性能なオープンソースのリバースプロキシサーバーおよび HTT...
MYSQL5.7.17 が MAC で接続できない問題。SQLBench_community 6.3...
概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...
私は現在、自分自身の小さなプログラム プロジェクトに取り組んでいます。プロフェッショナルなフロントエ...
この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...
テーブル ヘッダーでは、明るい境界線の色を個別に定義できます。基本的な構文<TH ボーダーカラ...
1.前面に書きます:軽量仮想化テクノロジーとして、Docker には継続的インテグレーション、バージ...