CentOS 8 二进制安装 MySQL 5.7 多实例及开机自启配置

Evan
Evan
发布时间:2026-10-16 | 4人浏览过
原创

在一台服务器上运行多个 MySQL 实例可以有效节省硬件开销并简化数据管理。本文将详细介绍在 CentOS 8 系统中,如何通过二进制方式安装 MySQL 5.7,配置端口分别为 3306、3307、3308 的多实例环境,并通过修改系统服务脚本实现开机自启动。

目标与准备

本教程旨在实现 MySQL 5.7 二进制安装后的多实例部署。核心步骤包括创建独立的数据目录、执行初始化操作生成密钥文件、配置 /etc/my.cnf 以支持多实例并发,以及将启动脚本集成到系统服务中以便管理。

第1步:创建数据目录

首先需要为每个实例分配独立的存储路径,确保数据隔离。假设安装包已添加环境变量并设置好属主,直接创建对应端口的目录即可。

[root@clq ~]# mkdir /opt/data/{3306,3307,3308} -p
[root@clq ~]# chown mysql.mysql /opt/data/*

第2步:初始化数据库实例

使用 mysqld 命令分别对三个端口对应的数据目录进行初始化。这一步会生成系统表空间并输出初始 root 密码,请务必记录这些临时密码以备后用。

[root@clq ~]# mysqld --initialize --datadir=/opt/data/3306 --user=mysql
[root@clq ~]# mysqld --initialize --datadir=/opt/data/3307 --user=mysql
[root@clq ~]# mysqld --initialize --datadir=/opt/data/3308 --user=mysql

为方便后续管理,可以将生成的临时密码分别保存:

# 示例:将初始密码保存到文本文件
[root@clq ~]# echo '初始密码内容' > 3306_password.txt
[root@clq ~]# echo '初始密码内容' > 3307_password.txt
[root@clq ~]# echo '初始密码内容' > 3308_password.txt

第3步:解决依赖问题

CentOS 8 默认可能缺少 MySQL 运行所需的兼容库,需安装 Perl 及 Ncurses 兼容库。

# 安装 perl 解释器
[root@clq ~]# yum -y install perl

# 查找并安装 libncurses.so.5 兼容包
[root@clq ~]# dnf whatprovides libncurses.so.5
# 根据输出结果安装兼容库
[root@clq ~]# dnf -y install ncurses-compat-libs

第4步:配置多实例 my.cnf

编辑 /etc/my.cnf 文件,定义 [mysqld_multi] 全局设置,并为每个实例单独编写配置段。注意实例配置段名称必须严格遵循 [mysqld端口号] 格式(例如 [mysqld3306]),否则 mysqld_multi 工具无法识别。

[root@clq ~]# cat > /etc/my.cnf << EOF
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin

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

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

[mysqld3308]
datadir = /opt/data/3308
port = 3308
socket = /tmp/mysql3308.sock
pid-file = /opt/data/3308/mysql3308.pid
log-error = /var/log/3308.log
EOF

第5步:连接与管理实例

启动实例后,连接时必须指定 Socket 文件或强制使用 TCP/IP (127.0.0.1),不能仅靠主机名。建议使用以下两种方法之一连接:

  • 方法一(Socket 连接):
mysql -uroot -p'临时密码' -P3306 -S /tmp/mysql3306.sock
  • 方法二(TCP 连接):
mysql -uroot -p'临时密码' -P3306 -h127.0.0.1

成功登录后,建议立即通过 ALTER USER 命令修改 root 密码以确保安全。

第6步:配置开机自启动服务

为了实现便捷的一键启动和重启,将 MySQL 自带的 mysqld_multi.server 脚本复制到系统服务目录,并进行简单修改以适配当前路径。

  1. 复制启动脚本:
    [root@mysql ~]# cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
  2. 修改脚本参数: 在脚本顶部添加或确保存在以下变量,确保启动时能正确找到可执行文件:
    basedir=/usr/local/mysql
    bindir=/usr/local/mysql/bin
    export PATH=$bindir:$PATH
  3. 加载服务并启用自启:
    # 重新加载 systemd 守护进程(若使用 systemctl 管理)
    systemctl daemon-reload
    
    # 开启服务自启动
    [root@mysql ~]# chkconfig mysqld_multi on
  4. 手动启动测试:
    [root@mysql ~]# service mysqld_multi start 3306
    [root@mysql ~]# service mysqld_multi start 3307
    [root@mysql ~]# service mysqld_multi start 3308

重启服务器后,可使用 ss -antl 命令检查 3306、3307、3308 端口是否处于 LISTEN 状态,以验证自启动配置是否生效。

以上就是 CentOS 8 二进制安装 MySQL 5.7 多实例及开机自启动配置的详细内容,更多关于 MySQL 多实例管理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表