centos7中配置多个mysql版本

你当前的系统中已经安装了 MySQL 8,并且你现在希望在不删除 MySQL 8 的前提下安装 MySQL 5.7,这是完全可行的,但需要注意以下几点:


🔍 场景说明

  • 目标:同时保留 MySQL 8,并新增安装 MySQL 5.7。
  • 适用场景
    • 某些旧应用(如 Zabbix)需要依赖 MySQL 5.7。
    • 其他服务仍然使用 MySQL 8。

🚫 注意事项(关键点)

  1. 不能使用默认端口 3306 同时运行两个 MySQL 实例,否则会冲突。
  2. MySQL 5.7 和 8 的数据目录不能相同
  3. 需要分别配置两个实例的服务名、端口、socket、datadir 等参数
  4. 建议使用 多实例部署方式 来共存。

✅ 推荐方案:MySQL 多实例部署(并行运行)

步骤概览:

步骤 内容
1️⃣ 安装 MySQL 5.7(RPM 或二进制)
2️⃣ 配置独立的数据目录和端口
3️⃣ 修改配置文件 my.cnf 或新建一个配置文件
4️⃣ 初始化数据库
5️⃣ 启动 MySQL 5.7 实例
6️⃣ 设置开机启动(可选)

🛠️ 具体操作步骤(以 CentOS 7/8 为例)

✅ 第一步:下载并安装 MySQL 5.7 的 RPM 包

你可以从 MySQL 官方归档站点 下载 MySQL 5.7 的 RPM 包,例如:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.44-1.el7.x86_64.rpm

然后安装:

sudo rpm -ivh mysql-community-server-5.7*.rpm --nodeps

⚠️ 如果提示与 MySQL 8 的某些库冲突,可以使用 --replacepkgs--force 参数强制安装。


✅ 第二步:创建新的数据目录和配置文件

创建数据目录和日志目录:

sudo mkdir -p /var/lib/mysql57
sudo chown -R mysql:mysql /var/lib/mysql57

创建专用配置文件 /etc/my57.cnf

[mysqld]
port=3307
socket=/var/lib/mysql57/mysql.sock
datadir=/var/lib/mysql57
server-id=1
log-error=/var/lib/mysql57/error.log
pid-file=/var/lib/mysql57/mysqld.pid
skip-name-resolve

✅ 第三步:初始化 MySQL 5.7 数据库

sudo mysqld --defaults-file=/etc/my57.cnf --initialize-insecure

--initialize-insecure 表示不会生成随机密码,适合测试环境。生产环境建议使用 --initialize


✅ 第四步:启动 MySQL 5.7 实例

sudo mysqld --defaults-file=/etc/my57.cnf &

或者用完整命令指定参数启动:

sudo /usr/sbin/mysqld --defaults-file=/etc/my57.cnf --user=mysql

✅ 第五步:连接 MySQL 5.7 实例

mysql -S /var/lib/mysql57/mysql.sock -u root

或者指定端口连接(如果已配置):

mysql -h 127.0.0.1 -P 3307 -u root

🧪 验证两个版本是否都正常运行

# 查看 MySQL 8 是否运行
systemctl status mysqld

# 查看 MySQL 5.7 是否运行
ps aux | grep mysqld | grep my57

🔄 可选:将 MySQL 5.7 实例加入 systemd(开机自启)

创建一个服务文件 /etc/systemd/system/mysql57.service

[Unit]
Description=MySQL 5.7 Instance
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my57.cnf
Restart=always

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable mysql57
sudo systemctl start mysql57

📋 总结

项目 MySQL 8 MySQL 5.7
端口 3306 3307
socket 文件 默认位置 /var/lib/mysql57/mysql.sock
数据目录 默认 /var/lib/mysql /var/lib/mysql57
配置文件 /etc/my.cnf /etc/my57.cnf
启动方式 systemctl start mysqld systemctl start mysql57

📌 提示

  • 如果你是用于 Zabbix,请确保 Zabbix Server 使用的是 MySQL 5.7 的 socket 或 IP:Port。
  • 如果你不想长期维护多个 MySQL 实例,也可以考虑使用 Docker 容器化部署 MySQL 5.7,更加灵活方便。
posted @ 2025-06-29 00:13  aidengduff  阅读(408)  评论(0)    收藏  举报