红帽7—Mysql路由部署

news/2024/10/11 1:34:14/

MySQL Router 是一个对应用程序透明的InnoDB Cluster连接路由服务,提供负载均衡、应用连接故障转移和客户端路 由。

利用路由器的连接路由特性,用户可以编写应用程序来连接到路由器,并令路由器使用相应的路由策略 来处理连接,使其连接到正确的MySQL数据库服务器

准备工作

本实验以虚拟机Linux-7作为测试,在官网上下载软件包

准备三台虚拟机172.25.254.10,172.25.254.20和172.25.254.30各自安装数据库

轮询路由策略

“routing_strategy = round-robin” 表示路由策略为 “轮询”。

轮询策略是一种在多个资源或目标之间平均分配负载的方法。当有多个可选的路由、服务器或处理单元时,系统按照一定的顺序依次选择每个选项,以实现较为均衡的资源利用。

采用轮询策略时,第一个请求会被发送到第一个服务器,第二个请求被发送到第二个服务器,以此类推。当到达最后一个服务器后,下一个请求又会回到第一个服务器,形成一个循环。

策略的优点:

  1. 负载均衡:可以较为平均地将工作负载分配到各个资源上,避免某些资源过度负载而其他资源闲置的情况。
  2. 简单易实现:不需要复杂的算法和状态管理,易于理解和实现。

策略的缺点:

  1. 不能限制数据库的读写和访问分流
  2. 无法动态调整:如果某些资源在运行过程中出现故障或性能下降,轮询策略可能无法及时做出调整,导致请求分配不合理。

部署

172.25.254.10

主机从数据库官网上安装软件

[root@nginx ~]# rpm -ivh mysql-router-community-8.4.0-1.el7.x86_64.rpm

172.25.254.10主机上模拟mysql不存在将172.25.254.10主机的流量发送到172.25.254.20和172.25.254.30主机上

配置轮询路由策略

[root@nginx ~]# vim /etc/mysqlrouter/mysqlrouter.conf

[routing:ro]   #名称路由可读
bind_address = 0.0.0.0 #监控端口为当前主机端口
bind_port = 7001 #通过端口7001访问数据库
destinations=172.25.254.10:3306,172.25.254.20:3306,172.25.254.30:3306#访问主机的IP地址及端口
routing_strategy = round-robin#表示路由策略为轮询策略

启动mysql-router

[root@nginx ~]# systemctl start mysqlrouter.service

查看端口是否开启

[root@nginx ~]# netstat -antlupe |grep 7001

172.25.254.20

创建远程连接访问用户

mysql> create user root@'%' identified by 'lee';

mysql> grant all ON . to root@'%';

查询当前数据库服务器的唯一标识符为20

mysql> SELECT @@server_id;

172.25.254.30

创建远程连接访问用户

mysql> create user root@'%' identified by 'lee';

mysql> grant all ON . to root@'%';

查询当前数据库服务器的唯一标识符为30

mysql> SELECT @@server_id;

测试

172.25.254.10

在172.25.254.10主机上远程连接

[root@nginx ~]# mysql -uroot -plee -h172.25.254.10 -P 7001

查询当前数据库服务器的唯一标识符

mysql> SELECT @@server_id;

唯一标识符显示为30,说明172.25.254.10远程连接到172.25.254.30主机上。

\q退出mysql后再重新登录

再查询当前数据库服务器的唯一标识符

mysql> SELECT @@server_id;

唯一标识符显示为20,说明172.25.254.10远程连接到172.25.254.20主机上。

实现了路由轮询策略,注意mysql轮询策略不能限制数据库的读写和访问分流

优先使用路由策略

“routing_strategy = first-available” 表示路由策略为 “优先使用第一个可用的”。

这种路由策略通常在多个路径或资源中进行选择时使用。当有多个可选的路由或处理方式时,系统会优先选择第一个被确定为可用的选项。

如果采用 “first-available” 策略,网络设备会首先尝试第一个路径,如果该路径可用,则使用该路径进行数据传输;如果第一个路径不可用,则继续检查下一个路径,直到找到一个可用的路径。

“first-available” 路由策略的优点是简单直接,可以快速找到一个可用的选项。然而,它也可能存在一些缺点,比如可能没有充分考虑各个选项的性能、负载等因素,可能导致某些情况下不是最优的选择。

部署

配置轮询路由策略

172.25.254.10

[root@nginx ~]# vim /etc/mysqlrouter/mysqlrouter.conf

[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 172.25.254.20:3306,172.25.254.30:3306
routing_strategy = first-available

启动mysql-router

[root@nginx ~]# systemctl start mysqlrouter.service

测试

172.25.254.10

在172.25.254.10主机上远程连接

[root@nginx ~]# mysql -uroot -plee -h172.25.254.10 -P 7002

查询当前数据库服务器的唯一标识符

mysql> SELECT @@server_id;

唯一标识符显示为20,说明172.25.254.10远程连接到172.25.254.20主机上。

\q退出mysql后再重新登录

再查询当前数据库服务器的唯一标识符

mysql> SELECT @@server_id;

唯一标识符显示依然为20,说明系统会优先选择第一个(172.25.254.20)被确定为可用的选项后,再次退出不会切换到172.25.254.30主机上,当172.25.254.20主机发生故障时会切换至172.25.254.30主机上。


http://www.ppmy.cn/news/1537212.html

相关文章

明星周边销售网站开发:SpringBoot技术全解析

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

面试知识储备-多线程

1.线程的概念 线程使得在一个程序中可以同时执行多个任务。在 Java 应用程序中,多个线程可以同时运行,例如一个线程可以处理用户输入,另一个线程可以进行后台数据处理。 2.创建线程的方式 (1)重写thread类中的run方法…

噪声分布 双峰,模拟函数 或者模拟方法 python人工智能 深度神经网络

在Python中模拟双峰分布,可以通过多种方法实现。以下是一些常用的方法: 1. **使用正态分布混合**: 可以通过组合两个正态分布来创建一个双峰分布。每个正态分布都有其自己的均值(mu)和标准差(sigma&…

EcoVadis认证内容有哪些?EcoVadis认证申请流程?

EcoVadis认证是一个国际性的可持续发展评估平台,旨在帮助全球企业和供应链评鉴其在环境、社会和治理(ESG)方面的表现。该认证框架由法国的检验、认证和检测机构必维集团(Bureau Veritas)创建,得到了众多跨国…

一般在写SQL时需要注意哪些问题,可以提高查询的效率?

很多人写SQL按照自己喜好,没有规则意识,这对于自主查询影响不大,你爱怎么搞就怎么搞,一旦涉及到提交任务或团队共享,就不能乱写了,会浪费资源影响到开发效率,严重的甚至会服务器瘫痪。 提几个关…

【openwrt-21.02】T750 openwrt 出现nat46_ipv4_iput crash

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

threejs-基础材质设置

一、介绍 主要内容:基础材质(贴图、高光、透明、环境、光照、环境遮蔽贴图) 主要属性: side: three.DoubleSide, //设置双面 color: 0xffffff, //颜色 map: texture, //纹理 transparent: true, // 透明度 aoMap: aoTexture, //ao贴图 aoMapIntensity: 1…

mysql学习教程,从入门到精通,SQL处理重复数据(39)

1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据(以SQL Server为例)”的背景和原理的详细解释: 1.1、背景 在数据库管理中,数据重复是一个常见的问题。重复数据可能由于多种原因产生,如数据录入错误、数据…