数据库中间件ProxySQL读写自动分离实践

  

<强>参考文档

  
 <代码> https://github.com/sysown/proxysql
  http://www.fordba.com/mysql_proxysql_rw_split.html
  https://www.cnblogs.com/zhoujinyi/p/6829983.html  
  

<强>腾讯云国开行可以提供主库VIP +只读从库VIP的形式,这样开发使用时需要维护2个贵宾而且不能自动读写分离,基于现状计划使用proxysql结合clb及国开行来实现读写自动分离。
架构如下:
应用程序——clb四层——proxysql主VIP +自读VIP

  

<强>一.ProxySQL部署
<强> 1。下载安装启动

  
 <代码> root@VM_8_24_centos ~ # wget https://github.com/sysown/proxysql/releases/download/v2.0.8/proxysql-2.0.8-1-centos7.x86_64.rpm
  (root@VM_8_24_centos ~) # rpm -ivh proxysql-2.0.8-1-centos7.x86_64.rpm
  (root@VM_8_24_centos ~) # systemctl proxysql开始
  (root@VM_8_24_centos ~) # systemctl启用proxysql
  (root@VM_8_24_centos ~) # netstat -tulpn | grep 603
  tcp 0 0 0.0.0.0:6032 0.0.0.0: * 26063/proxysql听
  tcp 0 0 0.0.0.0:6033 0.0.0.0: * 26063/proxysql听 
  

<强> 2。登陆测试

  
 <代码> [root@VM_8_24_centos ~] # mysql -uadmin padmin - h 127.0.0.1 -P6032
  欢迎来到MariaDB监视器。命令结尾;或\ g。
  你的MySQL连接id是2
  服务器版本:5.5.30 (ProxySQL管理模块)
  
  甲骨文版权(c) 2000年,2018年,MariaDB公司Ab和其他人。
  
  类型的帮助,“或“\ h”寻求帮助。类型“\ c”明确当前输入语句。
  
  MySQL((没有))比;显示数据库;
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | seq | | |文件名称
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  主要| 0 | | |
  | | 2 |磁盘/var/lib/proxysql/proxysql.db |
  | 3 |数据| |
  | 4 |监控| |
  | 5 | stats_history |/var/lib/proxysql/proxysql_stats。db |
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  5行集(0.01秒)
  
  MySQL((没有))比; 
  

<强>二.ProxySQL配置

  

<强> 1。架构
node1 (vip 192.168.0.9:3306), mysql主
node2 (vip 192.168.0.42:3306), mysql奴隶
prxoy (192.168.8.24:6033) proxysql
clb (vip 192.168.9.27:6033) clb proxysql
应用程序(192.168.0.26),mysql客户端

  

<强> 2。proxysql上添加mysql主从数据库信息
proxysql上执行,将主库的主人也就是做写入的节点放到组0中,药膏节点做读放到组1中
语法如下:

  
 <代码>插入mysql_servers (hostgroup_id、主机名、端口、重量、max_connections max_replication_lag,评论)值(1 0,“192.168.0.9”,3306年,2000年,10 ' TESTuser ');
  插入mysql_servers (hostgroup_id、主机名、端口、重量、max_connections max_replication_lag,评论)值(1 1“192.168.0.42”3306年,2000年,10 ' TESTuser ');
  select * from mysql_servers;  
  

例子:   

 <代码> MySQL((没有))比;插入mysql_servers (hostgroup_id、主机名、端口、重量、max_connections ax_replication_lag,评论)值(1 0,“192.168.0.9”,3306年,2000年,10 ' TESTuser ');
  查询好了,1行影响(0.00秒)
  
  MySQL((没有))比;插入mysql_servers (hostgroup_id、主机名、端口、重量、max_connections ax_replication_lag,评论)值(1 1“192.168.0.42”3306年,2000年,10 ' TESTuser ');
  查询好了,1行影响(0.00秒)
  
  MySQL((没有))比;从mysql_servers select *;
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  | hostgroup_id |主机名|端口状态| | |重量压缩| max_connections | max_relication_lag | use_ssl | max_latency_ms | |发表评论
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  | 0 | 192.168.0.9在线| 1 | 0 | 3306 | | 2000 | | 0 | 0 | TESTuser |
  | 1 | 192.168.0.42在线| 1 | 0 | 3306 | | 2000 | | 0 | 0 | TESTuser |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
  2行集(0.01秒)

数据库中间件ProxySQL读写自动分离实践