03proxysql后端连接数据库配置

  1. 1. proxysql后端连接数据库配置传递
  2. 2. 后端mysql数据库新增
    1. 2.1. 基本命令
    2. 2.2. 添加带hostgroup组的mysql后端数据库
  3. 3. 后端mysql数据库配置修改
    1. 3.1. 修改最大连接数
    2. 3.2. 修改权重
    3. 3.3. 备库replication_lag延时回避
    4. 3.4. 开启压缩
  4. 4. 后端mysql server下线
    1. 4.1. 温和下线后端mysql服务
    2. 4.2. 立即下线后端mysql服务
    3. 4.3. 重新激活mysql服务
    4. 4.4. 移除mysql server
  5. 5. 注意

前言: proxysql需要正确添加后端数据库,才可以将流量转发到对应的数据库上面

1. proxysql后端连接数据库配置传递

首先需要理解proxy配置文件的层级

当修改mysql_servers和mysql_replication_hostgroups配置后,不会立即生效

  1. 如果需要生效,则需要加载到runtime里面。 LOAD MYSQL SERVERS TO RUNTIME
  2. 如果没有保存至磁盘: SAVE MYSQL SERVERS TO DISK ; 则重启、意外宕机后,配置会丢失。

2. 后端mysql数据库新增

2.1. 基本命令

-- 查询
SELECT * FROM mysql_servers;

INSERT INTO mysql_servers (hostname) VALUES ('172.16.0.1');

2.2. 添加带hostgroup组的mysql后端数据库

INSERT INTO mysql_servers (hostgroup_id, hostname) VALUES (1, '172.16.0.2'), (1,'172.16.0.3');

3. 后端mysql数据库配置修改

3.1. 修改最大连接数(根据实际)

UPDATE mysql_servers SET max_connections=10 WHERE hostname='172.16.0.2';

SELECT hostgroup_id,hostname,max_connections FROM mysql_servers;

3.2. 修改权重(根据实际)

同一主机主中权重越大,从主机组中选择该服务器的概率就越高。ProxySQL默认的负载均衡算法是随机加权的

UPDATE mysql_servers SET weight=1000 WHERE hostname NOT IN ('172.16.0.2', '172.16.0.1') AND hostgroup_id=1;

3.3. 备库replication_lag延时回避(根据实际)

需要配置mysql_servers的max_replication_lag,大于0(单位s)才会检测。如果主备延迟较大,proxysql会避免发请求给该服务器

UPDATE mysql_servers SET max_replication_lag=30 WHERE hostname='172.16.0.3';

3.4. 开启压缩

需要将compression至为1

UPDATE mysql_servers SET compression=1 WHERE hostname='172.16.0.2' AND hostgroup_id=1;

4. 后端mysql server下线

4.1. 温和下线后端mysql服务

将MYSQL服务状态更改为OFFLINE_SOFT。活动事务和连接还会继续使用,但不会向节点发送新的流量


UPDATE mysql_servers SET status='OFFLINE_SOFT' WHERE hostname='172.16.0.2';

4.2. 立即下线后端mysql服务

将MYSQL服务状态更改为OFFLINE_HARD 。所有当前的连接和事务将会杀掉,并且不会发送新的流量。

UPDATE mysql_servers SET status='OFFLINE_HARD' WHERE hostname='172.16.0.1' AND hostgroup_id=1;

4.3. 重新激活mysql服务

直接将mysql server 状态改成 ONLINE

UPDATE mysql_servers SET status='ONLINE' WHERE status NOT IN ('ONLINE');

4.4. 移除mysql server

直接delete掉对应的mysql server

DELETE FROM mysql_servers WHERE hostgroup_id=1 AND hostname IN ('172.16.0.1','172.16.0.2');

5. 注意

所有修改的mysql server配置信息,都需要加载至runtime运行时。以及保存至disk

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