如何在本地搭建mysql集群测试环境

首先选择MySQL InnoDB Cluster方案,利用MySQL Shell和Router在本地搭建三节点集群;创建三个独立实例并初始化,分别运行在3310、3320、3330端口;通过MySQL Shell连接首节点并创建集群,依次添加其余两个实例;最后使用MySQL Router实现读写分离与故障转移,完成高可用测试环境部署。

如何在本地搭建mysql集群测试环境

搭建本地 MySQL 集群测试环境,核心是选择合适的集群方案并正确配置多个节点。常用的 MySQL 集群方案有 MySQL Group Replication(MGR)和 MySQL InnoDB Cluster。以下以 MySQL InnoDB Cluster 为例,基于 MySQL Shell 和 MySQL Router,在本地快速搭建一个三节点高可用测试环境。

准备环境与安装软件

确保你的本地机器满足以下条件:

  • 操作系统:Linux、macOS 或 Windows(推荐使用 Linux 或 macOS)
  • 内存:至少 4GB(每个实例约需 1GB)
  • 磁盘空间:5GB 以上
  • MySQL Server 8.0+
  • MySQL Shell 8.0+
  • MySQL Router 8.0+

下载并安装 MySQL Community Server、MySQL Shell 和 MySQL Router。可通过官方 Yum/Apt 源、DMG 安装包或解压 tar 包方式安装。例如在 Ubuntu 上:

sudo apt install mysql-server mysql-shell mysql-router

创建多个 MySQL 实例(多实例模式)

在本地运行多个 MySQL 实例,每个实例使用不同端口和数据目录。

创建三个实例目录:

mkdir -p /tmp/mysql/{3310,3320,3330}/data

初始化每个实例(会生成临时密码):

mysqld –initialize –user=$USER –basedir=/usr –datadir=/tmp/mysql/3310/data mysqld –initialize –user=$USER –basedir=/usr –datadir=/tmp/mysql/3320/data mysqld –initialize –user=$USER –datadir=/tmp/mysql/3330/data

启动三个实例,分别绑定不同端口:

mysqld –port=3310 –socket=/tmp/mysql/3310/mysql.sock –pid-file=/tmp/mysql/3310/mysql.pid –datadir=/tmp/mysql/3310/data –log-error=/tmp/mysql/3310/error.log &

mysqld –port=3320 –socket=/tmp/mysql/3320/mysql.sock –pid-file=/tmp/mysql/3320/mysql.pid –datadir=/tmp/mysql/3320/data –log-error=/tmp/mysql/3320/error.log &

mysqld –port=3330 –socket=/tmp/mysql/3330/mysql.sock –pid-file=/tmp/mysql/3330/mysql.pid –datadir=/tmp/mysql/3330/data –log-error=/tmp/mysql/3330/error.log &

使用 MySQL Shell 配置 InnoDB Cluster

连接第一个实例并配置为集群主节点:

mysqlsh

在 MySQL Shell 中执行:

connect root@localhost:3310 # 输入初始化时生成的临时密码

设置新密码

sql ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘RootPass1!’;

退出重新登录

quit mysqlsh connect root@localhost:3310 # 使用新密码

创建集群:

如何在本地搭建mysql集群测试环境

面试猫

ai面试助手,在线面试神器,助你轻松拿Offer

如何在本地搭建mysql集群测试环境39

查看详情 如何在本地搭建mysql集群测试环境

var cluster = dba.createCluster(‘testCluster’)

添加另外两个实例作为从节点:

cluster.addInstance({user: “root”, host: “localhost”, port: 3320}) cluster.addInstance({user: “root”, host: “localhost”, port: 3330})

过程中会提示你输入每个实例的 root 密码,并要求对实例进行配置(自动完成)。完成后,集群即建立。

验证集群状态与访问

查看集群状态:

cluster.status()

输出应显示三个实例均为 “ONLINE”,角色分别为 PRIMARY 和 SECONDARY。

通过 MySQL Router 实现负载均衡和故障转移:

mysqlrouter —bootstrap root@localhost:3310 –directory /tmp/router –name myrouter

启动 Router:

/tmp/router/mysqlrouter

Router 默认开启两个端口:

  • 6446:读写路由(指向 PRIMARY)
  • 6447:只读路由(指向 SECONDARY)

应用连接时,使用:

mysql -h 127.0.0.1 -P 6446 -u root -p

即使主节点宕机,Router 会自动重定向到新的 PRIMARY。

基本上就这些。整个过程在本地模拟了生产级 MySQL 高可用集群的核心行为,适合用于功能测试、HA 验证和开发调试。注意测试结束后清理进程和临时文件,避免端口冲突。

mysql linux bootstrap windows 操作系统 端口 ubuntu mac 路由 macos 解压 sql mysql bootstrap Directory Error var windows macos dba linux ubuntu 负载均衡 router

上一篇
下一篇
text=ZqhQzanResources