使用ProxySql实现Mysql的读写分离 详细安装步骤 亲测可行

主机ip说明
192.168.168.109ProxySql
192.168.168.77mysql master(主)
192.168.168.78mysql slave(从)

 

1.下载ProxySql安装包

在192.168.168.109机器上操作

https://github.com/sysown/proxysql/releases/download/v2.5.5/proxysql-2.5.5-1-centos7.x86_64.rpm

2.安装ProxySql

2.1安装

在192.168.168.109机器上操作

rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm

报错

[root@mini109 opt]# rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm 
警告:proxysql-2.5.5-1-centos7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 8217c97e: NOKEY
错误:依赖检测失败:
	perl(DBD::mysql) 被 proxysql-2.5.5-1.x86_64 需要
	perl(DBI) 被 proxysql-2.5.5-1.x86_64 需要

2.2解决报错

在192.168.168.109机器上操作

 yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL

2.3再次安装

在192.168.168.109机器上操作

rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm

3.启动

在192.168.168.109机器上操作

systemctl start proxysql.service

4.登陆ProxySQL

在192.168.168.109机器上操作

管理员登录 ProxySQL

前提也需要能进入MySQL命令行,所以安装一个mariadb

yum -y install mariadb

登陆ProxySQL

mysql -uadmin -padmin -h 127.0.0.1 -P 6032

5.查看ProxySQL数据库相关信息

在192.168.168.109机器上操作

5.1查看数据库

show databases;

 可见有五个库: main、disk、stats 、monitor 和 stats_history
main: 内存配置数据库,即 MEMORY,表里存放后端 db 实例、用户验证、路由规则等信息。

 main 库中有如下信息:

5.2查看表

show tables;

库下的主要表:
mysql_servers: 后端可以连接 MySQL 服务器的列表
mysql_users: 配置后端数据库的账号和监控的账号。
mysql_query_rules: 指定 Query 路由到后端不同服务器的规则列表。

注: 表名以 runtime_开头的表示 ProxySQL 当前运行的配置内容,不能通过 DML 语句修改。

只能修改对应的不以 runtime 开头的表,然后 “LOAD” 使其生效,“SAVE” 使其存到硬盘以供下次重启加载。
disk :持久化的磁盘的配置
stats: 统计信息的汇总
monitor:一些监控的收集信息,比如数据库的健康状态等
stats_history: 这个库是 ProxySQL 收集的有关其内部功能的历史指标

6.配置 ProxySQL 所需账户

在192.168.168.77数据库操作

在主MySQL(192.168.168.77)上创建 ProxySQL 的监控账户和对外访问账户

#proxysql 的监控账户
grant all privileges on *.* to 'monitor'@'192.168.168.%' identified by 'Ww12345@king';
grant all privileges on *.* to 'monitor'@'%' identified by 'Ww12345@king';
 
#proxysql 的对外访问账户
grant all privileges on *.* to 'proxysql'@'192.168.168.%' identified by 'Ww12345@king';
grant all privileges on *.* to 'proxysql'@'%' identified by 'Ww12345@king';

#刷新权限 
flush privileges;

7.设置proxy SQL监控账户
在192.168.168.109机器上操作

在MySQL主节点已经创建过monitor账号
在proxy SQL端进行配置一下


 

7.1登陆

mysql -uadmin -padmin -P6032 -h127.0.0.1



7.2管理端配置这个monitor监控用户,配置方式是修改全局变量

set mysql-monitor_username='monitor';
set mysql-monitor_password='Ww12345@king';

7.3执行语句加入内存和磁盘

load mysql variables to runtime;
save mysql variables to disk;

8.管理端配置读写分离

在192.168.168.109机器上操作


8.1将MySQL主从服务器信息添加入mysql_servers表中。


先将主从服务器存放在同一组内,等指定好读写规则后,系统会根据配置文件中的read-only值自动将其分别添加至读组和写组,命令如下:

我的不行直接分好组

insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(1,'192.168.168.77',3306,1,1000,10,'vip'),(2,'192.168.168.78',3306,1,1000,10,'slave');


 


8.2执行以下命令即时生效:

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


8.3设置读写分组

#我安装的版本这个表多了个字段check_type
#博主proxymysql版本2.0 我的2.5

INSERT INTO mysql_replication_hostgroups VALUES (1,2,'read_only|innodb_read_only|','one-master-2-slave');


8.4执行以下命令即时生效:

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

9.测试读写分离

在192.168.168.109机器上操作

本地使用MySQL命令行或者navicat都可以连接proxy SQL:6033端口

9.1写入数据

[root@localhost ~]# mysql -uproxysql -p123456 -P6033 -h127.0.0.1
MySQL [(none)]> create database A;
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> create database B;
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> use A;
Database changed

MySQL [A]> create table  test(id char(10),name char(10));
Query OK, 0 rows affected (0.03 sec)

MySQL [A]> insert into test(id,name) values(1,'hy');
Query OK, 1 row affected (0.00 sec)

MySQL [A]> select * from test;
+------+------+
| id   | name |
+------+------+
| 1    | hy   |
+------+------+
1 row in set (0.00 sec)

9.2查看

MySQL [(none)]> select hostgroup,schemaname,username,digest_text,count_star from  stats_mysql_query_digest;
+-----------+--------------------+----------+---------------------------------------------+------------+
| hostgroup | schemaname         | username | digest_text                                 | count_star |
+-----------+--------------------+----------+---------------------------------------------+------------+
| 1         | A                  | proxysql | insert into test(id,name) values(?,?)       | 1          |
| 1         | A                  | proxysql | show tables                                 | 1          |
| 1         | A                  | proxysql | create table test(id char(?),name char(?))  | 1          |
| 2         | information_schema | proxysql | SELECT DATABASE()                           | 1          |
| 1         | information_schema | proxysql | create database A                           | 1          |
| 2         | A                  | proxysql | select * from test                          | 1          |
| 1         | information_schema | proxysql | select @@version_comment limit ?            | 2          |
| 1         | information_schema | proxysql | show databases                              | 1          |
| 1         | information_schema | proxysql | create database B                           | 1          |
| 1         | A                  | proxysql | create tables test(id char(?),name char(?)) | 1          |
| 1         | A                  | proxysql | show databases                              | 1          |
+-----------+--------------------+----------+---------------------------------------------+------------+

参考文档:proxy SQL实现MySQL主从读写分离-CSDN博客

参考文档:使用ProxySql实现Mysql的读写分离 

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

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

相关文章

阿里云ack集群管理及故障处理

一、集群管理维护 二、常见故障处理 存储: 网络 弹性伸缩 service

Microsoft Word 设置底纹

Microsoft Word 设置底纹 References 打开文档页面,选中特定段落或全部文档 在“段落”中单击“边框”下三角按钮 在列表中选择“边框和底纹”选项 在“边框和底纹”对话框中单击“底纹”选项卡 在图案样式和图案颜色列表中设置合适颜色的底纹,单击“确…

利用蓝图直接提升客户服务体验的方法

简单地说,流程就是按顺序执行的一系列操作过程。每项行动都有一个结果,而这个结果又会成为该序列中下一项行动的输入。客户服务流程的建立目的是为了保持一致性、提高效率并帮助组织管理规模。不过,在实际操作的过程中,他们会遇到…

C#判断输入的数字是否符合货币格式

目录 一、用正则表达式判断输入是否符合货币格式 二、用double.TryParse()判断输入是否符合货币格式 一、用正则表达式判断输入是否符合货币格式 // 判断输入是否货币合格 using System.Text.RegularExpressions; namespace IsCurrency_Format {partial class Program{stati…

直播间的秒杀狂热背后,猫眼电影如何接住10w+并发运营活动?

“倒数,5、4、3、2、1” “10万张!” “20秒没了” 上周末,张家辉和导演马浴柯带着新电影《怒潮》上了疯狂小杨哥的直播间,人数一度冲破80万人。 这次直播,是猫眼电影为新电影《怒潮》准备的一次宣传活动。 随着小…

44.5K Star,简单易用自动化运维监控工具

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 今天介绍一个开源的自动化运维监控工具,它是一个轻量的开源…

【银行测试】银行项目,信用卡业务测试+常问面试(三)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信用卡业…

3D划桨效果,效果请看gif图

纯本地文件的html <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"Keywords" content""><meta name"Description" content""><title>please…

跨Android、iOS、鸿蒙多平台框架ArkUI-X

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具&#xff0c;帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API&#xff0c;就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一…

Nginx深度解析

Nginx是一个开源的高性能Web服务器&#xff0c;广泛用于提供HTTP服务。 它以其高效能、稳定性和低资源消耗而闻名。 Nginx的核心特性 异步非阻塞事件驱动架构&#xff1a;Nginx的主要优势之一是它的异步非阻塞处理方式&#xff0c;这使得它在处理大量并发连接时非常高效。轻量…

Spring 中 HttpServletRequest 作为成员变量是安全的吗?

在使用spring框架开发的时候&#xff0c;经常会在controller类中看到 HttpServletRequest 对象参数&#xff0c;一般我们都是直接使用&#xff0c;但是它是何时、怎么注入到 spring 容器的呢 &#xff1f;另外以成员变量注入的 request 是线程安全的吗 ? Controller public c…

关于微信小程序 “扫普通链接二维码打开小程序”动态传递多个参数开发过程记录与总结

前言&#xff1a;项目中需要线下 扫描二维码 进入到小程序指定的页面&#xff0c;二维码中 要动态传递多个参数&#xff0c;接下来看看具体怎么实现&#xff0c;整个过程还比较顺利&#xff0c;特把整个过程中遇到的坑点做以总结。 快速跳转官网文档介绍&#xff1a;扫码打开小…

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…

Pure-admin框架 Pure-table中获取所选中的内容的信息

最近在尝试使用Pure-admin框架来进行开发&#xff0c;正好遇到了多选表格需要获取选中项的id的情况&#xff0c;因为平台介绍说是二次封装 element-plus 的 Table &#xff0c;直接拿el-table的方法来试 在table上设置属性ref"multipleTableRef" let idArr [];mult…

使用Python的pygame库实现下雪的效果

使用Python的pygame库实现下雪的效果 关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 先给出效果图&#xff1a; 源码如下&#xff1a; import pygame import random# 初始化pygame pygame.init()# 设置屏幕尺寸 width…

C# 线程间操作无效: 从不是创建控件的线程访问它--多线程操作

我们在用线程操作的时候&#xff0c;可能会出现异常&#xff1a;线程间操作无效: 从不是创建控件richTextBox1的线程访问它。因为windows窗体控件不是线程安全的&#xff0c;如果几个线程操作某一控件的状态&#xff0c;可能会使该控件的状态不一致&#xff0c;出现争用或死锁状…

springBoot项目打包发布

打包 项目代码编写完成后&#xff0c;在pom.xml文件中引用打包的插件&#xff1a; <!-- 打包插件坐标--><build><plugins><!--打包插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-mave…

洗地吸拖一体机什么牌子好?性能超好的洗地机推荐

科技时代的快速发展带来了大量智能清洁家电&#xff0c;其中近年兴起的洗地机为我们的生活带来了极大便利。然而&#xff0c;市面上涌现出众多品牌和型号的洗地机&#xff0c;让人眼花缭乱&#xff0c;难以做出选择。笔者在这里推荐几款性能超好的洗地机推荐&#xff0c;希望能…

137基于matlab的面和线接触的滑块润滑

基于matlab的面和线接触的滑块润滑&#xff0c;基于有限差分法求解面接触滑块润滑的油膜厚度、油膜压力&#xff0c;输出三维可视化结果。程序已调通&#xff0c;可直接运行。 137 matlab油膜压力油膜厚度 (xiaohongshu.com)

在机关单位上班的你,需要掌握这些网络安全知识!

没有网络安全&#xff0c;就没有国家安全。网络安全和保密防护&#xff0c;是机关单位日常工作中不可忽视的重要问题。尤其在涉密单位工作的人员&#xff0c;因工作性质特殊&#xff0c;不仅要了解非涉密网络的安全操作常识&#xff0c;更要重点了解涉密网络的规范行为要点&…