如何实现MySQL读写分离?
Posted 吴柯的运维笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现MySQL读写分离?相关的知识,希望对你有一定的参考价值。
“每个理性的IT人士都置顶了吴柯的运维笔记”
一:部署mysql-proxy代理服务器
1)安装mariadb官方提供的maxscale软件包
# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
# vim /etc/maxscale.cnf
[maxscale]
threads=1
type=server
port=3306
protocol=MySQLBackend
type=server
port=3306
protocol=MySQLBackend
[MySQL Monitor] #指定要监控的主机 和监控时连接的用户
type=monitor
module=mysqlmon
servers=server1, server2 #前边定义的主机名
user=scalemon # 用户名
passwd=111111 # 密码
monitor_interval=10000
#[Read-Only Service]
#type=service
#router=readconnroute
#servers=server1
#user=myuser
#passwd=mypwd
#router_options=slave
[Read-Write Service] #定义服务器列表
type=service
router=readwritesplit
servers=server1, server2 #前边定义的主机名
user=maxscale # 用户名
passwd=111111 # 密码
max_slave_connections=100%
[MaxAdmin Service]
type=service
router=cli
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006
1)分别在主、从数据库服务器上添加授权用户(只在主服务器授权即可 从服务器会自动同步):
mysql> grant replication slave, replication client on *.* to scalemon@'%' identified by “111111”; //创建监控用户
mysql> grant select on mysql.* to maxscale@'%' identified by “111111”; //创建路由用户
mysql> grant all on *.* to student@'%' identified by “111111”; //创建客户端访问用户
2)启动maxscale服务
# maxscale --config=/etc/maxscale.cnf
# netstat -utnalp | grep maxscale
# kill -9 进程id //通过杀进程的方式停止服务
二:测试配置
1)在客户端192.168.4.120上使用上边授权用户student 连接代理服务器192.168.4.100:
# mysql -h192.168.4.100 -P4006 -ustudent -p111111
MySQL [(none)]> select @@hostname; //显示当前访问的主机
MySQL [(none)]> insert into bbsdb.a values(111);//插入新纪录
2)在主从数据库分别查看
...
推荐阅读:
吴柯的运维笔记
BY wukeyy18s
以上是关于如何实现MySQL读写分离?的主要内容,如果未能解决你的问题,请参考以下文章