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

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,生产环境推荐独立配置文件方案。

相关帖子
衡阳市跨省长途救护车出租&长途医疗护送车,全国各地都有车
衡阳市跨省长途救护车出租&长途医疗护送车,全国各地都有车
如何区分必要的反思与无意义的自我消耗?教你有效判断
如何区分必要的反思与无意义的自我消耗?教你有效判断
衡阳市网站建设服务公司%网站SEO优化,优秀开发团队
衡阳市网站建设服务公司%网站SEO优化,优秀开发团队
塑料污染治理过程中的“减量化、资源化”具体指什么?
塑料污染治理过程中的“减量化、资源化”具体指什么?
衡阳市救护车长途跨省转运护送@病人护送救护车租赁,随叫随到
衡阳市救护车长途跨省转运护送@病人护送救护车租赁,随叫随到
高温津贴是否需要缴纳个人所得税,具体是如何规定和计算的?
高温津贴是否需要缴纳个人所得税,具体是如何规定和计算的?
北京市120救护车长途转运病人回家@长途跨省救护车租车服务
北京市120救护车长途转运病人回家@长途跨省救护车租车服务
洗完澡后立刻吹头发,对头皮和发质可能会有哪些潜在的影响呢?
洗完澡后立刻吹头发,对头皮和发质可能会有哪些潜在的影响呢?
咸阳市120长途救护车出租设备齐全&120救护车怎么收费
咸阳市120长途救护车出租设备齐全&120救护车怎么收费
哪些类型的房产或哪些特殊情况不能适用“带押过户”这项便利政策?
哪些类型的房产或哪些特殊情况不能适用“带押过户”这项便利政策?
2026年长假调休方案已出,如何才能更科学地拼出超长假期?
2026年长假调休方案已出,如何才能更科学地拼出超长假期?
有哪些适合独居老人的轻度体育锻炼方式,可以在家进行?
有哪些适合独居老人的轻度体育锻炼方式,可以在家进行?
如何区分观点表达、事实陈述与故意误导,从而在讨论中保持清晰理性的认知?
如何区分观点表达、事实陈述与故意误导,从而在讨论中保持清晰理性的认知?
家里有多件旧物想一起处理,“以旧换新”补贴可以叠加或多次享受吗?
家里有多件旧物想一起处理,“以旧换新”补贴可以叠加或多次享受吗?
详解ZABBIX监控ESXI主机的问题
详解ZABBIX监控ESXI主机的问题
邵阳市模版网站开发&安卓系统app开发,多年建站经验
邵阳市模版网站开发&安卓系统app开发,多年建站经验
开封市php开源cms二次开发%精准获客助手,一站式服务
开封市php开源cms二次开发%精准获客助手,一站式服务
在订阅制日益普及的2026年,如何管理才能不让“自动续费”悄悄扣款?
在订阅制日益普及的2026年,如何管理才能不让“自动续费”悄悄扣款?
2026年企业在开发利用公共数据时,需要特别注意哪些法律边界和合规要求?
2026年企业在开发利用公共数据时,需要特别注意哪些法律边界和合规要求?