首页 > 数据库 >ProxySQL简介

ProxySQL简介

时间:2023-08-28 18:32:38浏览次数:75  
标签:monitor 简介 ProxySQL hostgroup servers mysql id select


ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 

ProxySQL简介_ProxySQL

多层配置结构

ProxySQL简介_mysql_02

disk -> 是sqlite3 数据库 ,默认位置是$DATADIR/proxysql.db( /var/lib/proxysql/proxysql.db)
config file 是一个传统配置文件:一般不更改

内置库

main:内存配置数据库,即 MEMORY,表里存放后端 db 实例、用户验证、路由规则等信息
disk :持久化的磁盘的配置 
stats: 统计信息的汇总 
monitor:一些监控的收集信息,比如数据库的健康状态等 
stats_history: 这个库是 ProxySQL 收集的有关其内部功能的历史指标

安装

wget https://github.com/sysown/proxysql/releases/tag/v2.0.17

rpm -ivh proxysql-2.0.13-1-centos7.x86_64.rpm --force --nodeps
systemctl start proxysql
netstat -antp|grep proxysql

ProxySQL简介_mysql_03

基于SQL的读写分离

1、在mysql_replication_hostgroups中配置读写组

mysql -uadmin -padmin -h 127.0.0.1 -P 6032

insert into mysql_replication_hostgroups(writer_hostgroup,reader_hostgroup,comment) values(10,20,'proxy');
load mysql servers  to runtime;
save mysql servers to disk;

2、后端从节点添加只读参数
set global read_only=1;

3、创建监控用户  主库创建监控用户:
create user monitor@'%' identified by '123';
grant replication client on *.* to monitor@'%';

proxySQL中修改variables表:
set mysql-monitor_username='monitor';
set mysql-monitor_password='123';
  
或者:
update global_variables  set variable_value = 'monitor'  where variable_name = 'mysql-monitor_username';
update global_variables  set variable_value = '123'  where variable_name = 'mysql-monitor_password';

生效:
load mysql variables to runtime;
save mysql variables to disk;
注:默认主库也是可以读的,可以设置权重或者从mysql_servers中删除

4、添加主机到proxySQL
insert into mysql_servers(hostgroup_id,hostname,port) values (10,'10.0.0.100',3306);
insert into mysql_servers(hostgroup_id,hostname,port) values (20,'10.0.0.101',3306);  
insert into mysql_servers(hostgroup_id,hostname,port) values (20,'10.0.0.102',3306);
load mysql servers to runtime;
save mysql servers to disk;

4、查看监控日志
select * from mysql_server_connect_log;
select * from mysql_server_ping_log;
select * from mysql_server_read_only_log;
select * from mysql_server_replication_lag_log;

5、创建应用用户
主库:
create user dev@'%' identified by '123';
grant all on  *.* to  dev@'%';

proxySQL中:
insert into mysql_users(username,password,default_hostgroup) values('dev','123',10);
load mysql users to runtime;
save mysql users to disk;

注:早期版本mysql_users 表中的 transaction_persistent值为0 需要修改为1,保证事务完整性


6、读写规则
insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values(1,1,'^select.*for update$',10,1);
insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values(2,1,'^select',20,1);                
load mysql query rules to runtime;
save mysql query rules to disk;

注:select.... for update 的rule_id必须小于普通select语句的rule_id,proxySQL是根据rule_id顺序进行规则匹配的。

7、测试
mysql -udev -p123 -P6033 -h127.0.0.1  -e "begin;select @@server_id;commit;"
mysql -udev -p123 -P6033 -h127.0.0.1  -e "select @@server_id;"             
select *select * from stats_mysql_query_digest;

标签:monitor,简介,ProxySQL,hostgroup,servers,mysql,id,select
From: https://blog.51cto.com/u_14218719/7266012

相关文章

  • PermGen space简介
    PermGenspace简介 PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域OutOfMemoryError:PermGenspace从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:(1)这一部分用于存放Class和Meta的信息,Class在被Load的时候被放入PermGensp......
  • Lucene:基于Java的全文检索引擎简介
    Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分词算法的比较具体的安装和使用简介:系统结构介绍和演示HackingLucene:简化的查询分析器,删......
  • 工程简介
    一个uni-app工程,就是一个Vue项目,你可以通过HBuilderX或cli方式快速创建uni-app工程,详见:快速上手。#目录结构一个uni-app工程,默认包含如下目录及文件:┌─uniCloud云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)│─components......
  • 页面简介
    uni-app项目中,一个页面就是一个符合VueSFC规范的vue文件。在uni-appjs引擎版中,后缀名是.vue文件或.nvue文件。在uni-appx中,后缀名是.uvue文件这些页面均全平台支持,差异在于当uni-app发行到App平台时,.vue文件会使用webview进行渲染,.nvue会使用原生进行渲染,详见:nvue......
  • Modbus协议详解1:Modbus的简介
    Modbus协议是应用非常广泛的一种通信协议规约,也是最早应用在工业现场的协议。早在1979年出现工业串行链路以来,Modbus的应用就开始普遍起来,它使得各种自动化设备之间的互相通信得到实现,做嵌入式产品开发的朋友应该不会陌生,Modbus的身影是随处可见的。并且在中国Modbus都已经形成了规......
  • iptables简介
    DESCRIPTION      Iptablesisusedtosetup,maintain,andinspectthetablesofIPv4packetfilterrulesintheLinuxkernel. Severaldifferenttablesmay      bedefined. Eachtablecontainsanumberofbuilt-inchainsandmayalsocont......
  • 每日一库:fsnotify简介
    fsnotify是一个用Go编写的文件系统通知库。它提供了一种观察文件系统变化的机制,例如文件的创建、修改、删除、重命名和权限修改。它使用特定平台的事件通知API,例如Linux上的inotify,macOS上的FSEvents,以及Windows上的ReadDirectoryChangesW。fsnotify具有以下特点:跨平台支持:fs......
  • 【Matlab 教程】-01 简介
    1、背景介绍MatrixLaboratory高级编程语言许多有用的toolboxs和内置functions简单的可视化2、课程目标如何使用Matlab编写程序,通过大量实践、实验解决工程上的问题3、课程计划1.简介2.Matlab基本操作与矩阵输入3.结构化程式与自定函数4.变量与文件存......
  • Hadoop 和 Spark 简介
    Hadoop和Spark简介Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop过去一直是大数据的经典解决方案,它包含两个部分:HadoopHDFS和HadoopMapReduce,分别是......
  • ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持
    ABPFramework版本号:7.4.0-rc.1发布时间:2023.8.16阅读原文:ABP.IOPlatform7.4RCHasBeenPublished翻译:iEricLee原文首发:知识乐ABPFramework专题该版本中发布的主要特性:设置系统支持动态存储新增AdditionalAssemblyAttribute特性分布式事件支持关联ID(Corr......