如何实现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读写分离?的主要内容,如果未能解决你的问题,请参考以下文章

mysql读写分离实现方式

Redis早期的主从架构原理分析,早期如何实现读写分离的?

使用Amoeba实现mysql读写分离机制

Sharding-JDBC 几行配置实现读写分离~

Linux 使用Mycat实现读写分离(基于Mysql的读写分离)

数据库:读写分离 — 问题汇总