一台服务器安装2个mysql
- 云服务器
- 2025-07-18
- 8

安装前准备
- 操作系统环境:确保服务器已安装Linux(如CentOS/Ubuntu)或Windows Server。
- 下载MySQL:从官网下载对应系统的MySQL安装包(建议使用相同版本)。
- 备份数据:如果已有MySQL实例,需提前备份数据。
Linux系统下安装步骤
安装第一个MySQL实例(默认安装)
# 解压安装包并执行安装脚本 tar -xvf mysql-8.0.x-linux-glibc2.17-x86_64.tar.xz cd mysql-8.0.x-linux-glibc2.17-x86_64 sudo ./bin/mysqld --initialize --user=mysql # 启动默认实例并设置开机自启 sudo ./bin/mysqld_safe --daemonize
部署第二个MySQL实例
# 复制整个MySQL目录到新路径(如 /usr/local/mysql2) sudo cp -r mysql-8.0.x-linux-glibc2.17-x86_64 /usr/local/mysql2 # 初始化第二个实例的数据目录 sudo /usr/local/mysql2/bin/mysqld --initialize --basedir=/usr/local/mysql2 --datadir=/usr/local/mysql2/data --user=mysql # 修改第二个实例的配置文件(/etc/my.cnf 或自定义路径) sudo nano /etc/my2.cnf
配置第二个实例的 my.cnf
| 参数 | 值 | 说明 |
|---|---|---|
| port | 3307 | 避免与默认端口3306冲突 |
| socket | /usr/local/mysql2/mysql.sock | 独立套接字文件 |
| datadir | /usr/local/mysql2/data | 独立数据存储目录 |
| log_error | /usr/local/mysql2/data/error.log | 独立错误日志 |
启动与管理实例
启动第二个实例
# 后台启动第二个实例 sudo /usr/local/mysql2/bin/mysqld_safe --defaults-file=/etc/my2.cnf --daemonize
验证两个实例状态
# 查看默认实例状态 sudo /usr/local/mysql/bin/mysqladmin -u root -p status # 查看第二个实例状态 sudo /usr/local/mysql2/bin/mysqladmin -u root -p -P 3307 status
设置开机自启(系统d服务)
# 默认实例服务配置 sudo cp /usr/lib/systemd/system/mysqld.service /etc/systemd/system/mysqld.service # 第二个实例服务配置(修改端口、套接字等) sudo cp /etc/systemd/system/mysqld.service /etc/systemd/system/mysqld2.service sudo sed -i 's/3306/3307/g;s/mysql.sock/mysql2.sock/g' /etc/systemd/system/mysqld2.service # 启用并启动服务 sudo systemctl enable mysqld2 sudo systemctl start mysqld2
连接与操作实例
| 操作场景 | 命令示例 |
|---|---|
| 连接默认实例 | mysql -u root -p -S /usr/local/mysql/mysql.sock |
| 连接第二个实例 | mysql -u root -p -P 3307 -h 127.0.0.1 |
| 指定客户端工具路径 | /usr/local/mysql2/bin/mysql -u root -p |
常见问题与解决
| 问题 | 解决方案 |
|---|---|
| 端口冲突导致无法启动 | 检查netstat -tulpn,修改my.cnf中的端口号 |
| 数据目录权限不足 | chown -R mysql:mysql /usr/local/mysql2/data |
| 忘记第二个实例密码 | 删除/usr/local/mysql2/data/auto.cnf后重启实例 |
相关问题与解答
问题1:如何彻底卸载其中一个MySQL实例?
解答:

- 停止目标实例的服务(如systemctl stop mysqld2)。
- 删除数据目录(如rm -rf /usr/local/mysql2/data)。
- 卸载程序文件(如rm -rf /usr/local/mysql2)。
- 删除系统服务文件(如rm /etc/systemd/system/mysqld2.service)。
- 执行systemctl daemon-reload并重启服务器。
问题2:如何迁移第二个实例的数据到默认实例?
解答:
- 停机两个实例,避免数据写入。
- 将第二个实例的数据目录(/usr/local/mysql2/data)备份为SQL文件: /usr/local/mysql2/bin/mysqldump -u root -p --all-databases > backup.sql
- 将备份文件导入默认实例: /usr/local/mysql/bin/mysql -u root -p < backup.sql
- 验证数据一致性后
