什么是数据读写分离
- 把客户端访问数据的读请求和写请求分给不同的数据库服务器处理
为什么要配置数据读写分离
- 分担单台服务器的工作压力
配置
- 程序实现:网站代码中指定不同的读写服务器
- 服务实现:安装提供读写分离服务的软件实现
mysql中间件
- mysql-proxy
- mycat
- maxscale
配置思路:
- 配置MySQL主从
- 配置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
来源:CSDN
作者:baiyuani
链接:https://blog.csdn.net/weixin_45157506/article/details/103903726