搭建mysql主从库过滤复制,备份指定数据库,有利于数据库的管理。这个教程在同个服务器上同个mysql数据库环境,搭建不同实例的数据库。此配置教程与不同服务器配置mysql方法时一致。
依据不同mysql实例来配置不同端口号,以端口号命名方式来命名mysql实例,主库为3307,从库为3309。
将3309开启过滤复制,只复制world和abc数据库数据。
1. 修改配置文件:
vim /data/3309/my.cnf replicate_do_db=world replicate_do_db=abc
2. 关掉3309库 :
[root@mv171 3309]# mysqladmin -s /data/3309/mysql.sock shutdown
3. 再启动3309库 :
[root@mv171 3309]# mysqld_safe --defaults-file=/data/3309/my.cnf &
4. 构建主从环境:备份主库数据(3307)并恢复到3309
备份3307主库数据
[root@mv171 3307]# mysqldump -s /data/3307/mysql.sock -a --master-data=2 --single-transaction >/tmp/full.sql
5. 进入3309库:
[root@mv171 3309]# mysql -s /data/3309/mysql.sock
5.1 先关闭二进制日志写入功能:
mysql> set sql_log_bin=0;
5.2 恢复数据:
mysql> source /tmp/full.sql
5.3 查看主库3307的起始二进制文件和位置号:
[root@mv171 ~]# head -30 /tmp/full.sql ...... -- change master to master_log_file='mysql-bin.000001', master_log_pos=2039; #主库在用的二进制日志文件为mysql-bin.000001,位置号为2039 ......
6. 开启主从配置:
change master to master_host='192.168.1.171', master_user='repl', master_password='666888', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos=2039, master_connect_retry=10;
7. 开启主从:
mysql> start slave;
8. 主从配置已完成,查看从库状态:show slave status \g;
mysql> show slave status \g; *************************** 1. row *************************** slave_io_state: waiting for master to send event master_host: 192.168.1.171 master_user: repl master_port: 3307 connect_retry: 10 master_log_file: mysql-bin.000001 read_master_log_pos: 2039 relay_log_file: mv171-relay-bin.000002 relay_log_pos: 283 relay_master_log_file: mysql-bin.000001 slave_io_running: yes slave_sql_running: yes replicate_do_db: world,abc
这时后可以查看replicate_do_db:world,abc。
- 最终过滤主从关系配置完成,在配置完成过滤主从复制之前主库没有world,abc数据库,在主库新建这两个数据库时,这两个数据库是可以同步到从库;但如果新建其他名称数据库,比如efg数据,是不会同步到从库中来。
- 另外注意主从过滤复制的写法,在配置文件中不要将两个数据库通过写在一个命令参数,比如replicate_do_db=world,abc,这么写mysql就认定过滤数据库名是“world,abc”,两个库必须分开写,不要以为逗号或分割符号表示分开两个库,这样做法是错误的。
到此这篇关于mysql主从库过滤复制配置教程的文章就介绍到这了,更多相关mysql主从库过滤复制内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论