【MySQL高可用集群 六】ProxySQL安装部署
【MySQL高可用集群 二】MySQL主从搭建(GTID方式)
【MySQL高可用集群 七】ProxySQL&MySQL 主从环境搭建
【MySQL高可用集群 八】ProxySQL&MGR 环境搭建
ProxySQL是一款开源的使用C++编写的mysql集群代理中间件。特点是高效灵活,使用简单,并且性能是所有中间件中比较优秀的。ProxySQL主要支持MySQL的主从集群和组复制集群,其主要功能有以下几个:
1、代理服务:代理后端MySQL服务,进行相关指标的监控
2、负载均衡:后端多节点的访问进行负载均衡
3、高可用:自动识别异常节点,并屏蔽异常节点,保障集群的稳定
4、读写分离:自动动态的识别读写节点,转发SQL至对应节点执行
5、数据分片:通过路由规则,进行SQL分发,达到数据分片的目的
ProxySQL兼容MySQL协议,可以像连接MySQL一样连接ProxySQL,执行简单的SQL语句。ProxySQL本身相关信息数据的存储使用的是sqlite3,部分MySQL语句功能没有完全兼容,所以通过 mysql client 可以正常连接并使用ProxySQL,如果通过dbeaver或者navcat等工具则无法正常使用。
一、ProxySQL 安装部署
在主机节点 10.53.207.24 中安装 ubuntu22.04 ,ubuntu中可以通过两种方式安装:
1、添加源,然后安装
apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates gnupg wget -O - 'https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/repo_pub_key' | apt-key add - echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list wget -nv -O /etc/apt/trusted.gpg.d/proxysql-2.5.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/repo_pub_key.gpg'
apt-get update apt-get install proxysql 或者 apt-get install proxysql=version
2、直接下载安装包进行安装
可以在官网 https://proxysql.com/ 直接下载,或者通过GitHub进行下载
下载:
wget https://github.com/sysown/proxysql/releases/download/v2.5.4/proxysql_2.5.4-ubuntu22_amd64.deb
安装:
sudo dpkg -i proxysql_2.5.4-ubuntu22_amd64.deb
配置文件位置: /etc/proxysql.cnf,此配置文件只在第一次启动时生效,如果已经生成了数据库文件,则后续所有的配置都是从数据中进行加载。
默认文件路径:
datadir="/var/lib/proxysql",内置数据库文件的存放路径。
errorlog="/var/lib/proxysql/proxysql.log",日志文件的存放路径。
3、检查安装是否成功:
root@ubuntu-manager:/# proxysql --version ProxySQL version 2.5.4-58-gd15b40a, codename Truls
服务启动&停止
service proxysql stop | service proxysql start | service proxysql restart
#安装mysql客户端
apt install mysql-client-core-8.0
当前主机登录ProxySQL:
mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt='ProxySQL> '
登录成功,安装完毕!
二、配置详解
1、ProxySQL 的多层配置
(1)runtime 中是ProxySQL应用程序线程进行读写的内存数据结构,这里存储的都是生效的配置。
(2)memory 是内存数据库,本质就是main库。通过命令接口修改的配置都是针对内存库的修改。只有加载到 runtime 中配置才会生效,只有 保存到 disk 中配置才会持久化。
(3)disk 是 memory 数据库的持久化副本,同时ProxySQL启动时会从 disk 中加载数据到 memory 中。config file 是ProxySQL 配置文件 /etc/proxysql.cnf,只有类似 datadir、errorlog 这样固定的配置才在其中配置。
各层配置可以相互进行同步,但不能夸层,同步方向如上图所示。可以使用四种语法进行描述:
- LOAD var FROM YY
- LOAD var TO YY
- SAVE var FROM YY
- SAVE var TO YY
例如常用的命令:
load mysql servers to runtime :对应图中 [1],表示将 mysql servers 配置从 memory 同步到 runtime 使配置生效。
save mysql servers to disk :对应图中 [4],表示将 mysql servers 配置从 memory 同步到 disk 进行持久保存。
2、ProxySQL自身配置数据库信息
共有五个库,功能如下
mian :ProxySQL主要的配置库,存在于内从中。
disk:main的持久化库,是sqlite3 的数据库文件。
stats:ProxySQL相关的统计数据,存在于内从中。
stats_history:ProxySQL和系统 相关的历史统计信息。
monitor:相关的状态监控信息。
可以通过命令查看每个库的表信息:
3、主要的配置属性:
global_variables 表中的通用属性配置,包含两类变量,以amdin-开头的表示admin variables,以mysql-开头的表示mysql variables。
查询:
select * from global_variables where variable_name='admin-admin_credentials' 或
select @@admin-admin_credentials;
更新:
update global_variables set variable_value='admin:admin;hadmin:hpasswd' where variable_name='admin-admin_credentials' 或
set admin-admin_credentials='admin:admin;hadmin:hpasswd'
admin-admin_credentials :admin管理接口超级管理员的账户密码配置,默认为 admin:admin,只能本地登录,远程登录需要添加其他名称的管理员账号。
admin-stats_credentials :admin管理接口的普通用户,没有任何写权限,只能查看monitor库和main库中关于统计的数据,默认为 stats:stats。可以通过命令 。
admin-web_enabled:ProxySQL 统计功能的web页面访问是否开启,默认false。开启后可以通过 https://服务IP:6080/ 进行访问。
admin-mysql_ifaces:admin接口的监听地址,格式为hostname:port,多个地址之间用分号分隔,默认 0.0.0.0:6032 ,接收任何地址通过 6032 端口连接。
admin-cluster_username & admin-cluster_password:ProxySQL集群中各个ProxySQL节点进行通信的账号密码。
admin-hash_passwords:默认 true,连接时会对明文密码进行hash。如果后端mysql版本是8.0+,并且后端账号使用了caching_sha2_password插件认证,则应设置为false。
mysql-interfaces:代理MySQL的接口监听地址,格式为hostname:port,多个地址之间用分号分隔,默认 0.0.0.0:6033,任何地址通过 6033 地址可以像连接MySQL一样连接ProxySQL。
mysql-server_version:ProxySQL 代理的 MySQL服务的版本,尽量设置为后端 真实MySQL服务的版本,否则会出现兼容性问题。
mysql-threads:处理MySQL客户端和服务端连接流量的线程数,默认 4。ProxySQL基于多路复用技术,用少量线程处理大量MySQL连接。
mysql-monitor_enabled:ProxySQL 的MySQL监控是否开启,默认true。
mysql-monitor_username & mysql-monitor_password:ProxySQL与MySQL进行监控通信的账号密码,在后端每个MySQL服务节点上都必须有且相同,ProxySQL通过这个账号密码登录后端MySQL服务进行一些状态查询,确认服务是否健康。
mysql-monitor_writer_is_also_reader:默认为 true,ProxySQL会将后端的 主节点(可读可写节点)同时分配至读分组和写分组中,如果只让主节点执行写操作,则可以设置为 true。
4、主要的数据表
查看数据库中的表:
show tables from main:查看 main 库中的表
show tables from disk:查看 disk 库中的表
表名 |
生效和持久化命令 |
说明 |
global_variables |
load admin variables to runtime; load mysql variables to runtime; save admin variables to disk; save mysql variables to disk; |
全局配置属性。参数分为admin参数和mysql参数两大类。 |
mysql_servers |
load mysql servers to runtime; save mysql servers to disk; |
配置后端MySQL服务器。 |
mysql_replication_hostgroups |
load mysql servers to runtime; save mysql servers to disk; |
配置常规MySQL主备复制hostgroup。 |
mysql_group_replication_hostgroups |
load mysql servers to runtime; save mysql servers to disk; |
配置MySQL组复制hostgroup。 |
mysql_users |
load mysql users to runtime; save mysql users to disk; |
配置数据操作账号,用户需要和后端MySQL服务账号相同,ProxySQL对用户发起的SQL路由至后端相关的MySQL上。 |
mysql_query_rules |
load mysql query rules to runtime; save mysql query rules to disk; |
配置查询时SQL路由规则。 |
proxysql_servers |
load proxysql servers to runtime; save proxysql servers to disk; |
配置proxysql集群 |
mysql_server_connect_log |
ProxySQL与后端MySQL服务连接日志 |
|
mysql_server_ping_log |
Monitor模块向所有后端MySQL节点发起ping检查,ping成功/失败的情况将记录 |
|
mysql_server_read_only_log |
检查mysql_servers表中所有节点的read_only值,并记录 |
|
mysql_server_replication_lag_log |
对mysql_servers表中所有配置了max_replication_lag的后端slave节点都检查复制延迟,通过MySQL服务的Seconds_Behind_Master字段,判断slave和master之间的延迟程度,并记录。如果Seconds_Behind_Master > max_replication_lag,表示该slave延迟很严重,ProxySQL会自动避开这种slave节点,直到Seconds_Behind_Master < max_replication_lag。 |
|
runtime_mysql_servers |
ProxySQL的runtime 时态下MySQL后端服务节点动态列表,可以动态的观察到节点的相关状态。 |
|
runtime_global_variables |
ProxySQL实时的全局变量表 |
|
runtime_mysql_users |
ProxySQL生效的账户信息,此表中密码默认会hash散列加密 |
原创文章,引用转载请注明出处:https://www.cnblogs.com/hewei-blogs/articles/17654851.html
本文来自博客园,作者:蓝迷梦,转载请注明原文链接:https://www.cnblogs.com/hewei-blogs/articles/17654851.html