MYSQL之過濾複製
阿新 • • 發佈:2020-07-26
1.過濾複製的方式
1.檢視master status
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 305 | 白名單 | 黑名單 | | +------------------+----------+--------------+------------------+-------------------+
2.配置白名單
#從庫
replicate-do-db=test # test庫
replicate-do-table=test.t1 # test庫下的t1表
replicate-wild-do-table=test.t* # test庫下t開頭的表
# 三種只能選一種,多個庫(表)配置可以多寫一行配置,或者','。
#主庫
binlog-do-db=test
binlog-do-table=test.t1
binlog-wild-do-table=test.t*
3.配置黑名單
#從庫 replicate-ignore-db=test replicate-ignore-table=test.t1 replicate-wild-ignore-table=test.t* #主庫 binlog-ignore-db=test binlog-ignore-table=test.t1 binlog-wild-ignore-table=test.t*
2.配置過濾複製
1.主庫建立兩個庫 mysql> create database wzry; mysql> create database lol; 2.第一臺從庫配置 [root@db02 ~]# vim /etc/my.cnf [mysqld] server_id=2 replicate-do-db=wzry [root@db02 ~]# systemctl restart mysqld #檢視主從狀態 mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: wzry 3.配置第二臺從庫 [root@db03 ~]# vim /etc/my.cnf [mysqld] server_id=2 replicate-do-db=lol [root@db03 ~]# systemctl restart mysqld #檢視主從狀態 mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: lol 4.驗證過濾複製 #1.主庫操作 mysql> use wzry mysql> create table cikexintiao(id int); mysql> use lol mysql> create table fuleierzhuode(id int); #第一臺從庫檢視 mysql> use wzry mysql> show tables; +----------------+ | Tables_in_wzry | +----------------+ | cikexintiao | +----------------+ mysql> use lol mysql> show tables; #第二臺從庫檢視 mysql> use wzry mysql> show tables; mysql> use lol mysql> show tables; +---------------+ | Tables_in_lol | +---------------+ | fuleierzhuode | +---------------+ 1 row in set (0.00 sec)
3.過濾複製配置在主庫
1.配置
[root@db01 ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=/usr/local/mysql/data/mysql-bin
binlog-do-db=wzry
2.檢視主庫狀態
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 120 | wzry | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
3.在主庫的wzry庫和lol庫新增資料
4.從庫檢視資料,只能看到wzry庫的資料
4.過濾複製總結
#配置在從庫時
1.配置白名單:IO執行緒將主庫的資料拿到了relay-log,但是sql執行緒只執行白名單配置的資料庫相關語句
1.配置黑名單:IO執行緒將主庫的資料拿到了relay-log,但是sql執行緒只不執行黑名單配置的資料庫相關語句
#配置在主庫時
1.配置白名單:binlog只記錄白名單相關的sql語句
2.配置黑名單:binlog只不記錄黑名單相關的sql語句
# 建議配置在從庫