作者:杨涛涛
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
通过上一章节的介绍,我们已经了解ProxySQL 如何基于 MySQL 主从以及组复制架构来构建读写分离、故障转移等功能点,但没有涵盖ProxySQL 相关配置表的工作细节。那本章就对上节遗漏的内容进行一个延伸讲解。
先来了解下 ProxySQL 的内置数据库列表:
ytt:admin> show databases;
+-----+---------------+-------------------------------------+
| seq | name | file |
+-----+---------------+-------------------------------------+
| 0 | main | |
| 2 | disk | /var/lib/proxysql/proxysql.db |
| 3 | stats | |
| 4 | monitor | |
| 5 | stats_history | /var/lib/proxysql/proxysql_stats.db |
+-----+---------------+-------------------------------------+
5 rows in set (0.00 sec)
以上所列数据库中,main 代表 runtime ,也即运行时库;disk 代表持久化库;stats 代表统计数据库;monitor 代表监控数据库;stats_history 代表统计数据库归档。
对于储存 MySQL 主从、组复制、读写分离的几张配置表,在每个库里都存在,不同的库代表不同的运行范畴。
第一,后端主机元数据库表
mysql_servers:该表为存储后端数据库相关元数据信息的基础表,所有的后续操作都需要访问并且更新这张表。
其中主要几个字段如下:
hostgroup_id, 后端MySQL实例的主机组标志,每个实例可以设置为一样的数值或者设置为不相同的数值,推荐一组实例设置为相同。
gtid_port, Proxy Binlog Reader 组件需要监听的端口。 不使用此组件可以保持默认即可。
status ,实例状态值。
- online ,默认选项,在线提供服务,也即正常状态;
- offline_soft ,非强制下线状态,也即处理完当前会话后停止接受新请求;
- offline_hard ,强制下线,强制关闭目所有会话,并且不再接受新的请求;
- shunned ,后端实例由于太多错误连接而暂时关闭的状态或者说由于超过设定的延迟时间而暂停处理新请求。
weight,一个组里的实例优先级,优先级越高的越有几率被选中。比如多个从实例,可以提升一个节点的优先级来保证流量分配优先。
compression ,是否压缩连接请求。默认不压缩,可以设置为1表示压缩。
max_connections ,通过 ProxySQL 流量端口的最大连接数限制。
max_replication_lag,指定实例状态被设置为 shunned 的延迟时间。 超过这个时间后,指定实例状态由 online 变为 shunned ,直到积压的请求处理完成。
比如下面 runtime 级别的 mysql_servers 表记录: 由于这几个节点都没有运行,状态都为 shunned :
ytt:admin> select hostgroup_id,hostname,port,status,max_connections from runtime_mysql_servers where hostg

本文深入探讨了ProxySQL的配置细节,包括其内置数据库如main、disk、stats、monitor和stats_history的功能。重点解析了mysql_servers、mysql_users、mysql_replication_hostgroups、mysql_group_replication_hostgroups和mysql_query_rules这五张核心配置表,阐述了它们在MySQL主从和组复制架构中的角色,如后端主机管理、用户授权、主从和组复制流量分发以及读写分离策略的实现。内容涵盖了实例状态管理、事务处理、流量控制和故障转移等关键功能。
最低0.47元/天 解锁文章
151

被折叠的 条评论
为什么被折叠?



