mysql 5.7 主从复制
来源:原创
时间:2018-11-15
作者:脚本小站
分类:DB
安装好mysql后进行如下设置:
主节点:
编辑配置文件:
vim /etc/my.cnf log-bin=master-bin #开启bin-log server-id=1 #主节点id,每台mysql都要不同
重启mysql:
systemctl restart mysqld
创建复制账号并赋予权限:
grant replication slave, replication client on *.* to 'replication'@'192.168.1.%' identified by 'replication';
这两个权限的作用:
replication client:复制用户可以使用 show master status, show slave status和 show binary logs来确定复制状态。
replication slave:复制数据
查看主节点的状态以及bin-log位置:
show master status;
从节点:
编辑配置文件:
vim /etc/my.cnf relay_log=relay-log relay_log_index=relay-log.index #如果不设置这两项会自动生成默认的 server_id=2 read-only
重启mysql:
systemctl restart mysqld
查看relay-log:
show variables like 'relay_log';
配置账号等信息:
change master to MASTER_HOST='192.168.1.111', MASTER_USER='replication', MASTER_PASSWORD='replication', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=154;
开启复制:
start slave;
查看从服务器状态:
show slave status\G;
Slave_IO_State 从库的当前状态
Slave_IO_Running: Yes 读取主程序二进制日志的I/O线程是否正在运行
Slave_SQL_Running: Yes 执行读取主服务器中二进制日志事件的SQL线程是否正在运行。与I/O线程一样
Seconds_Behind_Master 0就是已经同步了
错误解决:
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
如果之前没有配置relay-log然后又配置上了就会出现路上报错。
解决方法:
stop slave; reset slave; change master ... start slave