proxysql读写分离组件部署

一、前言

      在mysql一主两从架构的前提下,引入读写分离组件,可以极大的提高mysql性能,proxysql可以在高可用mysql架构发生主从故障时,进行自动的主从读写节点切换,即当mysql其他从节点当选新的主节点时,proxysql会自动识别,6033端口为mysql命令调用端口,6032端口为proxysql的管理端口

二、部署

     需要先部署mysql主从架构或者mysql高可用架构,mysql主从架构没有高可用功能,mysql高可用架构拥有高可用功能,使用主从架构发生故障没有主从切换功能,所有proxysql也不会进行故障切换

     主从参考:mysql一主两从读写分离搭建_mysql 一主两从搭建-CSDN博客

     高可用参考: mysql mha高可用-CSDN博客

     在github上下载proxysql rpm安装包

     参考: Releases · sysown/proxysql · GitHub

     我这里使用的是 2.4.0版本的安装包,太新版本的配置了读写组后会出现mysql_servers库的组id不会自动更改识别,但是proxysql的读写分离和故障切换功能都是正常的,并没有影响

     创建proxysql安装包存放目录

      mkdir /opt/proxysql &&  cd /opt/proxysql

      ls

    安装proxysql

     yum -y install proxysql-2.4.0-1-centos7.x86_64.rpm

    在mysql创建监控用户

    mysql -u root -p

    grant select on *.* to 'monitor'@'%' identified by '12345678';

    flush privileges;

    登陆proxysql配置读写分离

mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin>'

   插入后端mysql信息

#组id都配置都无所谓,后面通过配置了识别read_only分配读写分离组,id会自动变更到对应组
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'10.1.60.113',3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'10.1.60.114',3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'10.1.60.115',3306);

查看插入的mysql信息

select * from mysql_servers

 配置后端mysql的监控用户

UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='12345678' WHERE variable_name='mysql-monitor_password';
update global_variables set variable_value='2000' where variable_name in ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

查看修改后的配置

SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';

使配置生效与保存配置

load mysql servers to runtime;
save mysql servers to disk;

查看对后端的健康检查结果

SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 3;

SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 3;

 配置主从切换的自动检测即检测read_only状态分配到读组或写组

INSERT INTO mysql_replication_hostgroups (writer_hostgroup,reader_hostgroup,comment) VALUES (1,2,'cluster1');

使配置生效

LOAD MYSQL SERVERS TO RUNTIME;

 检查是否生效

SELECT * FROM monitor.mysql_server_read_only_log ORDER BY time_start_us DESC LIMIT 3;

可以看到已经识别到后端不同mysql节点的read_only状态

 现在查看mysql_servers表也会发现之前配置的相同的id也自动更改为根据主从节点分配的读写组id

配置读写分离规则

#注意规则配置的顺序代表匹配的顺序,前面的匹配不到才会匹配后面的
#select命令中这有一条特殊的加锁命令,是需要写操作的,所以第一条规则是匹配到写id组
#第二条规则匹配所有读命令,匹配到读id组,这两条规则就可以实现读写分离
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)values(1,1,'^SELECT.*FOR UPDATE$',1,1);
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)values(2,1,'^SELECT',2,1);

查看配置的读写分离规则

SELECT match_digest,destination_hostgroup FROM mysql_query_rules WHERE active=1;

在proxysql中配置mysql存在的用户

INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('root','12345678',1);
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('deploy','12345678',1);

查看配置的用户

SELECT * FROM mysql_users;

保存与使配置生效

LOAD MYSQL QUERY RULES TO RUNTIME;
save mysql servers to disk;

使用以上配置的用户在其他mysql中调用proxysql端口执行命令验证读写分离

mysql -u root -p -h10.1.60.115 -P6033 -e "select * from mysql.user"

查找执行命令表查询命令在哪台主机执行

SELECT * FROM stats.stats_mysql_connection_pool;

可以每执行一条就查询一次就可以看出读写分离的效果了

也可以通过以下命令直接查询命令在哪个组执行了来验证是否进行了读写分离

SELECT hostgroup hg, sum_time, count_star, digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;

 可以看到读操作都分配在了组id为2的读组

 至此proxysql 读写分离配置完成,关于主从的故障切换可以通过mysql高可用架构自行验证,当mysql的主节点挂掉,先由高可用组件实现主从的故障切换,选出新的主节点,然后proxysql根据每个mysql节点的read_only变化去变更mysql节点所在的读写组实现读写节点的切换

关于proxysql的高可用可以通过keepalived组件实现,即再部署一个proxysql,在两个proxysql上部署keepalived高可用组件实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/256472.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

状态管理@Prop

目录 1、父组件State到子组件Prop简单数据类型同步 2、父组件State数组项到子组件Prop简单数据类型同步 3、从父组件中的State类对象属性到Prop简单类型的同步 Prop主要用用于父组件到子组件的数据级联更新,父组件的数据变化会影响到子组件的数据变化&#xff0c…

Arma3/武装突袭3东风战役最后一关游戏无法保存的解决办法

Arma3这个游戏玩进去还是非常有可玩性的,可是在玩过了它本体自带的东风系列战役后,在最精髓的最后一关——game over这个关卡,却有个非常头疼的问题。 逃跑其实是非常简单的,但是想要无伤环游全岛确十分困难,因为这关卡…

Lazada商品详情API在电商中的价值及实时数据获取实践

一、引言 在电商行业,数据是驱动业务增长的关键。Lazada作为东南亚地区知名的电商平台,其商品详情API对于电商行业具有深远的影响。本文将探讨Lazada商品详情API在电商行业中的重要性,并介绍如何实现实时数据获取。 二、Lazada商品详情API的…

秋招总结_就业

2020秋招总结 【前言】 以下内容是写给研二学弟学妹们的秋招总结,研一的师弟师妹们如有需要,也可看看。先说一下我为什么要写这个总结: 1、时代在变化,社会在发展,一届有必要给下一届讲一些经验。 2、我平时和你们…

强大矢量图编辑器 Boxy SVG 激活最新

Boxy SVG for Mac功能介绍 1、干净,直观的UI深受Inkscape,Sketch和Adobe illustrator的启发 2、广泛支持画布上编辑对象几何,转换,绘画和其他属性 3、保存为SVG和SVGZ格式,导出为PNG,JPG,WebP和…

第二证券:耐心等待指数企稳 关注数据要素等板块

其时或是布局商场的时间窗口。2024年美联储或打开降息周期,欧洲降息预期也在增强,全球流动性有望迎来拐点。中心经济工作提及2024年的职业及工业方向,政策有望落地施行,将会为职业配备带来较多的催化要素,是具备配备价…

RTLS 解决现实场景的25种问题

实时定位系统 (RTLS) 可以改变我们理解周围世界的方式。 想想你有多少次停下来寻找某样东西。您可能正在寻找钥匙、电话、鞋子、零食、背包、办公室中的重要文件、停车场中的车辆,或者可能正在寻找街道标志或地标来引导自己。我们大多数人每天都会希望更好地了解我…

【参天引擎】华为参天引擎内核架构源码架构,多线程服务,数据节点管理,多节点间元数据管理

cantian引擎源码结构 ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点…

分享一个好看的vs主题

最近发现了一个很好看的vs主题(个人认为挺好看的),想要分享给大家。 主题的名字叫NightOwl,和vscode的主题颜色挺像的。操作方法也十分简单,首先我们先在最上面哪一行找到扩展。 然后点击管理扩展,再搜索栏…

北京冬雪中:邂逅那台加洛韦绿的路特斯Eletre

文|张 坤 北京的冬天时而让人情感交织:虽然雪后银装素裹,能够完美勾勒出城市寒素清澈的美景,映衬出红墙石砖的雄伟壮丽。但在深冬的寒风萧瑟中,也迫使人们紧裹衣衫,赏景之路亦多了几分艰辛。 在北京“…

9.鸿蒙app用户界面的跳转abilityslice的跳转

9.用户界面的跳转abilityslice的跳转,值传递,数值累加 首页页面显示1,第2页显示2,再次点击返回首页3。。。 MainAbilitySlice.java 关键代码: 点击事件 text.setClickedListener(new Component.ClickedListener() …

芯片高科技制造业如何实现高效且安全的文件数据传输

随着工业4.0的快速发展,制造行业作为一个长产业链且高度集中复杂的领域,数据与信息传输管理变得尤为重要,成为提高生产效率的关键因素。从研发、设计、采购、生产、库存、销售到售后等各个环节,整个业务流程都需要高效传递信息&am…

五年一贯专转本这么管用的记忆法你用了吗?

在枯燥无聊的学习当中,能有好的学习记忆方式就能事半功倍,但是怎样的学习记忆方式才适合我们呢?那我今天就给大家介绍一下吧,如果觉得好用,可以试试,让我们在之后的转本考试当中能有个好成绩!zb…

Vue2 即将结束支持!!!

Vue2 Vue 2.0 发布于 2016 年,已经有超过 7 年的历史,它是 Vue 框架成为主流的重要里程碑。许多当前的 Vue 用户都是在 Vue 2 时期就开始使用 Vue 的,并且有许多出色的项目是基于 Vue 2 构建的。 Vue2将弃用 随着 2024 年的临近&#xff0…

【DOM笔记二】操作元素(修改元素内容,修改常见元素/表单元素/元素样式属性,排他思想,自定义属性操作,应用案例!)

文章目录 4 操作元素4.1 修改元素的内容4.2 修改常见元素的属性案例:分时问候 4.3 修改表单元素属性案例:登录时隐藏/显示密码 4.4 修改元素样式属性4.4.1 行内样式操作 element.style案例1:关闭二维码广告案例2:遍历精灵图案例3&…

php自定义请求工具(请求频次+动态参数)

在项目开发中,前后端进行接口对接时,一定离不开接口测试。所以这个时候就很需要一些第三方api接口测试工具了。比如postman,apifox之类的。lz有事闲暇之余也会做点小项目,不可避免的会用到测试接口工具之类的。在进行测试时突发奇…

JS加密/解密之JSX解密解析(photoshop插件)

简介 Adobe Photoshop 插件通常使用 JSX(JavaScript XML)脚本语言。这是一种基于JavaScript的扩展,专门设计用于处理Adobe Creative Suite(包括Photoshop)的任务。JSX脚本允许开发者编写自定义脚本以扩展和增强Photos…

VueStu02-创建一个Vue实例

一、核心步骤 1.准备容器 准备一个盒子div。 2.引包 从官网引包,有开发版本和生产版本之分。 3.创建Vue实例 创建一个Vue实例,new Vue()。 4.指定配置项 指定配置项,用于渲染数据 。 el:指定挂载点。知道自己将来要管理的是…

springboot解决XSS存储型漏洞

springboot解决XSS存储型漏洞 XSS攻击 XSS 攻击:跨站脚本攻击(Cross Site Scripting),为不和 前端层叠样式表(Cascading Style Sheets)CSS 混淆,故将跨站脚本攻击缩写为 XSS。 XSS(跨站脚本攻击):是指恶意攻击者往 Web 页面里插…

科研成果 | 数说故事联合中大HCP实验室共创「大模型」领域论文,获国际AI学术顶会AAAI收录

日前,中国计算机学会(CCF)推荐的A类国际学术会议AAAI人工智能大会 2024论文接收结果公布。中山大学HCP实验室和数说故事研究员合著的论文《Adaptive Prompt Routing for Arbitrary Text Style Transfer with Pre-trained Language Models》成…