CentOS 8 二进制安装 MySQL 5.7 多实例及开机自启配置
在一台服务器上运行多个 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 脚本复制到系统服务目录,并进行简单修改以适配当前路径。
- 复制启动脚本:
[root@mysql ~]# cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi - 修改脚本参数:
在脚本顶部添加或确保存在以下变量,确保启动时能正确找到可执行文件:
basedir=/usr/local/mysql bindir=/usr/local/mysql/bin export PATH=$bindir:$PATH - 加载服务并启用自启:
# 重新加载 systemd 守护进程(若使用 systemctl 管理) systemctl daemon-reload # 开启服务自启动 [root@mysql ~]# chkconfig mysqld_multi on - 手动启动测试:
[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 多实例管理的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









