はじめに:
MySQLは、実際には、マスタースレーブレプリケーションのための多くのオプションがあり、ライブラリから特にエンドでの複製ろ過最も共通のアーキテクチャマスター・スレーブのレプリケーションでは、我々は特定のテーブルまたはライブラリを無視するように、例えば、設定することができます。これらのフィルタリングオプションは、すべての行を再起動せずに変更することができます。この作品のオリジナルは、機能は非常に便利であることを感じる個人的に、関連する情報を読んで、最近ではあまり知らない、この記事では、コンテンツ共有のこの作品を提供します。
1.導入フィルタパラメータをコピーします。
私たちは、フィルタリングコピーするために異なるパラメータを設定するために知っておく必要がまず第一。レプリカフィルタは、ライブラリから端部に配置されている、または特定のコピーのライブラリーは、唯一のいくつかのテーブルには、いくつかのライブラリでは無視されたり、シートをコピーすることができます。これらは、異なるパラメータ、異なるパラメータの以下の短時間の効果によって制御されています。
- REPLICATE_DO_DB:指定データ同期のみライブラリ
- REPLICATE_IGNORE_DB:同期ライブラリを無視
- REPLICATE_DO_TABLE:同期はテーブルを指定します
- REPLICATE_IGNORE_TABLE:テーブルの同期を無視
- REPLICATE_WILD_DO_TABLE:指定同期のいくつかのテーブルには、ワイルドカードを使用することができます
- REPLICATE_WILD_IGNORE_TABLE:同期のいくつかのテーブルを無視し、あなたはワイルドカードを使用することができます
- REPLICATE_REWRITE_DB:ライブラリ端からライブラリ名を置き換え
これらのレプリカのフィルタパラメータまたは名前でよく理解、ただ見た目はおそらく、このパラメータの役割を理解することができます。デフォルトでは、これらのパラメータは、ライブラリの端からのマスタデータライブラリから送信されたすべてのデフォルトの同期レプリケーションからの主開口を設定されていません。
2.オプションをフィルタリングし、複製を変更
我々は一時的に、ライブラリからのレプリケーションポリシーを調整したいときは、これらのパラメータを設定することができます。私たちは、コンフィギュレーションファイルにパラメータをフィルタリングすることができ、その後、あなたはライブラリからアプリケーションが、インスタンスを再起動するには、この方法の必要性を再起動することができ、お勧めできません。MySQL5.7オンライン版を濾過をコピーするように設定することができます。しかし、まだ我々は、レプリケーションを停止する必要がありますが、インスタンスを再起動しないと、一時的な調整を容易にします。主な用途は、CHANGE、レプリケーションフィルタステートメント、次の簡単なテストすることです:
# 默认未设置复制过滤
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.3.16
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 35198
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 910
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 35198
# 设置忽略db1库的复制
mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (db1);
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.3.16
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 35198
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 910
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: db1
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 35198
# 主库创建db1测试从库是否同步
mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
6 rows in set (0.00 sec)
# 查看从库状态
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.3.16
Master_User: repl
Master_Port: 33061
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 35383
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 1095
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: db1
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 35383
# 取消复制过滤参数
mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)
mysql> CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = ();
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.3.16
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 35383
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 1095
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 35383
我々は、単にオンラインフィルタリングオプションをコピーする修正された方法での使用CHANGE複製FILTER文を実証上には、これらの列挙されたフィルタパラメータは、ステートメントを変更するために使用することができますが、いくつかのオプションは相互に排他的であることに注意してください。次のデモンストレーション構文公式文書を与え、適切なパラメータを設定するには、実際のニーズに基づいている必要があります。
CHANGE REPLICATION FILTER filter[, filter][, ...]
filter:
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)
db_list:
db_name[, db_name][, ...]
tbl_list:
db_name.table_name[, db_table_name][, ...]
wild_tbl_list:
'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...]
db_pair_list:
(db_pair)[, (db_pair)][, ...]
db_pair:
from_db, to_db
要約:
この資料では、設定されたフィルタパラメータへのニーズを持っている場合は、異なるフィルタパラメータは、異なる目的を持っているフィルタリングオプションをコピーする方法を変更するオンラインどのように他のライブラリを説明し、徹底的にテストしなければならない提案は、特定のパラメータの設定に影響を与える可能性があります表をコピーします。あなたは永久たい場合は、力へのライブラリーからその行を変更して、設定ファイルに追加し、再起動したりすることができます。