mysql如何配置多实例_mysql多实例配置方法

来源:这里教程网 时间:2026-02-28 20:27:58 作者:

MySQL 多实例是指在同一台服务器上运行多个独立的 MySQL 服务,每个实例使用不同的端口、配置文件和数据目录。这种配置适合需要隔离数据库环境但资源有限的场景,比如开发测试、多租户应用或性能隔离需求。

1. 规划多实例结构

在配置前先明确每个实例的参数,避免端口冲突和路径混乱:

端口号不同:如 3306、3307、3308 数据目录分离:如 /data/mysql3306/data、/data/mysql3307/data 配置文件独立:如 my3306.cnf、my3307.cnf socket 文件路径唯一:如 /tmp/mysql3306.sock pid 文件路径独立:如 /var/run/mysqld/mysqld3306.pid

2. 创建实例所需目录与用户

为每个实例创建独立的数据目录,并设置权限:

mkdir -p /data/mysql3306/data /data/mysql3307/data
chown -R mysql:mysql /data/mysql3306 /data/mysql3307

确保系统已安装 MySQL,且 mysql 用户存在。

3. 编写独立的配置文件

以 3306 实例为例,创建 /etc/my3306.cnf

[mysqld]
port = 3306
socket = /tmp/mysql3306.sock
pid-file = /var/run/mysqld/mysqld3306.pid
basedir = /usr
datadir = /data/mysql3306/data
user = mysql
server-id = 1
log-error = /var/log/mysql/mysql3306_error.log

复制该文件修改端口、socket、datadir 等对应 3307 的配置。

4. 初始化各个实例

使用 mysqld --initialize 命令分别初始化每个实例:

mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql --basedir=/usr --datadir=/data/mysql3306/data

记录输出中的临时密码,用于首次登录。

5. 启动多个实例

通过指定配置文件启动每个实例:

mysqld --defaults-file=/etc/my3306.cnf &
mysqld --defaults-file=/etc/my3307.cnf &

也可编写 systemd 服务脚本实现开机自启和管理。

6. 连接并设置密码

连接 3306 实例:

mysql -u root -p -S /tmp/mysql3306.sock

登录后立即修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

7. (可选)配置 systemd 服务

创建服务文件 /etc/systemd/system/mysql3306.service:

[Unit]
Description=MySQL 3306 Instance
After=network.target
[Service]
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3306.cnf
User=mysql
Group=mysql
Restart=always
[Install]
WantedBy=multi-user.target

启用服务:

systemctl daemon-reexec
systemctl enable mysql3306.service
systemctl start mysql3306.service

基本上就这些。只要注意端口、目录、配置文件三者一一对应,MySQL 多实例部署并不复杂,但容易忽略日志和权限问题。

相关推荐