世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com

  • 首页
  • 北京世界杯
  • 世界杯新秀
  • 世界杯16强名单

最新发表

  • 解锁Android WiFi潜能:轻松开启无线连接,畅享高速网络生活!
  • 梦幻西游场景迭代汇总━门派场景篇 (多图慎入)
  • 咪咕用户中心门户
  • 免费的看电影app有哪些?好用的免费看电影软件分享
  • oppo旗下各个品牌及其产品线的差异
  • 什么是决赛
  • 适合女生纹身的15个位置!
  • 汪诘:面对疫情,上海人真正怕的是什么?
  • 七日杀睡觉方法介绍
  • 新中大财务软件优点和缺点,新中大财务软件:优势与挑战一览

友情链接

Copyright © 2022 世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com All Rights Reserved.

mysql proxy 优缺点_浅谈MySQL之ProxySQL

北京世界杯 · 2025-06-01 17:06:59

一、概述

ProxySQL是MySQL的一款中间件产品,可以实现读写分离,支持Query路由功能,支持动态指定某个sql进行缓存,支持动态加载配置、故障切换和一些sql过滤功能。

详细信息:https://github.com/sysown/proxysql/wiki

二、安装配置

2.1 环境介绍:

数据库集群为一主两从架构:master–192.168.56.11 slave01–192.168.56.12 slave02–192.168.56.13,从库开启只读模式。 proxysql的IP:192.168.56.14

2.2 安装过程

2.2.1 解决依赖关系:

yum install -y perl-DBD-MySQL

yum install -y perl-DBI

yum install -y perl-Time-HiRes

yum install -y perl-IO-Socket-SSL

ProxySQL软件包下载地址

GitHub官网:https://github.com/sysown/proxysql/release

Percona官网:https://www.percona.com/downloads/proxysql

2.2.2 安装ProxySQL

rpm -ivh proxysql-1.3.9-1-centos67.x86_64.rpm

配置文件路径为:/etc/proxysql.cnf

启动ProxySQL,用户名和密码都是admin。

service proxysql start

查看端口,其中6032是proxysql的管理端口号,6033是对外服务的端口号

netstat -anlp|grep proxysql

管理员登陆:

/usr/local/mysql/bin/mysql -uadmin -padmin -h 127.0.0.1 -P 6032

其中有四个库:main、disk、stats和monitor

main库:内存配置数据库,即MEMORY,表里存放后端db实例、用户验证、路由规则等信息。

(1)mysql_servers–后端可以连接MySQL服务器的列表。

(2)mysql_users–配置后端数据库的账号和监控的账号

(3)mysql_query_rules–指定query路由到后端不通服务器的规则列表

表名以runtime_开头的表示proxysql当前运行的配置内容,不能通过DML语句修改。只能修改对应的不以runtime开头的表,然后“LOAD"使其生效,"SAVE"使其存到硬盘以供下次重启加载。

disk库:持久化磁盘的配置。

stats库:统计信息的汇总。

monitor库:一些监控的收集信息,包括数据库的健康状态等。

三、监控配置

在主库192.168.56.11上创建监控账号和对外访问账号并授权

create user 'mointor'@'192.168.56.%' identified by 'monitor';

grant all privileges on *.* to 'mointor'@'192.168.56.%' with grant option;

create user 'zs'@'192.168.56.%' identified by 'zs';

grant all privileges on *.* to 'zs'@'192.168.56.%' with grant option;

flush privileges;

四、Proxysql的多层配置系统

ProxySQL的整套配置系统分为三层,顶层为RUNTIME,中间层为MEMORY,底层为持久层DISK和CONFIG FILE。

(1)RUNTIME:代表proxysql当前生效的正在使用的配置,无法直接修改这里的配置,必须要从下一层“load”进来。

(2)MEMORY:MEMORY层上面连接RUNTIME层,下面连接持久化层。可以正常操作proxysql配置,随便修改,不会影响生成环境。修改一个配置一般都是先在MEMORY层完成的,确认正常后再加载到RUMTIME和持久化到磁盘上

(3)DISK和CONFIG FILE:持久化配置信息,重启后内存中的配置信息会丢失,所以需要将配置信息保留在磁盘中。重启时,可以从磁盘快速加载回来。

4.1 proxysql添加主从服务器列表

加载完成后三台机器都是ONLINE状态

insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.56.11',3306);

insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.56.12',3306);

insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.56.13',3306);

load mysql servers to runtime;

save mysql servers to disk;

4.2 为proxysql配置监控账号

set mysql-monitor_username='monitor';

set mysql-monitor_password='monitor';

load mysql variables to runtime;

save mysql variables to disk;

验证监控信息:

select * from monitor.mysql_server_connect_log order by time_start_us desc limit 6;

select * from monitor.mysql_server_ping_log order by time_start_us desc limit 6;

五、配置proxysql主从分组信息

5.1 会涉及到admin库中的表:

mysql_replication_hostgroups,该表中writer_hostgroup是写入组的编号,reader_hostgroup是读取组的编号。该处设置10为写入组,20为读取组

insert into mysql_replication_hostgroup value (10,20,'proxy');

load mysql servers to runtime;

save mysql servers to disk;

数据库节点read_only的值为0时会被分到10的写组,read_only为1分到编号为20的读组。

select * from mysql_servers;

5.2 配置对外访问账号,默认指定主库,并对该用户开始事务持久化保护。

mysql_users表中的transaction_persistent字段默认为0,建议在创建完用户后设置为1,避免发生脏读、幻读等现象

insert into mysql_users(username,password,default_hostgroup) values ('zs','zs',10);

update mysql_users set transaction_persistent=1 where username='zs';

load mysql users to runtime;

save mysql users to disk;

对外端口号需要指定为6033。

六、读写分离策略

6.1 配置读写分离策略

需要使用mysql_query_rules表,表中match_pattern字段代表设置的规则,destination_hostgroup字段代表默认指定的分组,apply代表真正执行应用规则。

把所有以select开头的语句全部分配到编号为20的读组中,select for update会产生一个写锁,对数据查询的时效性要求高,把它分配到编号为10的写组,其它所有操作都会默认路由到写组。

insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values (1,'^SELECT.*FOR UPDATE$',10,1);

insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values (1,'^SELECT',20,1);

load mysql query rules to runtime;

save mysql query rules to disk;

6.2 测试读写分离

通过创建对外账号zs连接proxysql登陆数据

mysql -uzs -pzs -h 192.168.56.14 -P 6033

select * from tt;

登陆管理端口,通过查询stats_mysql_query_digest监控查询状态

select * from stats_mysql_query_digest;

继续测试

mysql -uzs -pzs -h 192.168.56.14 -P 6033

select * from zs.tt for update;

update tt set name='ff' where score=100;

登陆管理端口,通过查询stats_mysql_query_digest监控查询状态

select * from stats_mysql_query_digest;

6.3 读写分离权重调整

调整192.168.56.13节点的查询权重,使读更多在该节点上

update mysql_servers set weight=10 where hostname='192.168.56.13';

load mysql query rules to runtime;

save mysql query rules to disk;


芷晴名字含义:
平字有哪些成语大全?平歩青云还是平淡无奇?细数那些带“平”字的常用成语!