mysql怎么区分读写 mysql的读写分离如何实现

SpringBoot项目中实现MySQL读写分离但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:
为了解决上述提到的两个问题,我们可以准备两 (多) 台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更(写、更新、删除这些操作) ,需要同步到从库中 (主从复制)。而用户在访问我们项目时,如果是写操作(insert、update、delete),则直接操作主库;如果是读操作(select),则直接操作从库,这种结构就是读写分离啦 。
在这种读写分离的结构中,从库是可以有多个的
MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能 。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致 。MySQL主从复制是 MySQL数据库自带功能,无需借助第三方工具 。
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句 。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制 ,  就是通过该binlog实现的 。默认MySQL是未开启该日志的 。
在环境搭建之前,我们需要准备好两台服务器 , 如果生活富裕使用的是两台云服务器的时候记得要开放安全组 , 即防火墙;如果是比狗子我生活好点但也是用的虚拟机的话 , 记得别分这么多内存启动蓝屏了(别问怎么知道的)
这里就不给大家展示数据库的安装和防火墙的操作了 , 这个我感觉网上好多资源都能够满足遇到的问题,在搭建主从库的时候有在网上见到过说MySQL版本要一致的 , 我也没太留意直接就在之前的MySQL上操作了,大家可以自己去验证一下 。
服务器:192.168.150.100(别试了黑不了的,这是虚拟机的ip)
这里有三个方法都能重启MySQL,最简单的无疑就是一关一开:
登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令 , Linux不认识这玩意是啥 。
这个时候还不用退出MySQL,因为下面的命令还是SQL命令,执行下面的SQL,可以拿到我们后面需要的两个重要参数 。
执行完这一句SQL之后 , ==不要再操作主库!不要再操作主库!不要再操作主库!==重要的事情说三遍,因为再操作主库之后可能会导致红框中的两个属性值会发生变化,后面如果发生了错误可能就和这里有那么两毛钱关系了 。
服务器:192.168.150.101(别试了黑不了的 , 这也是虚拟机的ip)
这里要注意server-id和主库以及其他从库都不能相同,否则后面将会配置不成功 。
这里有三个方法都能重启MySQL,最简单的无疑就是一关一开:
登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令
参数说明:
这个时候还不用退出MySQL , 因为下面的命令还是SQL命令,执行下面的SQL,可以看到从库的状态信息 。通过状态信息中的Slave_IO_running和Slave_SQL_running可以看出主从同步是否就绪,如果这两个参数全为Yes,表示主从同步已经配置完成 。
这可能是由于linux 是复制出来的 , MySQL中还有一个server_uuid是一样的,我们也需要修改 。vim /var/lib/mysql/auto.cnf
这应该就是各位大牛设置server_id的时候不小心设置相同的id了,修改过来就行,步骤在上面的配置中 。
这是狗子在操作过程中搞出来的一个错误……
【mysql怎么区分读写 mysql的读写分离如何实现】

推荐阅读