序文: 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の複数のバージョンをインストールし、いつでも切り替えることができます
目次1. JavaScript における数値2. Javascript の Math オブジェクト1...
この記事では、例を使用して MySQL プロセス関数の一般的な使用方法を説明します。ご参考までに、詳...
ミックスインメソッド: ブラウザはコンパイルできません: 以前のバージョンのsassでは上記の記述方...
方法1: Pycharmをダウンロードしてインストールするダウンロードアドレス: https://w...
この記事では、ユーザーのログイン切り替えを実現するためのVueの具体的なコードを例として紹介します。...
1. なぜこの記事を書くのですか?重複リクエストの処理に関する記事をたくさん読んだことがあるでしょう...
この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...
Web アプリケーションの開発とデバッグを行う際には、テストのためにブラウザのキャッシュをクリアした...
Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...
<em></em> などのフレーズ要素を使用すると、意図した視覚スタイルを維...
1. ROW_NUMBER()定義: ROW_NUMBER() 関数は、select によってクエリ...
ミニプログラムデータキャッシュ関連知識データ キャッシュ: データをキャッシュして、アプレットを終了...
アプリケーションが牛のように遅い理由は数多くあります。ネットワーク、システム アーキテクチャ、または...
多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...
目次1. クエリの最適化1. MySQLチューニングの概要2. 小さなテーブルが大きなテーブルを動か...