当前位置: 首页 > news >正文

MySQL 9 INNODB Cluster部署

1. InnoDB集群概述

MySQL InnoDB Cluster为MySQL提供了一个完整的高可用性解决方案。通过使用MySQL Shell附带的AdminAPI,您可以轻松配置和管理一组至少三个MySQL服务器实例,使其作为InnoDB集群运行。

InnoDB集群使用以下MySQL技术:

MySQL Shell是MySQL的高级客户端和代码编辑器。

MySQL服务器和组复制,使一组MySQL实例能够提供高可用性。InnoDB Cluster提供了一种易于使用的编程方式来处理组复制。

MySQL Router,一个轻量级的中间件,在应用程序和InnoDB Cluster之间提供透明的路由。

下图显示了这些技术如何协同工作的概述:

2. 部署规划

本过程演示了使用多台主机部署实例,这些实例分别命名为dbserver01、dbserver02和dbserver03。假设每台主机上都已安装MySQL Serve。

实例

ip

OS

描述

dbserver01

192.168.1.10

CentOS Stream release 9

主节点

dbserver02

192.168.1.13

CentOS Stream release 9

从节点

dbserver03

192.168.1.15

CentOS Stream release 9

从节点

部署架构图

3. 修改服务器配置

在三台服务器上分别修改服务器名称为dbserver01,dbserver02,dbserver03

hostnamectl set-hostname dbserver01

hostnamectl set-hostname dbserver02

hostnamectl set-hostname dbserver03

在三台服务器上修改

vi /etc/hosts

192.168.1.10   dbserver01

192.168.1.13   dbserver02

192.168.1.15   dbserver03

禁止selinux

 vi /etc/sysconfig/selinux 

禁止防火墙

systemctl stop firewalld

systemctl disable firewalld

4. 安装mysql

Mysql安装方法有好多种,本案为了实现MGR,采用基于RPM的Linux发行版上安装MySQL,使用下载的Oracle提供RPM包。以下步骤需要在3台服务器上执行。

(1)首先下载mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar, mysql-shell-9.4.0-1.el9.x86_64.rpm, mysql-router-community-9.4.0-1.el9.x86_64.rpm,到本地服务器。

(2)解压安装文件

tar xvf mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar

(3)安装

安装mysql服务及组件

yum install mysql-community-common-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-icu-data-files-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-client-plugins-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-libs-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-client-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-devel-9.4.0-1.el9.x86_64.rpm

yum install mysql-community-server-9.4.0-1.el9.x86_64.rpm

安装mysql-shell

yum install mysql-shell-9.4.0-1.el9.x86_64.rpm

安装mysql-router

yum install mysql-router-community-9.4.0-1.el9.x86_64.rpm

启动数据库

systemctl start mysqld

5. 创建账号

mysql> create user 'mgradmin'@'%' identified by 'c';

mysql> GRANT BACKUP_ADMIN, REPLICATION SLAVE ON *.* TO 'mgradmin'@'%';

mysql> GRANT CONNECTION_ADMIN ON *.* TO mgradmin@'%';

mysql> GRANT all privileges on *.* TO mgradmin@'%' with grant option;

mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO mgradmin@'%';

mysql> flush privileges;

6. 通过 MySQLShell 搭建 MGR

下面步骤每个节点都执行

mysqlsh --mysql -umgradmin -h127.0.0.1 -P 3306 -p

先配置实例.

MYSQL 127.0.0.1:3306 ssl SQL>\js       #进入is 运行环境.

检查实例是否满足组复制要求

MySQL  127.0.0.1:3306 ssl  JS > dba.checkInstanceConfiguration()

MYSQL 127.0.0.1:3306 ssl SQL JS> dba.configurelnstance();

如果数据库参数不满足复制要求,会自动修改,然后重新启动数据库,所以不用提前配置复制参数。

第一个节点创建集群实例(192.168.1.10)

JS> var cluster= dba.createCluster('TestCluster')

--添加其他节点 192.168.1.13/15,此时会进行数据库克隆,把节点1的数据库复制到其它数据库,同时进行同步。。

MYSQL 127.0.0.1:3306 ssl SQL JS>var cluster=dba.getCluster()

JS >cluster.addInstance('mgradmin@192.168.1.13:3306')

JS>cluster.addInstance('mgradmin@192.168.1.15:3306')

7. MySQLShell集群管理

7.1 集群重新配置.

如果遇到主备库故障导致同步无法进行,则需要重新配置集群。

删除集群元数据.

MYSQL 127.0.0.1:3306 ssl SQL JS>dba.dropMetadataSchema()

检查集群条件。

MYSQL 127.0.0.1:3306 ssl SQL JS>dba.configureInstance();

​​​​​​​7.2 查看集群状态。

MYSQL 127.0.0.1:3306 ssl SQL JS> var cluster=dba.getCluster()

MYSQL 127.0.0.1:3306 ssl SQL JS > cluster.status();

8. 配置 MySQLRouter 路由

路由初始化,MySQLRouter主备节点都执行配置(myroute目录提前创建)。

mkdir -p /home/mysql9/myrouter

chown -R mysql.mysql /home/mysql9/myrouter

mysqlrouter --bootstrap mgradmin@127.0.0.1:3306 --directory /home/mysql9/myrouter --conf-use-sockets --user mysql

注意: --directory /home/mysql9/myrouter  这个参数会把路由需要用的配置文件放在这个目录

下。

---启动路由。

cd /home/mysql9/myroute

./start.sh.

生成的 MySQL Router 配置会创建用于连接到群集的 TCP 端口,包括使用经典 MySQL 协议和 X 协议与群集通信的端口,缺省值如下:

6446-对于传统 MySQL协议读写会话,MySQL路由器将传入连接重定向到Primary服务器实例。"

6447-对于传统 MySQL协议只读会话,MySQL路由器将传入连接重定向到其中一个从服务器实例。。

64460-对于X协议读写会话,MySQL路由器将传入连接重定向到Primary服务器实例。。

测试配置

--连接测试:。

mysql -uroot -p -hlocalhost -P6446

--建库。

create database testdb;

--建表,必须要有主键,否则插入失败

use testdb;

create table t1 (id int primary key);  #必须有主键

insert into t1 values(1);

其它节点登录

[root@DBSERVER02 myrouter]# mysql -uroot -p -hlocalhost -P6447

mysql> use testdb;

mysql> select * from t1;

数据同步过来。

9. Innodb 集群维护

(1)主机异常重启,导致原主库变成只读模式,原因是 mysqld-auto.cnf里面添加了super read only,解决办法:.

需要启动主库,执行如下命令:。

set persist super read only=off ;.

查看状态:

show variables like '%read%only' ;

重启主机后 MGR 没有启动时解决办法

重启 mgr 即可.

JS >dba.rebootClusterFromCompleteOutage();

(2)MGR 关闭和启动顺序.

集群关闭顺序.

先查看当前主库位置.

mysqlsh--mysql -mgradmin -h 127.0.0.1 -P 3306 -p.

JS > var cluster=dba.getCluster().

JS > cluster.status();

查看所有节点的状态.

SHOW STATUS LIKE 'group_replication %';

把主库设置为只读,避免备库关闭后主库数据改变无法同步

SET GLOBAL read only = ON;

关闭所有备库.

systemctl stop mysqld

或者

mysqladmin -u root -p shutdown.

关闭主库.

systemctl stop mysqld

或者

mysqladmin -u root -p shutdown.

关闭mgr

mgr无需单独关闭,单主备库都关闭时,其进程自动关闭。

数据库集群启动顺序.

先启动所有备库,再启动主库.

systemctl stop mysqld

主库启动后要把只读给关闭:。

SET GLOBAL read only = off;.

(3)启动 mgr

mysqlsh --mysql -mgradmin -h 127.0.0.1 -P 3306 -p

JS>dba.rebootClusterFromCompleteOutage();

JS > var cluster=dba.getCluster().

JS > cluster.status();

(4)启动mysql-router

cd myrouter.

./start.sh.

或者:。

 mysqlrouter -c /home/mysql9/myrouter/mysqlrouter.conf.

mysqlrouter--report-host dbserver03 --bootstraproot@localhost

Please enter MysoL password for root:

http://www.dtcms.com/a/308616.html

相关文章:

  • Qt之CJSON:从基础到进阶的 JSON 数据处理指南
  • MySQL 8.0 OCP 1Z0-908 题目解析(41)
  • 节目预告:工程师张仰彪在相对论学习中的九个疑问
  • 【Kubernetes 指南】基础入门——Kubernetes 集群(一)
  • python每日一题练习---简单题目
  • 基于STM32设计的景区便民服务系统(NBIOT)_261
  • IDEA识别lombok注解问题
  • MySQL常用命令完整指南
  • systmctl的作用,使用场景和用法
  • 硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木
  • 动手学习深度学习-深度学习知识大纲
  • 云迁移技术深度解析:核心原理与最佳实践
  • Python删除字符串的3种高效方法
  • Spring Boot + MinIO + KKFile:三步搭建企业级文件预览系统
  • Mysql索引失效问题及其原因
  • 【Leetcode】2683. 相邻值的按位异或
  • 五、cv::SparseMat的介绍和使用
  • 是采用示例模板,还是采用json的结构化数据,哪种方式会让llm的输出更加稳定?
  • 查询目前服务器所占的带宽的命令(上传和下载)
  • CNN卷积神经网络之LeNet和AlexNet经典网络模型(三)
  • c语言的编译链接
  • Winform PathGradientBrush类使用
  • C#程序本地运行正常,通过网络下载报错:FileLoadException:“未能加载文件或程序集“xxx.dll”或它的某一个依赖项。
  • 【pycharm的使用】
  • Qwen3-30B-A3B-Thinking-2507 推理模型深度评测
  • 250721脑电分析课题进展——手工特征总结
  • lsof命令
  • SSO面临的问题
  • 为什么有时神经元会输出类似(甚至一样)?
  • 行业分享丨从工具应用到体系进化:东风商用车仿真体系建设与实践