数据读写分离

谁都会走 提交于 2020-01-13 09:13:42

什么是数据读写分离

  • 把客户端访问数据的读请求和写请求分给不同的数据库服务器处理

为什么要配置数据读写分离

  • 分担单台服务器的工作压力

配置

  1. 程序实现:网站代码中指定不同的读写服务器
  2. 服务实现:安装提供读写分离服务的软件实现

mysql中间件

  • mysql-proxy
  • mycat
  • maxscale


配置思路:

  1. 配置MySQL主从
  2. 配置mysql代理

配置MySQL代理服务器

[root@maxscale] rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
文件 作用
/etc/maxscale.cnf 配置文件
/var/log/maxscale/ 日志目录

修改配置文件:

[root@maxscale] vim /etc/maxscale.cnf

  9 [maxscale]
 10 threads=auto   #设置线程数量,auto为根据CPU核心数自动设置

 18 [server1]      #添加MySQL服务器
 19 type=server
 20 address=192.168.4.51
 21 port=3306
 22 protocol=MySQLBackend
 23 
 24 [server2]
 25 type=server
 26 address=192.168.4.52
 27 port=3306
 28 protocol=MySQLBackend

 36 [MySQL Monitor]     #配置监控服务
 37 type=monitor
 38 module=mysqlmon
 39 servers=server1,server2
 40 user=dc    #监控用户:使用该用户和密码连接MySQL数据库
 41 passwd=123qqq...A
 42 monitor_interval=10000

 53 #[Read-Only Service]    #不使用只读服务,注释掉
 54 #type=service
 55 #router=readconnroute
 56 #servers=server1
 57 #user=myuser
 58 #passwd=mypwd
 59 #router_options=slave

 64 [Read-Write Service]   #读写分离服务配置
 65 type=service
 66 router=readwritesplit
 67 servers=server1,server2
 68 user=tc     #路由用户:当客户端连接时,使用该用户到mysql服务器检查客户端使用的用户是否存在(是否有权限),如果OK,则允许连接,否则不能连接
 69 passwd=123qqq...A
 70 max_slave_connections=100%

 76 [MaxAdmin Service]    #管理服务配置
 77 type=service
 78 router=cli

 92 [Read-Write Listener]   #读写服务端口
 93 type=listener
 94 service=Read-Write Service
 95 protocol=MySQLClient
 96 port=4006
 97 
 98 [MaxAdmin Listener]    #管理服务端口
 99 type=listener
100 service=MaxAdmin Service
101 protocol=maxscaled
102 socket=default
103 port=4016

MySQL服务器授权用户

[root@master] mysql -uroot -pPASSWORD
mysql> grant replication slave ,replication client on *.* to dc@'%' identified by '123qqq...A';  #授权监控用户
mysql> grant select on mysql.* to tc@'%' identified by '123qqq...A';  #授权路由用户

启动maxscale服务

[root@maxscale] maxscale -f /etc/maxscale.cnf   #启动服务
[root@maxscale] ss -antup |grep maxscale    #查看是否运行
[root@maxscale] kill -9 PID    #停止服务

测试配置

[root@maxscale] maxadmin -uadmin -pmariadb -P4016
maxscale> list servers   #查看服务器列表

[root@clint] mysql -h'mysql代理服务器地址' -P4006 -uUSER -pPASSWORD

排错

[root@maxscale] tail -f /var/log/maxscale/maxscale.log

验证

客户端连接读写分离服务器访问数据

[root@master] mysql -uroot -pPASSWORD
mysql> grant all on WEB.* to WEBUSER@'%' identified by 'PASSWORD';   #master为客户端授权用户

[root@client] mysql -h'mysql代理服务器地址' -P4006 -uWEBUSER -pPASSWORD
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!