MySQL (4) ab主从复制与读写分离

  


<强>本篇博客介绍的是通过主从复制(主从)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力实现mysql高可用性


首先,我们先了解AB主从复制。<强>



<强>工作原理和过程


 MySQL (4) ab主从复制与读写分离


(图片源于网络)

<强>说明:1。在主库上把数据更改记录到二进制日志中
2。备库将主库上的日志复制到自己的中继日志中
3。备库读取中继日志中的事件,将其重放到备库数据库上
4。备库根据其中的内容做出主库相应的操作,对数据进行更新


<>强过程:

主机:创建数据库db - - - - - -在将此命令写入本机的二进制日志中
B主机:<强> 强监测并读取主机一个主机上的二进制日志文件新增的内容,并且将更新的内容写入到B主机自己的中继日志文件中
<强> SQL线程:读取B主机上的中继日志文件中心的SQL语句,并且自动执行这些SQL语句,最终在B主机上创建db这个库




<强>原理和工作过程


MySQL的主从复制和MySQL的读写分离两者有着紧密的联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。

简单来说,读写分离就是在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理选择查询,数据库复制被用来把事务性查询导致的改变同步到集群中的从数据库

, <强>主数据库就相当于银行的存款取款一体机,从就相当于取款机,当用户要存钱(写入数据)就在存取款机上操作,当用户要取款(读)就在取款机上操作

读写分离可以基于程序代码内部实现,也可以基于中间件(mysql-proxy、变形虫、阿特拉斯)代理层实现




<>强实验拓扑图:

环境:centos7

主数据库服务器(主):192.168.11.11

从数据库服务器(奴隶):192.168.11.12

代理服务器:192.168.11.13

 MySQL (4) ab主从复制与读写分离


部署思路:

1。在一个主机上的主/etc/my . cnf中所做配置文件中开启binlog二进制日志文件功能,并且给主机设置服务器id唯一的标识编号,重启Mariadb服务
2。在一个主机上创建用于AB主从复制的用户账号,并查看主人状态中的binlog日志文件的位置位置数值
3。在B主机上的主/etc/my . cnf中所做配置文件中设置服务器id唯一标识编码,重启mariadb服务
4。在B主机上用帮助修改主查命令帮助,并用修改主命令告诉B主机它的主人主人的正确幸喜
5。在B主机上用奴隶开始启动mariadb的随从服务,并用显示奴隶状态查看Ab主从复制的数据同步状态,确定两个线程的状态为是的



<强> 1。安装好数据库,并启动数据库服务

部署流程可参考(不做过多解释):https://blog.51cto.com/14181896/2361492

<强> 2。编辑主配置文件/etc/my.cnf,添加下234行图内容

 MySQL (4) ab主从复制与读写分离

<强> 3。重启服务,创建用于AB主从复制的用户账号(账号密码均为代表),如图:

 MySQL (4) AB主从复制与读写分离

<强> 4。查看主人状态中的binlog日志文件的位置位置数值(位置值会根据重启次数改变)

 MySQL (4) ab主从复制与读写分离


<强> 1。同一个主机安装部署好数据库服务

<强> 2。修改主配置文件/etc/my.cnf,添加如下内容:

 MySQL (4) ab主从复制与读写分离

<强> 3。重启服务,测试账号代表用户是否能远程访问主主机的数据库服务

 MySQL (4) ab主从复制与读写分离

<强> 4。在数据库中,用改变主命令告诉B主机他的主主的人正确信息

MySQL (4) ab主从复制与读写分离