Proxysql 实战
上一小节我们介绍了 MGR 环境的部署,接下来我们从实战角度,继续学习这套高可用架构的 Proxysql部分。
1. Proxysql 介绍
ProxySQL 是基于 MysqL 的一款开源的中间件产品,是一个轻量级的 MysqL 代理层,可以实现读写分离,故障切换,集群部署,监控后端节点,可缓存查询结果,支持 Query 路由功能,支持动态指定某个sql 进行缓存,支持动态加载。
2. Proxysql 部署
下面从实战的角度一步步搭建 Proxysql 环境。
2.1 基本环境
2.2 安装配置
安装 proxysql:
--新安装
rpm -ivh proxysql-2.0.5-1-centos7.x86_64.rpm
--升级
rpm -Uvh proxysql-2.0.5-1-centos7.x86_64.rpm
--删除
rpm -qa | grep proxysql
rpm -e proxysql-2.0.5-1-centos7.x86_64
--启动proxysql
service proxysql start
--检查版本
proxysql –version
--proxysql路径
/var/lib/proxysql
配置后端 MysqL 机器:
--配置后端MysqL机器(在Proxysql中执行)
--登录proxysql管理端口
MysqL -uadmin -padmin -h127. -P6032;
insert into MysqL_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment)
values(,'192.168.0.1',,,,,'MysqL-1'),
(,'192.168.0.1',,,,,'MysqL-1'),
(,'192.168.0.2',,,,,'MysqL-2'),
(,'192.168.0.3',,,,,'MysqL-3');
select * from MysqL_servers;
-- 持久化(在Proxysql中执行)
save MysqL servers to disk;
-- 加载到线上(在Proxysql中执行)
load MysqL servers to runtime;
--监控账号(在MysqL中执行)
GRANT USAGE ON *.* TO 'monitor_user'@'.%' IDENTIFIED BY '';
--程序账号(在MysqL中执行)
GRANT SELECT, INSERT, UPDATE, DELETE ON center.* TO 'app_user'@'.%' identified by '';
--登录proxysql管理端口
MysqL -uadmin -padmin -h127. -P6032;
UPDATE global_variables SET variable_value='monitor_user' WHERE variable_name='MysqL-monitor_username';
UPDATE global_variables SET variable_value='123456' WHERE variable_name='MysqL-monitor_password';
--加载和持久化
save MysqL variables to disk;
load MysqL variables to runtime;
--配置后端MysqL程序用户(在Proxysql中执行)
insert into MysqL_users(username,password,active,default_hostgroup,transaction_persistent, max_connections) values('app_user','123456',,,,)
-- 持久化(在Proxysql中执行)
save MysqL users to disk;
-- 加载到线上(在Proxysql中执行)
load MysqL users to runtime;
加载配置和变量
-- 持久化(在Proxysql中执行)
save MysqL servers to disk;
save MysqL users to disk;
save MysqL variables to disk;
save MysqL query rules to disk;
-- 加载到线上(在Proxysql中执行)
load MysqL servers to runtime;
load MysqL users to runtime;
load MysqL variables to runtime;
load MysqL query rules to runtime;
定义路由规则
-- 发送到主库(在Proxysql中执行)
INSERT INTO MysqL_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(,'^SELECT.*FOR UPDATE$',,);
-- 发送到从库(在Proxysql中执行)
INSERT INTO MysqL_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(,'^SELECT',,);
-- 加载(在Proxysql中执行)
save MysqL query rules to disk;
load MysqL query rules to runtime;
MGR配置
--配置MGR信息(在每个Proxysql中执行)
insert into MysqL_group_replication_hostgroups (writer_hostgroup,reader_hostgroup,backup_writer_hostgroup, offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind)
values (,,,,,,,);
select * from MysqL_group_replication_hostgroups;
-- 加载(在每个Proxysql中执行)
save MysqL servers to disk;
load MysqL servers to runtime;
--导入sys视图(在MysqL主库中执行)
source /software/addition_to_sys.sql
addition_to_sys.sql可以从http://lefred.be/content/MysqL-group-replication-native-support-in-proxysql下载
--授权sys库(在MysqL主库中执行)
GRANT SELECT on sys.* to 'monitor_user'@'192.%';
--查看MGR成员基本信息(在MysqL中执行),监测节点的健康与落后情况
select * from sys.gr_member_routing_candidate_status;
--查看MGR各节点状态(在Proxysql中执行)
select hostgroup_id, hostname, status from runtime_MysqL_servers;
--查看MGR各节点日志信息(在Proxysql中执行)
select * from MysqL_server_group_replication_log order by time_start_us desc limit ;
2.3 基础维护
启动 Proxysql:
service proxysql start
停止 Proxysql:
service proxysql stop
连接 Proxysql 管理端口:
MysqL -uadmin -padmin -h127. -P6032;
连接 Proxysql 服务端口:
MysqL -uadmin_user -padmin_user -h127. -P6033;
select hostgroup,schemaname,username,digest_text,count_star from stats_MysqL_query_digest;
3. 小结
本小节主要从实战角度介绍如何搭建 Proxysql 环境。