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

这篇具有很好参考价值的文章主要介绍了使用ProxySql实现Mysql的读写分离 详细安装步骤 亲测可行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主机ip 说明
192.168.168.109 ProxySql
192.168.168.77 mysql master(主)
192.168.168.78 mysql 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 实例、用户验证、路由规则等信息。

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

 main 库中有如下信息:

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

5.2查看表

show tables;

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

库下的主要表:
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的读写分离 文章来源地址https://www.toymoban.com/news/detail-802745.html

到了这里,关于使用ProxySql实现Mysql的读写分离 详细安装步骤 亲测可行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • laravel实现mysql读写分离(二)

    Laravel5 读写分离主要有两个过程: 第一步,根据 database.php 配置,创建写库和读库的链接 connection 第二步,调用 select 时先判断使用读库还是写库,而 insert/update/delete 统一使用写库 主要文件:Illuminate/Database/Connectors/ConnectionFactory.php 1:判断 database.php 是否配置了读写分离数据库

    2024年02月03日
    浏览(68)
  • mysql进阶2——prosysql实现mysql读写分离

    基本了解: 实现数据库读写分离的中间件很多,比如Mycat、Cobar、Atlas、TDDL、Proxysql等等。 ProxySQL 可以灵活配置路由规则,不仅可以实现最简单的读写分离,还可以将读/写都分散到多个不同的组,以及实现分库 sharding (分表sharding的规则比较难写,但也能实现)。 这种模式的读

    2024年02月15日
    浏览(23)
  • MariaDB MaxScale实现mysql8读写分离

    MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 MaxScale 实验环境 中间件 192.168.142.139 MaxScale 22.08.4 主服务器 192.168.142.146 mysql 8.0.30 从服务器 192.16

    2024年03月09日
    浏览(32)
  • 分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(二)

            说明:如果实现了docker部署mysql并完成主从复制的话再继续,本篇文章主要说明springboot配置实现Shardingjdbc进行读写分离操作。 如果没实现docker部署mysql实现主从架构的话点击我 application.yml配置设置连接池全局属性 shardingjdbc读写分离配置(qiyu-db-sharding.yaml) 同时这

    2024年02月15日
    浏览(29)
  • 分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离 (三)

            本篇主要说明:                 1. 因为这个mysql版本是8.0,所以当其中一台mysql节点挂掉之后,主从同步,甚至双向数据同步都失效了,所以本篇主要记录下当其中的节点挂掉之后如何再次生效。 另外推荐大家使用mysql5.7的版本,这样当其他节点失效后就不

    2024年02月14日
    浏览(28)
  • 【Docker容器】Docker安装MySQL镜像详细步骤(适合新手使用)

    前言 自从用了Docker之后,发现装东西是真的香,不用在自己根据下载压缩包一个个的去解压、执行、配置环境等等操作。想要啥直接就用Docker直接即拿即用,灰常的舒服啊。话不多说,正式开干,直接开始安装步骤。以下所有的安装前提是你装了Docker引擎了,不要告诉我连

    2023年04月25日
    浏览(54)
  • 基于k8s搭建mysql5.7主从集群实现读写分离

    一,准备工作 1,拥有一个运行中的k8s集群 2,拥有一个ceph分布式存储集群,此mysql集群基于ceph块存储,部署方案可参考我前面的rook部署ceph方案 二,集群搭建 1,创建存储类storageclass       将此 StorageClass 定义保存为 storageclass.yaml : 创建存储类   2,MySQL 部署包含一个 Con

    2024年02月08日
    浏览(32)
  • python 实现对MySQL 主从复制与读写分离 --2023博客之星候选--城市赛道

    在Python中,可以使用 pymysql 库来实现对MySQL主从复制和读写分离的代码封装。以下是一个简单的示例: 在上述示例中,创建了一个名为 MySQLReplication 的类,该类用于封装主从数据库连接和执行查询的功能。在类的初始化方法中,传入主数据库和从数据库的配置信息,并创建连

    2024年02月11日
    浏览(31)
  • 第100讲:MHA+Atlas实现MySQL主从复制读写分离分布式集群

    Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来

    2024年02月21日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包