03proxysql后端连接数据库配置
- 1. proxysql后端连接数据库配置传递
- 2. 后端mysql数据库新增
- 2.1. 基本命令
- 2.2. 添加带hostgroup组的mysql后端数据库
- 3. 后端mysql数据库配置修改
- 3.1. 修改最大连接数
- 3.2. 修改权重
- 3.3. 备库replication_lag延时回避
- 3.4. 开启压缩
- 4. 后端mysql server下线
- 4.1. 温和下线后端mysql服务
- 4.2. 立即下线后端mysql服务
- 4.3. 重新激活mysql服务
- 4.4. 移除mysql server
- 5. 注意
前言: proxysql需要正确添加后端数据库,才可以将流量转发到对应的数据库上面
1. proxysql后端连接数据库配置传递
首先需要理解proxy配置文件的层级
当修改mysql_servers和mysql_replication_hostgroups配置后,不会立即生效
- 如果需要生效,则需要加载到runtime里面。 LOAD MYSQL SERVERS TO RUNTIME
- 如果没有保存至磁盘: 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。活动事务和连接还会继续使用,但不会向节点发送新的流量
将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;