MySQL主从复制,读写分离原理及如何部署

  

一、实验坏境

1。一台CentOS 7作为客户端测试,对应的地址为:192.168.80.120
2。一台CentOS 7作为变形虫前端代理云服务器,对应的地址为:192.168.80.110
3。一台CentOS 7作为mysql主服务器,对应的地址为:192.168.80.100
4。两台CentOS 7分别作为mysql从服务器,对应的地址分别为:192.168.80.140,192.168.80.150
5。所有的虚拟机都绑定同一块虚拟网卡vnet1:192.168.80.10

二、主从复制和读写分离的原理

 mysql主从复制,读写分离原理及如何部署

<强> 1,主从复制的原理

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

mysql支持的复制类型有:基于语句的复制,基于行的复制,混合类型的复制。
复制的工作过程如下:
 mysql主从复制,读写分离原理及如何部署

<强> 2,读写分离的原理

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

基于中间代理层实现:代理一般位于客户端和服务器之间,代理服务器接到客户段的请求通过判断后转发到后端数据库。
读写分离的过程如下:
 mysql主从复制,读写分离原理及如何部署

三,搭建mysql主从复制

将三台CentOS 7分别用源码编译安装mysql数据库具体操作:https://blog.51cto.com/13871362/2328667

<强> 1,配置主服务器

1)建立时间同步环境

 <代码> yum安装国家结核控制规划- y,,国家结核控制规划时,//安装间同步服务器
  
  vi/etc/ntp.相依,,//编辑配置文件 

17行添加

 <代码>限制192.168.80.0面具255.255.255.0 nomodify notrap,,,,//限定同步的网段
  服务器127.127.1.0
  软糖127.127.1.0 8层,,//设置时间服务器的层级为8级,顶级是0  

 MySQL主从复制,读写分离原理及如何部署”> <br/> <代码> systemctl开始国家结核控制规划,,//开启服服务</代码> </p> <p> 2)配置主MySQL </p> <pre> <代码> vi/etc/my.cnf,,,//编辑数据库配置文件
  在(mysqld)模块下面添加以下几行
  server_id=11,,,//主服务器编的号
  log_bin=master_bin,//指定二进制日志
  log_slave_updates=true,,,//允许从服务器更新</代码> </pre> <p> <img src=

<强> 2,配置从服务器(两台从步骤一样,区别服务器id不同)

1)配置从MySQL

 <代码> vi/etc/my.cnf,,,//编辑数据库配置文件
  在(mysqld)模块下面添加以下几行
  server_id=22,,,//从服务器编的号
  relay_log=relay-log-bin//指定从服务器的中继日志
  relay_log_index=slave-relay-bin。指数,//定义中级日志的位置和名称 

 MySQL主从复制,读写分离原理及如何部署”> <br/> <代码> systemctl mysqld重启,,,//重启服务</代码> </p> <p> 2)在从服务器上进行时间同步</p> <pre> <代码> yum安装ntpdate - y,//安装时间同步工具
  ntpdate 192.168.80.100,,,//与主服务器时间同步</代码> </pre> <p> <img src=

 <代码>回声& # 39;30 * * * * *//usr/sbin/ntpdate 192.168.80.183& # 39;在比;/var/spool/cron/root
  crontab - l,,,//创建计划任务每隔三十秒同步一次 

3)进入从数据库授权

 <代码> mysql -uroot -pabc123,//进入数据库
  
  修改主master_host=& # 39; 192.168.80.100& # 39;, master_user=& # 39; mysyslave& # 39;, master_password=& # 39; abc123 # 39;, master_log_file=& # 39; master_bin.000001& # 39; & # 39; master_log_pos=603;,,//指定主服务器
  
  开始的奴隶;,,//开启从服务器
  显示奴隶状态\ G代码

MySQL主从复制,读写分离原理及如何部署