一.配置主库;
1.修改主库配置文件my.cnf 在[mysqld]下加入
log-bin = mysql-bin
binlog_format = mixed
binlog_checksum = none
server-id = 1
expire_logs_days = 10
其中server-id 保证主库跟从库不一样就可以了;
binlog_checksum是一个坑,等下最后会提到。
然后重启mysql服务
2.添加一个用户给从库来登录主库
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘登录用户名’@’从库的IP地址’ IDENTIFIED BY ‘登录密码’;
3.查看主库二进制文件名与位置
mysql>SHOW MASTER STATUS;
这里会得到一个文件名File 跟 一个位置Position要记下来
二.配置从库
在配置文件my.cnf里面在[mysqld]里面加入
server-id = 2
log-bin = mysql-bin
binlog_format = mixed
要注意的就是server-id 应该都是不重复的
然后执行命令
mysql>CHANGE MASTER TO
>MASTER_HOST=’主库ip地址’,
>MASTER_USER=’从库登录账号’,
>MASTER_PASSWORD=’从库登录密码’,
>MASTER_LOG_FILE=’主库File’,
>MASTER_LOG_POS=主库Position;
mysql>SLAVE START; #开启复制
mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功
当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常
/*坑*/
因为尝试配置主从的时候,主库用的mysql5.6版本,从库是5.5版本,刚刚配置完开启复制之后,看到Slave_IO_Running一直都是NO
后来找万能的度娘,查看mysql错误日志有一下错误信息
Slave can not handle replication events with the checksum that master is configured to log;
后来找到了解决方案就是开头提到的 要在主库配置文件里写入
binlog_checksum = none
---2018--05-22---
更新一个当日志报错导致Slave_SQL_Running: No的解决方法
stop slave; #临时停止同步开关
set global sql_slave_skip_counter =1; #将同步指针向下移动一个
start slave;