Win下使用同一套MySQL创建第二个独立实例

Windows 10 下使用同一套 MySQL 8.0.22 创建第二个独立实例

当前环境示例:

  • Windows 10
  • MySQL 8.0.22
  • MySQL 安装目录:E:\mysql-8.0.22-winx64
  • 现有实例端口:3306

本教程只创建一个新的独立 MySQL 服务,不配置主从复制。


文章目录

一、最终目标

在同一套 MySQL 程序文件下运行两个互不干扰的 MySQL 实例:

实例 端口 数据目录 Windows 服务名
原实例 3306 E:\mysql-8.0.22-winx64\data 原有服务
新实例 3307 E:\mysql-8.0.22-winx64\data-3307 MySQL80_3307

两个实例可以共用同一个 mysqld.exe,但必须使用不同的端口、数据目录和配置文件。


二、创建第二个数据目录

在 MySQL 安装目录下新建:

text 复制代码
E:\mysql-8.0.22-winx64\data-3307

该目录必须是空目录,绝对不要让第二个实例使用原来的 data 目录。


三、创建第二个实例的配置文件

在:

text 复制代码
E:\mysql-8.0.22-winx64

新建配置文件:

text 复制代码
my-3307.ini

内容如下:

ini 复制代码
[mysqld]

# MySQL程序安装目录
basedir=E:/mysql-8.0.22-winx64
# 第二个实例独立的数据目录
datadir=E:/mysql-8.0.22-winx64/data-3307
# 第二个实例使用3307端口,避免与原3306实例冲突
port=3307
# MySQL 8的X Protocol端口也要与原实例区分
mysqlx_port=33070
# 默认字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 第二个实例独立的错误日志
log_error=E:/mysql-8.0.22-winx64/data-3307/mysql3307.err
# 默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password
# 设置mysql group cancat最大长度 -1为最大
group_concat_max_len=102400
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

这里暂时不配置 server_id、Binlog、Relay Log 等复制参数,后面正式学习主从复制时再增加。


四、初始化第二个 MySQL 实例

管理员身份 打开 CMD,进入 MySQL 的 bin 目录:

bat 复制代码
REM 进入MySQL程序目录
cd /d E:\mysql-8.0.22-winx64\bin

执行初始化:

bat 复制代码
REM 按my-3307.ini初始化新的数据目录,root暂时不设置密码
mysqld.exe --defaults-file="E:\mysql-8.0.22-winx64\my-3307.ini" --initialize-insecure --console

执行成功后,data-3307 中会生成 MySQL 系统库及 InnoDB 等相关文件。

--initialize-insecure 会创建一个初始 root 账户,但暂时没有密码,只适合本地学习环境。后面连接成功后应立即设置密码。

如果初始化时报"数据目录非空"等错误,只处理新建的 data-3307,不要误删原来的 data 目录。


五、注册第二个 Windows 服务

仍然使用管理员 CMD,执行:

bat 复制代码
REM 将第二个实例注册为独立Windows服务
mysqld.exe --install MySQL80_3307 --defaults-file="E:\mysql-8.0.22-winx64\my-3307.ini"

正常情况下会看到类似:

text 复制代码
Service successfully installed.

这里要注意命令顺序:--install 服务名 --defaults-file=配置文件,不要把 --defaults-file 放到 --install 前面。


六、启动第二个 MySQL 服务

执行:

bat 复制代码
REM 启动第二个MySQL实例
net start MySQL80_3307

也可以通过 Win + Rservices.msc 打开 Windows 服务管理器,此时应该能看到新增加的 MySQL80_3307


七、连接第二个实例

进入 MySQL bin 目录后执行:

bat 复制代码
REM 通过TCP明确连接3307端口的新实例
mysql.exe -h127.0.0.1 -P3307 -uroot --protocol=TCP

因为初始化时使用了 --initialize-insecure,第一次连接暂时不需要密码。

连接成功后立即设置 root 密码:

sql 复制代码
-- 为第二个实例的root账号设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

八、确认连接的是第二个实例

执行:

sql 复制代码
-- 查看当前MySQL实例的端口
SELECT @@port;

-- 查看当前MySQL实例的数据目录
SELECT @@datadir;

-- 查看当前MySQL版本
SELECT VERSION();

-- 查看当前连接ID
SELECT CONNECTION_ID();

预期看到端口为 3307,数据目录为 E:\mysql-8.0.22-winx64\data-3307\

原来的 MySQL 实例仍然应该是端口 3306、数据目录 E:\mysql-8.0.22-winx64\data


九、验证两个实例的数据互不影响

连接 3307 实例后创建一个测试库:

sql 复制代码
-- 只在3307实例中新建测试库
CREATE DATABASE instance3307_test;

-- 查看当前实例的数据库
SHOW DATABASES;

十、常用服务管理命令

bat 复制代码
REM 启动第二个MySQL服务
net start MySQL80_3307

REM 停止第二个MySQL服务
net stop MySQL80_3307

REM 查看Windows服务的实际启动配置
sc qc MySQL80_3307

如果以后不再需要该实例,可以先停止服务,再删除服务注册:

bat 复制代码
REM 先停止第二个MySQL服务
net stop MySQL80_3307

REM 删除Windows服务注册
sc delete MySQL80_3307

删除 Windows 服务并不会自动删除 data-3307 数据目录。是否删除数据目录应由自己确认,避免误删数据。


十一、最终结构

text 复制代码
E:\mysql-8.0.22-winx64
│
├─ bin
│   ├─ mysqld.exe
│   └─ mysql.exe
│
├─ data
│   └─ 原3306实例的数据
│
├─ data-3307
│   └─ 新3307实例的数据
│
├─ my.ini
│   └─ 原3306实例配置
│
└─ my-3307.ini
    └─ 新3307实例配置

最终运行关系:

text 复制代码
同一套MySQL程序
        ↓
┌─────────────────┬─────────────────┐
│                 │                 │
3306实例          3307实例
原data目录        data-3307目录
原配置文件        my-3307.ini
原Windows服务     MySQL80_3307

核心原则:多个 MySQL 实例可以共用程序文件,但端口、数据目录和实例配置必须彼此独立。

到这里仅完成了第二个独立 MySQL 服务的创建,还没有建立任何主从复制关系。

相关推荐
风哥2号2 小时前
数据库教程FGMT40‑MySQL性能优化之性能基准测试
数据库·mysql
葡萄成熟时 !2 小时前
MySQL 全套学习笔记(JDBC+连接池)
mysql
梦帮科技3 小时前
一次性会员支付系统的可靠性设计:幂等、金额校验、Webhook 与链上确认
人工智能·神经网络·mysql·区块链·建造者模式·合成复用原则·加密货币
初願致夕霞3 小时前
MySQL_事务(MVCC机制详解)
数据库·mysql
geovindu3 小时前
sql: Data Modeling Patterns using mysql
sql·mysql·设计模式·数据库开发
今年下半年3 小时前
mysql数据库备份详细操作流程
学习·mysql
Kamille Bidan3 小时前
平台核心业务表结构设计
mysql·heidisql
梦帮科技4 小时前
从提示词到可复现音乐工作流:RNOISE 2.0 的 Prompt Engineering 架构
人工智能·python·mysql·ci/cd·架构·node.js·numpy
军训猫猫头5 小时前
C# 封装 MySQL 自动写入与查询工具类(基于 MySqlConnector)
mysql·c#·.net·wpf