1.环境
操作系统:CentOS-7
MySQL:mysql-5.7
192.168.15.129 master
192.168.15.130 slave
2.主库配置
vi /etc/my.cnf
在[mysqld]下增加如下两行设置:
[mysqld]
log-bin=mysql-bin
server-id=1
创建数据同步账户
CREATE USER ‘repl‘@‘192.168.15.%‘ IDENTIFIED BY ‘666666‘;
GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.15.%‘;
FLUSH PRIVILEGES;
查看matser状态: show master status;
3.从库配置
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2
log-error=/var/log/mysqld.log # 异常日志存放位置
执行同步命令
change master to master_host=‘192.168.15.129‘, master_user=‘repl‘, master_password=‘666666‘, master_log_file=‘mysql-bin.000002‘, master_log_pos=154;
# 设置从库只读
set global super_read_only=1;
# 锁表
flush tables with read lock; # 锁表(所有角色都只读,但是会影响主从同步)
# 解锁
unlock tables;
查看slave状态: show slave status\G;
4.异常解决
[ERROR] Slave I/O for channel ‘‘: Got fatal error 1236 from master when reading data from binary log: ‘Client requested master to start replication from position > file size‘, Error_code: 1236
解决方法:
mysql> flush logs;
Query OK, 0 rows affected (0.02 sec)
mysql> show master status;
+---------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------+
| dbmaster-bin.000005 | 120 | | | |
+---------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
记住file和position这两个选项
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> change master to master_log_file =‘dbmaster-bin.000005‘,master_log_pos=120;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
搞定收工!
gitee源码地址:https://gitee.com/kk-dad/msrepl
原文:https://www.cnblogs.com/qqkkOvO/p/15260810.html