06proxysqlcluster 集群

2024年 4月 8日 25.7k 0

  1. 1. proxysql cluster背景
  2. 2. proxysql cluster
    1. 2.1. 组件
    2. 2.2. cluster同步的表
    3. 2.3. 相关配置变量
  3. 3. 具体操作
    1. 3.1. 匹配多个PROXYSQL之间的凭证/信息同步和检查
    2. 3.2. 添加PROXYSQL SERVER信息
    3. 3.3. 变更操作触发

proxysql cluster 集群

1. proxysql cluster背景

proxysql作为后端mysql服务和应用之间的桥梁。保证其可靠性也是很重要的

可以把这个Proxysql和应用放在一起。但是带来问题就是节点多的话。

  1. 管理配置比较麻烦。
  2. 配置是分散的,怎么保证配置的一致性
  3. 需要依赖额外的管理工具去部署/维护,运维难度也加大

另一种方式就是将proxysql实现集群cluster。保证高可用

2. proxysql cluster

2.1. 组件

只依靠两个组件

  • monitoring
  • re-configuration

2.2. cluster同步的表

cluster可以同步以下表,来保证cluster集群节点之间的配置同步

  • global_variables (Supported from ProxySQL 2.1.x)
  • mysql_query_rules
  • mysql_servers
  • mysql_users
  • proxysql_servers

2.3. 相关配置变量

  • admin-checksum_mysql_query_rules: 默认True, 每次执行LOAD MYSQL QUERY RULES TO RUNTIME时,ProxySQL都会生成一个新的配置校验和。如果设置为false,则不会自动传播新配置,也不会从远程节点同步
  • admin-checksum_mysql_query_rules: 默认True, 每次执行LOAD MYSQL SERVERS TO RUNTIME时,ProxySQL都会生成一个新的配置校验和。如果设置为false,则不会自动传播新配置,也不会从远程节点同步
  • admin-checksum_mysql_query_rules: 默认True, 每次执行LOAD MYSQL USERS TO RUNTIME时,ProxySQL都会生成一个新的配置校验和。如果设置为false,则不会自动传播新配置,也不会从远程节点同步
  • admin-cluster_username/admin-cluster_password: monitor使用此凭据连接其他ProxySQL实例。注意,用户名/密码对也应该出现在admin-admin_credentials中定义,否则连接不上对方实例。如果没有定义admin-cluster_username,则Clustering不会执行任何检查
  • admin-cluster_check_interval_ms: 该变量定义校验和检查之间的间隔。默认值:1000。最小:10,最大:300000
  • admin-cluster_check_status_frequency: 如果大于0,则此变量定义执行状态检查的校验和次数。默认值:10。最小值:0,最大值:10000
  • admin-cluster_mysql_query_rules_save_to_disk: 当为true(默认)时,在远程同步和加载到运行时后,新的mysql_query_rules也被保存到磁盘;
  • admin-cluster_mysql_servers_save_to_disk: 当为true(默认)时,在远程同步和加载到运行时后,新的mysql_servers也被保存到磁盘上;
  • admin-cluster_mysql_users_save_to_disk: 当为true(默认)时,在远程同步和加载到运行时后,新的mysql_users也被保存到磁盘上;
  • admin-cluster_proxysql_servers_save_to_disk: 当为true(默认)时,在远程同步和加载到运行时后,新的proxysql_servers也被保存到磁盘上;
  • admin-cluster_mysql_query_rules_diffs_before_sync: 定义有多少次检查到mysql_query_rules的差异后触发mysql_query_rules的同步。最小值:0(从不同步) 最大值:1000
  • admin-cluster_mysql_servers_diffs_before_sync: 定义有多少次检查到mysql_servers的差异后触发mysql_servers的同步。最小值:0(从不同步) 最大值:1000
  • admin-cluster_mysql_users_diffs_before_sync: 定义有多少次检查到mysql_users的差异后触发mysql_users的同步。最小值:0(从不同步) 最大值:1000
  • admin-cluster_proxysql_servers_diffs_before_sync: 定义有多少次检查到proxysql_servers的差异后触发proxysql_servers的同步。最小值:0(从不同步) 最大值:1000

3. 具体操作

3.1. 匹配多个PROXYSQL之间的凭证/信息同步和检查

-- 添加登陆账号密码,用于cluster账号互联
update global_variables set variable_value='admin:admin;proxysql:1234;cluster_admin:1234' where variable_name='admin-admin_credentials';
-- 配置cluster账号密码
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';
-- 配置mysql_monitor账号密码
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';

--- 配置cluster间的检查频率及延时
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';

3.2. 添加PROXYSQL SERVER信息

需要预先的将这个集群中的PROXYSQL 进行一个配置,以上的操作需要在每个PROXYSQL中操作

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;

3.3. 变更操作触发

当执行以下命令时,会触发Proxysql的集群状态同步,去不同的节点查询,更改后的配置是一致的

SAVE MYSQL USERS TO DISK;
LOAD MYSQL USERS TO RUNTIME;

SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL SERVERS TO RUNTIME;

SAVE MYSQL QUERY RULES TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;

SAVE MYSQL VARIABLES TO DISK;
LOAD MYSQL VARIABLES TO RUNTIME;

SAVE ADMIN VARIABLES TO DISK;
LOAD ADMIN VARIABLES TO RUNTIME;

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论