mysql5.7读写分离_MySQL 5.7主从配置实现读写分离

本篇笔记记录了MySQL 5.7在CentOS中配置主从同步实现读写分离的过程,在mysqldump过程中记录binlog的File和Position参数,所以也适用于不停机增加从库

MySQL安装请参考如下笔记

CentOS 6.9 yum安装MySQL 5.7

CentOS7源码编译安装nginx+php7.2+mysql5.7并使用systemctl管理

将要配置主从的服务器ip

主:192.168.75.134

从:192.168.75.135

在主库上创建测试库

登录mysql

执行创建数据库语句

创建测试数据表

插入测试数据

查看数据

通过以上操作,我们已经在主库上创建了测试数据

主库配置

配置my.conf

配置含义

log-bin - 启用二进制日志

binlog-format - 日志格式

server-id - 服务器唯一ID,一般取IP最后一段

binlog-do-db - 要同步的数据库名

配置给从库Slave服务器使用的账号

CREATE USER - 创建用户

GRANT REPLICATION - 配置权限

FLUSH PRIVILEGES - 刷新,立即生效

从库配置

配置my.cnf

replicate-do-db - 要同步的数据库名

log-slave-updates - 写入从库binlog

备份主库中要同步的数据库

参数说明:

routines - 导出数据库中的存储过程和函数

single_transaction - 导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。

master-data - 默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。

将备份传入从库服务器并恢复

从主库备份到从库设置完成同步是存在间隔的,这个间隔主库可能又产生了新的写操作,所以我们获取binlog的File和Position参数是通过mysqldump生成的备份文件,而不是在主库上执行show master status;的结果,如果这个间隔中可以保证主库不会出现写操作,也可以通过show master status;获取binlog的File和Position参数,以下做个小实验,主库备份以后,再向主库插入两条记录

执行sql

进入从服务器,从库导入备份

查看备份文件中的File和Position参数

我们看到File是mysql-bin.000004,Position是154,进入从库mysql,继续操作

设置同步参数

在进行本步骤之前,请确认主库服务器防火墙开启了3306端口,并且关闭了selinux,否则从库无法从主库获得binlog,同步无法进行

启动从库同步

查看同步是否正确

以上结果中第13,14行,Slave_IO_Running: Yes和Slave_SQL_Running: Yes都是yes,表示同步开启成功

主库再插入一条数据

查看从库数据是否正确

从库查到13条记录,主库备份时product表是10条数据,备份成功后导入从库前主库又插入了2条数据,同步设置成功后主库又插入1条数据,主从数据相同,OK,数据同步成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值