参考:http://www.cnblogs.com/hustcat/archive/2009/12/19/1627525.html
一、主从复制
其中192.168.1.92 (test1)是主库,192.168.1.220(test2)是从库
(1) 创建复制帐号
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ad_repl@'192.168.1.220' IDENTIFIED BY '123456';
(2) 配置master(主库),修改my.ini,后重启服务
[mysqld]
log_bin=mysql_bin
server_id=10
通过SHOW MASTER STATUS; 查看是否有此记录,有记录则表示成功
(3) 配置slave(从库),修改my.ini,后重启服务,注意下面的log_bin与上面的log_bin要一致
log_bin = mysql_bin
server_id = 2
relay_log = mysql_relay_bin
log_slave_updates = 1
read_only = 1
replicate_wild_do_table=test2.sys_%
(4) 启动slave
CHANGE MASTER TO MASTER_HOST='192.168.1.92',MASTER_USER='ad_repl',MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql_bin.000002', MASTER_LOG_POS=20891;
SHOW SLAVE STATUS\G;
能看到 Slave_IO_State: Waiting for master to send event 表示正常
#更改配置
slave stop;
CHANGE MASTER TO MASTER_LOG_FILE='mysql_bin.000002', MASTER_LOG_POS=120;
slave start;
上面如果报:ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
执行:
stop slave;
reset slave;
(5) 设置复制过滤
STOP SLAVE SQL_THREAD;
设置只同步test1库
CHANGE REPLICATION FILTER REPLICATE_DO_DB = (test2);
设置只同步test1库中“sys_”开头的表,忽略“b”开头的表
CHANGE REPLICATION FILTER
REPLICATE_WILD_DO_TABLE = ('test2.sys_%'),
REPLICATE_WILD_IGNORE_TABLE = ('test2.b%');
上述方法不行,则直接在my.ini(linux是my.cnf)的[mysqld]增加
replicate_wild_do_table=test2.sys_%
然后重启
(6) 查看上面的配置是否启作用
SHOW SLAVE STATUS\G;
能看到 Slave_IO_State: Waiting for master to send event 表示正常
show master status;
获取MASTER_LOG_FILE,MASTER_LOG_POS对应的值
#更改配置
参考:https://blog.youkuaiyun.com/xu1314/article/details/7693906
slave stop;
CHANGE MASTER TO MASTER_LOG_FILE='mysql_bin.000002', MASTER_LOG_POS=120;
slave start;
上面如果报:ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
执行:
stop slave;
reset slave;
二、设置复制过滤