前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL PROXYSQL "集群"怎么搞 与 灵活的proxysql 应用

MYSQL PROXYSQL "集群"怎么搞 与 灵活的proxysql 应用

作者头像
AustinDatabases
发布2020-10-30 10:20:25
1.3K0
发布2020-10-30 10:20:25
举报

PROXYSQL 是一个集中化的服务节点,在部署PROXYSQL的时候大部分都是单节点来部署,或者和应用节点一起部署.

和应用节点一起部署的好处是当应用节点DOWN掉后,本身也不会影响其他应用上的应用和PROXYSQL的配置,但这样做也有一些问题,例如当我们的应用进行扩展的时候, PROXYSQL 本身也要进行自行的扩展,而多台PROXYSQL 统一维护一些配置信息将是困难和容易出现问题的,所以当我们需要多个PROXYSQL 的进行统一配置的时候,这时就会出现问题.

所以PROXYSQL 题目上的集群,实际上并不是实际意义上的集群,而是一个类似于信息复制的PROXYSQL 复制组的概念.

上面的图可能看上去有些乱,实际上是可以通过PROXYSQL 进行通用的多MYSQL 大型集群的共享方式的访问.配合应用端的设计可以实现多点的复合式的高可用数据访问.

在我们配置PROXYSQL 多点的时候,将访问多个MYSQL的配置写入一台PROXYSQL服务器,通过PROXYSQL 的配置信息复制的方式将后期加入的节点都作为通用型的整体的MYSQL 所有集群节点的访问.

这样的做法在配合应用的情况下,对于应用来说,访问所有的数据库系统都可以在一个节点上进行操作,而不必记得每个系统的地址, 并且多个PROXYSQL 访问任何节点都可以到达,对应的MYSQL 节点,这样对于应用系统的上层是友好的,给应用访问数据库提供了更多的方便和高可用保证.

我们下面做一个简单的多proxysql

PROXYSQL

192.168.198.106

192.168.198.67

192.168.198.68

MYSQL

192.168.198.101

192.168.198.102

怎么搭建MYSQL 和主从并不是关键点,并且也是基础知识,就忽略过了

安装proxysql 的版本是2.012这里也忽略如何安装,这里提示直接下载,yum 安装即可.

在安装后,我们需要住一个需要对三个PROXYSQL 先进行初始化设置

update global_variables set variable_value='admin:admin;proxysql:1234;cluster_admin:1234' where variable_name='admin-admin_credentials';

update global_variables set variable_value='cluster_admin' where variable_name='admin-cluster_username';

update global_variables set variable_value='1234' where variable_name='admin-cluster_password';

update global_variables set variable_value='proxysql' where variable_name='mysql-monitor_username';

update global_variables set variable_value='1234' where variable_name='mysql-monitor_password';

这里需要设置登陆PROXYSQL的用户名密码, PROXYSQL cluster的用户名密码,以及PROXYSQL 监控MYSQL的用户名密码.

同时MYSQL 中需要配置PROXYSQL连接MYSQL 的监控账号和密码,否则整个系统不会正常工作

update global_variables set variable_value=1000 where variable_name='admin-cluster_check_interval_ms';

update global_variables set variable_value=10 where variable_name='admin-cluster_check_status_frequency';

update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_query_rules_save_to_disk';

update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_servers_save_to_disk';

update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_users_save_to_disk';

update global_variables set variable_value='true' where variable_name='admin-cluster_proxysql_servers_save_to_disk';

update global_variables set variable_value=3 where variable_name='admin-cluster_mysql_query_rules_diffs_before_sync';

update global_variables set variable_value=3 where variable_name='admin-cluster_mysql_servers_diffs_before_sync';

update global_variables set variable_value=3 where variable_name='admin-cluster_mysql_users_diffs_before_sync';

update global_variables set variable_value=3 where variable_name='admin-cluster_proxysql_servers_diffs_before_sync';

以上的配置是匹配多个PROXYSQL 之间的信息同步和检查

LOAD MYSQL USERS TO RUNTIME;

SAVE MYSQL USERS TO DISK;

LOAD MYSQL SERVERS TO RUNTIME;

SAVE MYSQL SERVERS TO DISK;

LOAD MYSQL QUERY RULES TO RUNTIME;

SAVE MYSQL QUERY RULES TO DISK;

LOAD MYSQL VARIABLES TO RUNTIME;

SAVE MYSQL VARIABLES TO DISK;

LOAD ADMIN VARIABLES TO RUNTIME;

SAVE ADMIN VARIABLES TO DISK;

加载后

INSERT INTO proxysql_servers (hostname,port,weight,comment) VALUES ('192.168.198.106',6032,0,'p1');

INSERT INTO proxysql_servers (hostname,port,weight,comment) VALUES ('192.168.198.67',6032,0,'p2');

INSERT INTO proxysql_servers (hostname,port,weight,comment) VALUES ('192.168.198.68',6032,0,'p3');

LOAD PROXYSQL SERVERS TO RUNTIME;

SAVE PROXYSQL SERVERS TO DISK;

需要预先的将这个集群中的PROXYSQL 进行一个配置,

以上的操作需要在每个PROXYSQL中操作.

此时我们查看每个PROXYSQL的日志

测试三台机器开始评判相关的配置的版本

这里需要关注的几点

1 服务器之间同步的信息包括了以下的信息

  • mysql_query_rules
  • mysql_servers
  • mysql_users
  • proxysql_servers

2 只有在上载后,相关的服务器的信息才能被传到其他的PROXYSQL服务器

3 相关的 SELECT name, version, FROM_UNIXTIME(epoch), checksum FROM runtime_checksums_values ORDER BY name;

要查询相关的可以在多个服务器上传递的信息,需要查看runtime_checksums_values 表,这里有每个服务器的配置信息的版本,并且如果服务器组中的 checksum 不一致就说明配置信息在集群中存在不一致的情况,需要进行查看和改正.

实际上通过PROXYSQL 的"集群" 方案可以更灵活的访问MYSQL 并且设置相关的"门槛" , 并且在大规模访问的情况下,可以降低连接的消耗,提高连接的复用.

4 如果PROXYSQL 一个节点DOWN 掉后,再次启动后,会将落后的版本配置更新,追上其他节点的最新版本

5 通过其他程序,可以编写判断节点是否存活的程序,并且将访问导向可以提供服务的PROXYSQL

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档