Mysql5.7主从库设定、基于GTID的主从复制和半同步复制
一 设定主库
环境:server4(主库端): linux redhat6.5 ip:172.25.254.4
server5(从库端): linux redhat6.5 ip:172.25.254.5
- 安装包准备:
- 将所有rpm包安装,并开启数据库服务。Grep password /var/log/mysql.log查看数据库密码:
Mysql -p修改密码:
3.编辑/etc/my.cfg设定服务器id为1,开启二进制日志,设定需要同步的数据库名和禁止同步的数据库名:
之后重启服务:
4.进入数据库的mysql库,建立账户并授权:
5.查看二进制日志是否打开:
查看主库状态:
二 设定从库
- 安装所有mysql包开启数据库服务并设定密码。
- 编辑/etc/my.cfg并重启数据库服务:
3.设定从设备并开启从设备:
将172.25.254.4主机当作主设备,以主设备端授权用户mysql的身份登录。master_log_file和master_log_pos的值都都依照主设备状态中的值来设定。
查看从设备状态“
如果Slave_IO_Running和Slave_SQL_Runing都为Yes表示服务正常。
从设备状态中slave_io_running为no表示负责与主机通信的io服务没开。
解决:停掉从库的slave,在主库端flush logs清空日志,重新查看主库状态:
在slave端重新指定master_log_file和master_log_pos:
之后开启slave查看状态,io为yes:
4. 主从测试
主库端建立数据库test和数据表userlist:
从库查看到主库新建的表内容:
三 GTID主从复制
- 在主从库两端编辑/etc/my.cnf文件:
重启数据库服务:
2.从库停掉slave设定新参数:
查看状态:
测试
主库插入数据:
从库看到数据:
四 半同步复制
- 在主库端安装插件:
2.编辑主库配置文件/etc/my.cnf添加设置,之后重启数据库。
对于配置文件中的timeout参数,后面的数值单位是毫秒。设定了这个时间后,在主库端执行数据操作指令,在经过这个时间之后,数据才会同步到从库。如果从库端设定STOP SLAVE IO_THREAD关闭从库端的IO接口,那么主库端的数据是无法同步到从库端的。开启IO接口后数据才会同步。
查看插件安装状态:
3. 同样在从库端安装插件:
4.编辑从库配置文件之后重启数据库服务:
从库查看状态:
5.测试:
在从库端start slave开启从库,主库端插入数据:
从库更新了数据: