假设要同步test库中的数据,但不同步test.secret表。
a.在RDB1上(即主DB)执行备份操作并刷新日志。
mysqldump --flush-logs -uroot -p$pwd --default-character-set=gbk --database test > test.`date +%Y%m%d`.sqlb.连接上RDB1.Mysql数据库查询当前日志文件及日志位置信息。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000156 | 98 | | |
+------------------+-----------+--------------+------------------+
1 row in set
c.在RDB1上为RDB2配置新用户授权
GRANT REPLICATION SLAVE ON *.* TO backup@'RDB2 ip' IDENTIFIED BY 'password';
d.将从RDB1上备份下来的完整数据通过scp上传到RDB2上并导入数据库。
Mysql -h localhost -uroot -p$pwd test < test.`date +%Y%m%d`.sql
e.导入完成后,设置同步参数
设置同步哪些库、同步哪些表、忽略哪些表。
例如,在RDB2的Mysql配置文件中配置:
replicate-do-db=test
replicate-ignore-table= test.secret
注意:要保证所有server-id不重复,RDB1的为1,RDB2的为2,其余的依次排列就行。
f.重启RDB2.MYSQL使配置生效,登录RDB2.MYSQL设置复制日志起点。
CHANGE MASTER TO MASTER_HOST='RDB1 IP',MASTER_USER='backup', MASTER_PASSWORD='password',MASTER_LOG_FILE=' mysql-bin.000156',MASTER_LOG_POS=98;
执行START SLAVE启动同步服务。
至此已完成RDB1到RDB2的主从同步。