MySQL部署
程小虎2025-12-23 17:30:49
📦 MySQL部署
📌 文档信息
- 作者: 程小虎
- 创建时间: 2025-12-04
- 最近修订: 2025-12-06
- 版本号: v1.0
✨ 介绍
- 本教程使用脚本安装,可实现一键安装,整个安装过程只需要一条命令即可
- 支持 单机、集群 安装
- 脚本采用 MGR [ MySQL Group Replication(MySQL组复制)] 方式部署集群
- 脚本会自动通过keepalived配置VIP(虚拟IP),对外访问统一通过VIP。当主节点宕机后,会自动切换到权重较高的从节点
🔧 环境准备
在开始安装之前,请确保满足以下环境要求(生产环境建议 >= 16C 32G):
- 大于等于3台Linux服务器:每台服务器将作为一个 MySQL 节点。
- root用户或配置了sudo免密的用户及密码,且所有节点密码必须相同
- 需要
节点数+ 1个可用IP。其中一个作为VIP,对外统一使用这个VIP进行连接
支持的系统
目前脚本实测支持以下Linux发行版
| 支持 单机/集群,适配 X86_64 | 是否支持 |
|---|---|
| Redhat、CentOS、OracleLinux、RockyLinux、AlmaLinux >= 7 全系 | ✅ |
| OpenEuler >= 20 全系 | ✅ |
| Ubuntu >= 20 全系 | ✅ |
| AnolisOS >= 7 全系 | ✅ |
| 统信 UOS V20 1070a/1070e | ✅ |
| 银河麒麟 Kylin >= V10 全系 | ✅ |
| 中标麒麟 NeoKylin V7 全系 | ✅ |
| 中科方德 NFSCNS 4.0 全系 | ✅ |
| 磐宁 NingOS V3.0 全系 | ✅ |
📄 脚本参数说明
📋 所有参数说明
通过 bash MySQLShellInstall.sh -h 可以参看脚本所有参数说明
-ou [必填] 操作用户名,用户配置SSH互信,必须是root用户或者配置sudo免密的用户
-oup [必填] 操作用户对应的密码,用户配置SSH互信
-sp [可选] SSH端口号,不传默认为22,若修改过则必须填写修改后的实际端口号
-mip [必填] MySQL安装路径
-ibp [可选] Innodb内存,默认为2G,生产环境建议 >=8G
-ip [必填] 集群节点IP,多个以逗号隔开,例如:-ip 192.168.80.81,192.168.80.82,192.168.80.83,或 -ip 192.168.80.{81..83}
-vip [可选] 虚拟IP,集群模式必填,用于配置 keepalived
🚀 单机模式命令示例
bash MySQLShellInstall.sh \
-mip "/dhm" `# 安装主目录`\
-ibp 2G `# Innodb内存`
🚀 集群模式命令示例
bash MySQLShellInstall.sh \
-ou root `# 操作用户名`\
-oup 'admin' `# 操作用户对应的密码`\
-mip "/dhm" `# 安装主目录`\
-ibp 8G `# Innodb内存`\
-ip "192.168.80.{81..83}" `# 集群节点IP`\
-vip "192.168.80.88" `# 虚拟IP`
🛠️ 安装过程
安装过程中需要使用root用户进行安装,若系统当前用户为非root用户(必须是配置了sudo免密),则先执行下面命令切换为root用户
sudo su - root
执行下面命令,创建文件上传目录
mkdir /soft
将安装包 上传至 /soft 路径下,若一开始登录的时非root用户,可以先上传到 /tmp 路径下,然后移动到 /soft 下
- mysql_pkg:所有安装所需的安装包
- MySQLShellInstall.sh:MySQL一键安装脚本
[root@huge ~]# cd /soft/MySQL_8.0.36/
[root@huge MySQL_8.0.36]# ll
总用量 60
drwxr-xr-x. 2 root root 243 11月 30 17:31 mysql_pkg
-rw-r--r--. 1 root root 60418 11月 30 17:31 MySQLShellInstall.sh
🔍 查看帮助
执行 bash MySQLShellInstall.sh -h 查看脚本使用说明
[root@huge MySQL_8.0.36]# bash MySQLShellInstall.sh -h
██████ ██████ █████ █████ █████████ ██████ █████
░░██████ ██████ ░░███ ░░███ ███░░░░░███ ███░░░░███ ░░███
░███░█████░███ ░░███ ███ ░███ ░░░ ███ ░░███ ░███
░███░░███ ░███ ░░█████ ░░█████████ ░███ ░███ ░███
░███ ░░░ ░███ ░░███ ░░░░░░░░███░███ ██░███ ░███
░███ ░███ ░███ ███ ░███░░███ ░░████ ░███ █
█████ █████ █████ ░░█████████ ░░░██████░██ ███████████
░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░ ░░░░░░ ░░ ░░░░░░░░░░░
注意:本脚本仅用于新服务器上实施部署使用,若需要在已运行的服务器主机上执行,务必确保数据安全,以免发生数据丢失或者损坏,造成不可挽回的损失!!!
用法: MySQLShellInstall.sh [选项] 对象 { 命令 | help }
参数说明:
-ou [必填] 操作用户名,用户配置SSH互信
-oup [必填] 操作用户对应的密码,用户配置SSH互信
-sp [可选] SSH端口号,不传默认为22,若修改过则必须填写修改后的实际端口号
-mip [必填] MySQL安装路径
-ibp [可选] Innodb内存,默认为2G,生产环境建议 >=8G
-ip [必填] 集群节点IP,多个以逗号隔开,例如:-ip 192.168.80.81,192.168.80.82,192.168.80.83,或 -ip 192.168.80.{81..83}
-vip [可选] 虚拟IP,集群模式必填,用于配置 keepalived
单机模式命令示例:
bash MySQLShellInstall.sh \
-mip "/dhm" `# 安装主目录`\
-ibp 2G `# Innodb内存`
集群模式命令示例:
bash MySQLShellInstall.sh \
-ou root `# 操作用户名`\
-oup 'admin' `# 操作用户对应的密码`\
-mip "/dhm" `# 安装主目录`\
-ibp 8G `# Innodb内存`\
-ip "192.168.80.{81..83}" `# 集群节点IP`\
-vip "192.168.80.88" `# 虚拟IP`
单机版安装
根据脚本参数说明,执行下面命令,安装MySQL单机版。执行脚本之后有个模式确认,输入 si 即可开始单机安装
安装成功之后,会打印管理命令以及账号信息
[root@huge MySQL_8.0.36]# bash MySQLShellInstall.sh \
-mip "/dhm" `# 安装主目录`\
-ibp 2G `# Innodb内存`
██████ ██████ █████ █████ █████████ ██████ █████
░░██████ ██████ ░░███ ░░███ ███░░░░░███ ███░░░░███ ░░███
░███░█████░███ ░░███ ███ ░███ ░░░ ███ ░░███ ░███
░███░░███ ░███ ░░█████ ░░█████████ ░███ ░███ ░███
░███ ░░░ ░███ ░░███ ░░░░░░░░███░███ ██░███ ░███
░███ ░███ ░███ ███ ░███░░███ ░░████ ░███ █
█████ █████ █████ ░░█████████ ░░░██████░██ ███████████
░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░ ░░░░░░ ░░ ░░░░░░░░░░░
注意:本脚本仅用于新服务器上实施部署使用,若需要在已运行的服务器主机上执行,务必确保数据安全,以免发生数据丢失或者损坏,造成不可挽回的损失!!!
请选择安装模式 [单机(si)/集群(cl)] : si
MySQL开始安装,详细安装过程可查看日志: tail -2000f /soft/MySQL_8.0.36/print_shell_install_20251130175245.log
正在进行安装前检查,请稍等......
校验MySQL安装包是否上传......已完成 (耗时: 1 秒)
安装MySQL单机版......已完成 (耗时: 25 秒)
恭喜!MySQL 一键安装完成(耗时: 26 秒)。请使用以下地址访问:
==============================================
mysql部署完成
ip:192.168.80.13
启动服务:systemctl start mysqld
重启服务:systemctl restart mysqld
停止服务:systemctl stop mysqld
访问地址::3306
用户:root/app
密码:SieGsPass2025
==============================================
安装过程中,可以新打开一个窗口,执行上面的命令,查看实时安装日志,此处就不展示详细安装日志了
[root@mysql ~]# tail -2000f /soft/MySQL_8.0.36/print_shell_install_20251130174842.log
集群安装
1)根据脚本参数说明,执行下面命令,安装MySQL集群。执行脚本之后有个模式确认,输入 cl 即可开始集群安装
2)执行前注意一定要根据上面的参数说明,将示例中的参数信息改为,一定不要直接复制粘贴就直接执行
3)安装成功之后,由于部分系统安全策略原因,需要重启才能正常连接使用。根据提示输入 Y 即可重启所有节点,待重启完成之后,即可正常连接使用
[root@huge MySQL_8.0.36]# bash MySQLShellInstall.sh \
> -ou root `# 操作用户名`\
> -oup 'admin' `# 操作用户对应的密码`\
> -mip "/dhm" `# 安装主目录`\
> -ibp 8G `# Innodb内存`\
> -ip "192.168.80.{81..83}" `# 集群节点IP`\
> -vip "192.168.80.88" `# 虚拟IP`
██████ ██████ █████ █████ █████████ ██████ █████
░░██████ ██████ ░░███ ░░███ ███░░░░░███ ███░░░░███ ░░███
░███░█████░███ ░░███ ███ ░███ ░░░ ███ ░░███ ░███
░███░░███ ░███ ░░█████ ░░█████████ ░███ ░███ ░███
░███ ░░░ ░███ ░░███ ░░░░░░░░███░███ ██░███ ░███
░███ ░███ ░███ ███ ░███░░███ ░░████ ░███ █
█████ █████ █████ ░░█████████ ░░░██████░██ ███████████
░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░ ░░░░░░ ░░ ░░░░░░░░░░░
注意:本脚本仅用于新服务器上实施部署使用,若需要在已运行的服务器主机上执行,务必确保数据安全,以免发生数据丢失或者损坏,造成不可挽回的损失!!!
请选择安装模式 [单机(si)/集群(cl)] : cl
MySQL开始安装,详细安装过程可查看日志: tail -2000f /soft/MySQL_8.0.36/print_shell_install_20251130180606.log
正在进行安装前检查,请稍等......
校验MySQL安装包是否上传......已完成 (耗时: 1 秒)
校验vip不能已被占用......已完成 (耗时: 2 秒)
配置SSH互信......已完成 (耗时: 5 秒)
集群节点初始化配置......已完成 (耗时: 30 秒)
解压MySQL安装包......已完成 (耗时: 47 秒)
安装MySQL......已完成 (耗时: 102 秒)
使用MySQL Shell创建MySQL集群......已完成 (耗时: 84 秒)
安装MySQL Route......已完成 (耗时: 18 秒)
安装 keepalived......已完成 (耗时: 37 秒)
恭喜!MySQL 一键安装完成(耗时: 326 秒)。请使用以下地址访问:
==============================================
vip:192.168.80.88
启动服务:systemctl start mysqlrouter
重启服务:systemctl restart mysqlrouter
停止服务:systemctl stop mysqlrouter
读写地址:192.168.80.88:6446
只写地址:192.168.80.88:6447
用户:root/app
密码:SieGsPass2025
==============================================
由于系统安全策略,需要重启之后才能彻底关闭正常连接MySQL使用 ,是否现在是否重启主机:[Y/N] Y
正在重启节点 192.168.80.82 主机......
Connection to 192.168.80.82 closed by remote host.
正在重启节点 192.168.80.83 主机......
Connection to 192.168.80.83 closed by remote host.
正在重启当前节点主机......
Connection closing...Socket close.
Connection closed by foreign host.
安装过程中,可以新打开一个窗口,执行上面的命令,查看实时安装日志,此处就不展示详细安装日志了
[root@mysql01 MySQL_8.0.36]# tail -2000f /soft/MySQL_8.0.36/print_shell_install_20251130180606.log
✅ 连接测试
待所有节点重启完成,集群启动成功之后,使用数据库连接工具,输入上面账号信息进行连接。默认提供集群的读写地址和只读地址
读写地址:192.168.80.88:6446
只写地址:192.168.80.88:6447
用户:root/app
密码:SieGsPass2025
