往期历史
1.docker安装MySQL源码编译
2.Centos7 Mysql5.6.40 主从服务搭建
3.Mysql5.6.40 主从复制故障
过滤复制
- 主库方面:
通过二进制日志是否记录,来控制过滤复制
mysql>show master status;
Binlog_Do_DB 白名单
Binlog_Ignore_DB 黑名单
- 从库方面:
通过一些开关,只复制某些库或表的二进制日志
mysql>show slave status \G;
库:(用的多)
Replicate_Do_DB:
Replicate_Ignore_DB:
表:
Replicate_Do_Table:
Replicate_Ignore_Table:
模糊:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
-
例子: 将3309开启过滤复制,只复制world和oldboy数据库数据
3.1 修改配置文件
vim /data/3309/my.cnf
replicate_do_db=world
replicate_do_db=oldboy
3.2 重启3309示例:
mysqladmin -S /data/3309/mysql.sock shutown
3.3 启动3309示例:
mysqld_safe --defaults-file=/data/3309/my.cnf & -
搭建过滤从库
4.1 全备主库
mysqldump -S /data/3307/mysql.sock -A --master-data=2 -R --triggers --single-transaction >/tmp/full.sql
4.2 从库恢复
[root@43812cb2f48a /]# mysql -S /data/3308/mysql.sock
mysql>set sql_log_bin=0;
mysql>source /tmp/full.sql
4.3 查看复制开始位置
[root@43812cb2f48a /]# head -30 /tmp/full.sql
4.4 主从配置,开启主从
[root@43812cb2f48a /]# mysql -S /data/3309/mysql.sock
mysql> help CHANGE MASTER TO #查看执行sql命令
mysql> CHANGE MASTER TO
MASTER_HOST='127.17.0.2',
MASTER_USER='repl', #复制用户
MASTER_PASSWORD='123',
MASTER_PORT=3307,
MASTER_LOG_FILE='msyql-bin.000007',#主库bin日志
MASTER_LOG_POS=120,
MASTER_CONNECT_RETRY=10; #连接重试次数
mysql> start slave #启动主从
mysql> show slave status \G #主从复制监控(查看主从是否启动成功)