MySQL主从复制以5.7为例
1. 环境准备
-
三台虚拟机, 一主二从
-
host:
192.168.0.155 主 192.168.0.158 从一 192.168.0.159 从二
2. 主从复制具体实现
-
主数据库配置
-
修改主机的配置文件,
[mysqld]
添加如下内容,更多关于mysql的优化配置,请查找相关文章# 开启binlog日志 log‐bin = mysql‐bin # 设置服务id,主从不能一致 server‐id = 1 # 日志格式为row binlog_format=row # binlog过期清理时间 expire_logs_days = 7 # 设置需要同步的数据库(根据实际情况进行配置) binlog‐do‐db=xxxx # 屏蔽系统库同步 binlog‐ignore‐db=mysql binlog‐ignore‐db=information_schema binlog‐ignore‐db=performance_schema
-
创建用户,然后重启数据库
set global validate_password_policy=0; set global validate_password_length=1; grant replication slave on *.* to 'slave'@'%' identified by '123456'; flush privileges;
-
确认binlog日志是否开启
show variables like 'log_%';
-
查看此时的主库状态
show master status;
-
处理已经有的数据
set sql_log_bin=0; # 临时关闭bin_log flush tables with read lock; 导出数据库中的数据 导入到另外一个数据库后 set sql_log_bin=1; # 开启bin_log
-
-
从一数据库配置
-
修改从机的配置文件,
[mysqld]
添加如下内容,然后重启一下.# 开启binlog log-bin = mysql-bin #设置服务id,主从不能一致 server-id = 2 # 设置需要同步的数据库 replicate_wild_do_table=xxxx.% # 屏蔽系统库同步 replicate_wild_ignore_table=mysql.% replicate_wild_ignore_table=information_schema.% replicate_wild_ignore_table=performance_schema.% # 忽略错误代码 slave-skip-errors=1032,1062,1053,1146,2003
-
导入数据库信息
-
连接master(注意file和position是上图查出来的)
CHANGE MASTER TO MASTER_HOST='192.168.0.155',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=71797351;
-
开始同步
start slave;
-
查看一下状态
show slave status;
-
-
从二数据库配置
- 基本如上,修改一下server-id=3
-
主数据库配置
unlock tables
验证一下
- 修改主数据库中的值,看对应的从数据库均已改变,MySQL5.7主从复制搭建完成