MySQL读写分离

什么是读写分离:

客户端访问数据的查询请求和写请求分别给不同的数据服务器处理

为什么要让MySQL应用读写分离:

因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。
但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。
所以读写分离,解决的是,数据库的写入,影响了查询的效率。

MySQL读写分离的原理:

客户端访问主从架构数据库服务器时,会执行读写操作,其中读操作会处理非常快,而写入操作可能会比较慢,应对高并发,就要应用mysql读写分离架构.

mysql读写分离架构通过一台mysql代理服务器来将客户端的读和写的请求分发给主数据库和从数据库,因为从数据库会同步主服务器的数据,所以从服务器适合执行读取,主服务器适合写入操作,由此来解决高并发的问题.

如何搭建读写分离架构:

读写分离需要的服务器架构为 MySQL主从复制结构 并且需要一台无数据库的服务器作为代理服务器,所以准备三台服务器(实际生产环境中会有多台从库服务器,这里只列举一台)

主库服务器:192.168.4.1/24
从库服务器:192.168.4.2/24
代理服务器:192.168.4.3/24
客户端:192.168.4.10/24

一 : 主从服务器做主从复制(详细在mysql主从同步)

二 : 代理服务器部署maxscale服务
软件下载地址
1.通过rpm -ivh安装:

192.168.4.3 ] # rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm

2.修改主配置文件 :

192.168.4.3 ] # vim /etc/maxscale.cnf
: set nu              //开启行号
  9 [maxscale]
  10 threads=auto    //更改第十行为auto自动

将第18行到第22行复制 粘贴到23行下面
这5行为指定数据库主从服务器 我们用到两台所以只写两台

18 [server1]
19 type=server
20 address=192.168.4.1
21 port=3306
22 protocol=MySQLBackend
23 
24 [server1]
25 type=server
26 address=192.168.4.2
27 port=3306
28 protocol=MySQLBackend

定义要监视的数据库节点 :

 36 [MySQL Monitor]
 37 type=monitor
 38 module=mysqlmon
 39 servers=server1,server2   //改为server1,server2
 40 user=maxscalemon        //改为maxscalemon(监控用户)
 41 passwd=随意                //密码 自己随意写 记住就行
 42 monitor_interval=10000

定义读写分离的数据库节点 :
首先将53~59注释掉 因为这里定义的是只读的数据库
我们不需要所以注释掉

 64 [Read-Write Service]
 65 type=service
 66 router=readwritesplit
 67 servers=server1,server2       //改为server1,server2
 68 user=maxscalerouter          //改为maxscalerouter (路由用户)
 69 passwd=随意                  //密码还是随意  记住就行
 70 max_slave_connections=100%

定义读写分离服务端口 :
首先将86~90注释掉 因为我们把只读的数据库关掉了
所以这个也不需要开

 92 [Read-Write Listener]
 93 type=listener
 94 service=Read-Write Service
 95 protocol=MySQLClient
 96 port=4006                                       //都设置默认就行 不需要更改

定义管理服务端口号 :

 98 [MaxAdmin Listener]
 99 type=listener
100 service=MaxAdmin Service
101 protocol=maxscaled
102 socket=default                        
103 port=1234                   //添加一条端口号  这里随意(别用其他服务的端口号就ok)
: wq                   //保存并退出

三 : 在主,从服务器创建授权用户:
(因为主从服务器已经同步,所以只在一台服务器上面操作即可)

mysql> grant replication slave,replication client on *.* to maxscalemon@"%" identified by "Wjl4199..";
// 为监控用户授权  用户名,密码为代理服务器主配置文件里的监控用户名和密码
grant select on mysql.* to maxscalerouter@"%" identified by "Wjl4199..";
// 为路由用户授权  用户名,密码为代理服务器主配置文件里的监控用户名和密码

四 : 在代理服务器开启maxscale服务

192.168.4.3 ] # maxscale -f /etc/maxscale.cnf    //启动服务
192.168.4.3 ] # netstat -antup |grep 4006      //查看maxscale端口是否开启
192.168.4.3 ] # netstat -antup |grep 1234     //查看自己设置的端口是否开启
192.168.4.3 ] # netstat -antup |grep maxscale     //查看所有maxscale服务
tcp        0      0 192.168.4.57:46968      192.168.4.51:3306       ESTABLISHED 1257/maxscale       
tcp        0      0 192.168.4.57:49488      192.168.4.52:3306       ESTABLISHED 1257/maxscale       
tcp6       0      0 :::4006                 :::*                    LISTEN      1257/maxscale       
tcp6       0      0 :::1234                 :::*                    LISTEN      1257/maxscale                

结果如上说明服务开启成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值