MySQL运维实战之ProxySQL(9.9)proxysql自身高可用

俊达9个月前技术文章467

proxysql作为一个程序,本身也可能出现故障。部署proxysql的服务器也肯能出现故障。高可用架构的一个基本原则是消除单点。


可以在多个节点上部署proxysql,在proxysql之前再加一层负载均衡(如使用LVS或其他技术),从而消除proxysql的单点。也可以使用keepalived等技术来实现proxysql的高可用


proxysqlha.png


部署多台proxysql后,需要确保多台proxysql的配置同步。不然就可能会引起客户端访问出错。可以使用proxysql自带的集群功能来保证多个节点之间的配置信息同步。

开启proxysql的集群功能,需要:

  • 配置cluster账号,用于查询对比集群内各proxysql节点的配置信息

  • 配置proxysql_servers,将集群内的proxysql节点信息添加到proxysql_servers表

以上操作需要到组成集群的每一个proxysql节点上执行。



配置cluster账号

通过参数admin-cluster_username和admin-cluster_password设置cluster账号。不能使用admin账号作为cluster账号,因为admin账号只能在本地(127.0.0.1)登陆。

同时还需要将cluster账号添加到参数admin-admin_credentials中。


set admin-admin_credentials = 'admin:admin;clusteradmin:passadmin';

set admin-cluster_username='clusteradmin';
set admin-cluster_password='passadmin';

load admin variables to runtime;
save admin variables to disk;



使用proxysql集群

将组成proxysql集群的多个节点的信息添加到proxysql_servers表。

mysql> show create table proxysql_servers\G
*************************** 1. row ***************************
       table: proxysql_servers
Create Table: CREATE TABLE proxysql_servers (
    hostname VARCHAR NOT NULL,
    port INT NOT NULL DEFAULT 6032,
    weight INT CHECK (weight >= 0) NOT NULL DEFAULT 0,
    comment VARCHAR NOT NULL DEFAULT '',
    PRIMARY KEY (hostname, port) )
1 row in set (0.00 sec)

insert into proxysql_servers values('172.16.121.234', 6032, 1, 'proxysql node 1');
insert into proxysql_servers values('172.16.121.236', 6032, 1, 'proxysql node 2');


LOAD PROXYSQL SERVERS TO RUNTIME;
save PROXYSQL SERVERS TO disk;



配置完成后,在其中一个节点修改配置,观察配置是否同步到集群的其他节点。

相关文章

解决grafana服务无法停止问题

解决grafana服务无法停止问题

背景:grafana服务无法停止,无论使用什么方式,哪怕使用kill -9 ,杀掉进程都会重新启动解决办法:1、将grafana加到系统服务里去systemctl enable grafana.ser...

rancher上kube-prometheus部署报错处理

rancher上kube-prometheus部署报错处理

问题描述rancher 上安装kube-prometheus,版本:8.3.9  ,Chart 仓库:bitnami 服务 pod: prometheus-kube-prometheus-promet...

PG的pathman分区表工具

一、概述在PG<=10的版本中,都是通过表继承的方式进行分区的,必须使用CHECK CONSTRAINT将每个分区创建为子表 。PostgreSQL 10提供了本机分区,它与经典方法没有什么不同...

MySQL运维实战(4.5) SQL_MODE之NO_ZERO_DATE和NO_ZERO_IN_DATE

NO_ZERO_DATE:日期中不允许'0000-00-00'NO_ZERO_IN_DATE:日期中年、月或日不允许为0,如不允许'2021-00-01', '...

docker日志切割

docker日志切割

如果在docker部署前期没有规划好,例如:没有提前配置容器日志切割,那么在后期容器日志就会越来越大,当想要通过日志查看相关报错等信息的时候就会比较麻烦。配置docker日志切割在/etc/docke...

CDP实操--Ranger Tag-based策略验证(四)

CDP实操--Ranger Tag-based策略验证(四)

1.1Ranger Tag-based策略验证在Ranger webui里给allan_admin和sam_sec用户赋权,给予添加classification的权限使用allan_admin或者sa...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。