Mysql主从配置
Mysql版本:5.7.14 (一般不受版本的影响)
MasterIP: 172.16.112.31
SlaveIP: 172.16.112.29
注意:关闭防火墙
一,Slave 连接 Master:(本人使用的是Navicat)
选择MySQL
连接成功之后(会发现多出一个主分支的库)
grant all privileges on *.* to 用户名@"172.16.112.31" identified by '密码' with grant option;
#用户名及密码自定义 成功之后 一下操作都使用这个所填的用户名及密码 注:用户名最好不要用root
#此操作是主从连接 主连接从分支输入从分支IP 从分支连接主分支输入主分支IP
之后就开始执行下面的(分清主分支和从分支要做的事情)
二,Master配置:
1.配置my.conf / my.ini
[mysqld]
server-id = 100 #服务器的唯一ID号,主从之间不能冲突,默认是1
log-bin = mysql-bin #启动binlog 日志功能。也称事务日志
binlog-format = mixed #日志的记录格式,默认是mixed,推荐也是用这个
2.配置给从库Slave服务器使用的账号
#创建账号,我测试环境的从服务器的IP地址就是172.16.112.29,你们自己做的时候根据自己的从服务器IP来写,
#用户名,连接时输入的密码及用户名
CREATE USER '用户名'@'192.168.15.66' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'192.168.15.66'; #添加权限
FLUSH PRIVILEGES; #刷新权限,立马生效
查看当前日志状态
SHOW MASTER STATUS; #查看主服务器的状态,并记录 File和Position字段,从服务器要使用到,示例刚截图
二,Slave配置:
1.配置my.cnf
[mysqld]
server-id = 101 #服务器唯一ID号,不要冲突
log-bin = mysql-bin #启动binlog日志功能,也称事务日志
binlog-format = mixed #可以不用配置,因为默认值 就是mixed,在没有配置log-bin时,这个值并不生效
#从库的本地事务日志更新,默认从主库同步过来的操作记录并不写入从库的本地事务日志,
#会影响到我们在从库上做 事务日志 备份功能,此处开启
#如果不会在从库上做事务日志备份(增量备份)功能,建议不开启,减少磁盘IO
log-slave-updates = 1
2.添加主库信息
这里的 MASTER_LOG_FILE 和 MASTER_LOG_POS 就是刚主数据库中查看出来的结果
我测试环境主库的IP是172.16.112.29
CHANGE MASTER TO
MASTER_HOST='172.16.112.29',MASTER_PORT=63307,MASTER_USER='admin',MASTER_PASSWORD='admin',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=773;
3.启动从库复制功能
START SLAVE; #启动从复制功能
STOP SLAVE; #停止从复制功能的命令
RESET SLAVE; #重置从复制功能的配置,会清除 master.info 和 relay-log.info 两个文件
4.查看从库复制功能状态
SHOW SLAVE STATUS\G #加\G显示效果好一些,防止列过多,一屏显示不下时的排序混乱
对应单词前出现两个 YES 就说明主从配置成功
常见故障
error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
mysql 5.6的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy data文件夹后server_uuid是相同的,show variables like '%server_uuid%';
解决方法:
找到data文件夹下的auto.cnf文件,删除,重启db自动重新生成auto.cnf文件