欢迎光临本地信息咨询网
详情描述

MySQL单机多实例部署主要有两种实用方案:mysqld_multi方案独立配置文件方案。以下是两种方案的详细对比和实施步骤:

方案一:mysqld_multi方案(官方推荐)

优点

  • MySQL官方提供的标准工具
  • 统一管理,操作方便
  • 配置文件集中管理

部署步骤

准备目录结构

mkdir -p /data/mysql/{3306,3307,3308}/{data,logs,binlog}
chown -R mysql:mysql /data/mysql

修改主配置文件 /etc/my.cnf


[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = your_password

[mysqld3306] port = 3306 socket = /tmp/mysql3306.sock datadir = /data/mysql/3306/data log-error = /data/mysql/3306/logs/error.log pid-file = /data/mysql/3306/mysql3306.pid

[mysqld3307] port = 3307 socket = /tmp/mysql3307.sock datadir = /data/mysql/3307/data log-error = /data/mysql/3307/logs/error.log pid-file = /data/mysql/3307/mysql3307.pid

[mysqld3308] port = 3308 socket = /tmp/mysql3308.sock datadir = /data/mysql/3308/data log-error = /data/mysql/3308/logs/error.log pid-file = /data/mysql/3308/mysql3308.pid


3. **初始化数据目录**
```bash
# 为每个实例初始化
mysqld --initialize-insecure --user=mysql \
  --datadir=/data/mysql/3306/data

mysqld --initialize-insecure --user=mysql \
  --datadir=/data/mysql/3307/data

mysqld --initialize-insecure --user=mysql \
  --datadir=/data/mysql/3308/data
启动和管理实例

# 启动所有实例
mysqld_multi start
启动指定实例

mysqld_multi start 3306

停止指定实例

mysqld_multi stop 3306

查看实例状态

mysqld_multi report


## 方案二:独立配置文件方案(更灵活)

### 优点
- 配置隔离,互不影响
- 便于不同版本的MySQL部署
- 适合Docker容器化部署

### 部署步骤

1. **创建目录结构**
```bash
# 创建实例目录
for port in 3306 3307 3308; do
  mkdir -p /mysql/${port}/{data,logs,conf,tmp}
done
chown -R mysql:mysql /mysql
为每个实例创建独立配置文件

实例1配置 /mysql/3306/conf/my.cnf

[client]
port = 3306
socket = /mysql/3306/mysql.sock

[mysqld]
port = 3306
socket = /mysql/3306/mysql.sock
datadir = /mysql/3306/data
log-error = /mysql/3306/logs/error.log
pid-file = /mysql/3306/mysql.pid
tmpdir = /mysql/3306/tmp
server-id = 1

# 避免端口冲突的参数
# 每个实例使用不同的参数
innodb_buffer_pool_size = 512M

实例2配置 /mysql/3307/conf/my.cnf

[client]
port = 3307
socket = /mysql/3307/mysql.sock

[mysqld]
port = 3307
socket = /mysql/3307/mysql.sock
datadir = /mysql/3307/data
log-error = /mysql/3307/logs/error.log
pid-file = /mysql/3307/mysql.pid
tmpdir = /mysql/3307/tmp
server-id = 2

innodb_buffer_pool_size = 256M
创建启动脚本 /etc/init.d/mysql-multi

#!/bin/bash
# 多实例启动脚本

case "$1" in start) for port in 3306 3307 3308; do if [ -f /mysql/${port}/conf/my.cnf ]; then echo "Starting MySQL instance on port ${port}..." mysqld_safe --defaults-file=/mysql/${port}/conf/my.cnf \ --user=mysql \ --datadir=/mysql/${port}/data \ --pid-file=/mysql/${port}/mysql.pid & fi done ;; stop) for port in 3306 3307 3308; do if [ -f /mysql/${port}/mysql.pid ]; then echo "Stopping MySQL instance on port ${port}..." mysqladmin -u root -S /mysql/${port}/mysql.sock shutdown fi done ;; restart) $0 stop sleep 5 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac


4. **初始化并启动**
```bash
# 初始化每个实例
for port in 3306 3307 3308; do
  mysqld --initialize-insecure \
    --user=mysql \
    --datadir=/mysql/${port}/data \
    --defaults-file=/mysql/${port}/conf/my.cnf
done

# 启动所有实例
chmod +x /etc/init.d/mysql-multi
/etc/init.d/mysql-multi start

方案对比

特性 mysqld_multi方案 独立配置文件方案
配置管理 集中在一个文件 分散多个文件
隔离性 较低 较高
启动方式 统一命令管理 需自定义脚本
维护难度 简单 中等
适用场景 测试/开发环境 生产环境
版本隔离 不支持 支持
资源限制 统一配置 可独立配置

连接实例示例

# 连接不同实例
mysql -P 3306 -S /tmp/mysql3306.sock -u root
mysql -P 3307 -S /tmp/mysql3307.sock -u root
mysql -P 3308 -S /tmp/mysql3308.sock -u root

# 或使用端口连接(需确保监听不同IP或配置不同端口)
mysql -h 127.0.0.1 -P 3306 -u root
mysql -h 127.0.0.1 -P 3307 -u root

最佳实践建议

资源分配

  • 为每个实例分配独立的资源限制
  • 使用cgroups限制CPU和内存

监控配置

  • 每个实例单独配置监控
  • 使用不同的监控端口

备份策略

  • 每个实例独立备份
  • 备份脚本区分实例

安全建议

  • 不同实例使用不同的账号
  • 独立设置权限
  • 定期审计日志

选择方案时,根据实际需求:开发测试环境推荐mysqld_multi,生产环境推荐独立配置文件方案。

相关帖子
在申请落户期间更换了工作单位,会对整个审核流程产生什么影响吗?
在申请落户期间更换了工作单位,会对整个审核流程产生什么影响吗?
新闻里说全球变暖的
新闻里说全球变暖的"基线"在抬升,这条基线是怎么算出来的?
2026年医保报销流程是否更加便捷?线上提交材料的具体步骤是什么?
2026年医保报销流程是否更加便捷?线上提交材料的具体步骤是什么?
临时停车牌使用中有哪些容易被忽视却可能带来麻烦的礼仪细节?
临时停车牌使用中有哪些容易被忽视却可能带来麻烦的礼仪细节?
遇到“清仓商品不退不换”时,取证和投诉的具体流程是怎样的?
遇到“清仓商品不退不换”时,取证和投诉的具体流程是怎样的?
衡阳市跨省长途救护车出租&长途医疗护送车,全国各地都有车
衡阳市跨省长途救护车出租&长途医疗护送车,全国各地都有车
自由职业者或灵活就业人员,是否可以为自己设立交通通讯补贴以降低税负?
自由职业者或灵活就业人员,是否可以为自己设立交通通讯补贴以降低税负?
2026年,社会舆论和年轻人对彩礼“限高”政策的普遍看法是什么?
2026年,社会舆论和年轻人对彩礼“限高”政策的普遍看法是什么?
计算经济补偿金时,工资基数是指应发工资还是实发工资?
计算经济补偿金时,工资基数是指应发工资还是实发工资?
到2026年,社保“第六险”的评估标准是否更加统一和规范了?
到2026年,社保“第六险”的评估标准是否更加统一和规范了?
贷款期间房产信息变更,讲解信息修改及二次抵押备案调整流程
贷款期间房产信息变更,讲解信息修改及二次抵押备案调整流程
从千兆宽带降级到百兆,运营商要求缴纳高额设备调测费是否合理?
从千兆宽带降级到百兆,运营商要求缴纳高额设备调测费是否合理?
2026年新的食品标识规定,是否让预制菜配料表更透明易懂?
2026年新的食品标识规定,是否让预制菜配料表更透明易懂?
智能汽车记录的行车轨迹信息是否属于个人隐私信息范畴
智能汽车记录的行车轨迹信息是否属于个人隐私信息范畴
如何区分是为了实际需求购物,还是为了短暂的情绪抚慰而进行消费?
如何区分是为了实际需求购物,还是为了短暂的情绪抚慰而进行消费?
2026年,企业的加班审批制度如果过于严格,是否会催生更多隐形加班?
2026年,企业的加班审批制度如果过于严格,是否会催生更多隐形加班?
企业内部非正式的社交活动,如何可能加深某些群体的“隐性”排斥感?
企业内部非正式的社交活动,如何可能加深某些群体的“隐性”排斥感?
对于有过敏性鼻炎的人,在特定季节应如何护理以减少鼻子出血风险?
对于有过敏性鼻炎的人,在特定季节应如何护理以减少鼻子出血风险?
小满节气“苦菜秀”的说法从何而来,这种植物背后有哪些有趣的故事与文化?
小满节气“苦菜秀”的说法从何而来,这种植物背后有哪些有趣的故事与文化?
对维修基金的使用情况有疑问,业主可以通过哪些合法途径进行监督?
对维修基金的使用情况有疑问,业主可以通过哪些合法途径进行监督?
2026年国际原油市场价格波动,主要受全球哪些非政治性供需因素影响?
2026年国际原油市场价格波动,主要受全球哪些非政治性供需因素影响?