# 工具部署
工具类型: shell 脚本
文档更新: 2025-02-22 16:43:06
适用场景: 非云化产品的的私有化部署(自建环境)
# 环境支持
版本支持情况
Official: 5.5.x >= 5.5.8 | 5.6.x >= 5.6.10 | 5.7.x >= 5.7.9 | 8.0.x >= 8.0.11 | 8.4.x >= 8.4.0
Percona : 5.7.x >= 5.7.31 | 8.0.x >= 8.0.20 | 8.4.x >= 8.4.0
脚本使用说明
只支持 AMD64/ARM64 的操作系统以及官方的二进制安装包
脚本和 MySQL 二进制包放在同级目录 终端下传参执行脚本
脚本相关命令
安装: bash multi-install-mysql.sh install
卸载: bash multi-install-mysql.sh remove
备份: bash multi-install-mysql.sh backup
依赖: bash multi-install-mysql.sh depend
服务启停管理
systemd: systemctl start|restart|stop|status mysqld
manual : /apps/mysql/support-files/mysql.server start|restart|stop|status
官方下载地址
mysql official
5.5.x: https://dev.mysql.com/downloads/mysql/5.5.html
5.6.x: https://dev.mysql.com/downloads/mysql/5.6.html
5.7.x: https://dev.mysql.com/downloads/mysql/5.7.html
8.0.x: https://dev.mysql.com/downloads/mysql/8.0.html
8.4.x: https://dev.mysql.com/downloads/mysql/8.4.html
percona server for mysql
5.5.x: https://www.percona.com/downloads/Percona-Server-5.5/
5.6.x: https://www.percona.com/downloads/Percona-Server-5.6/
5.7.x: https://www.percona.com/downloads/Percona-Server-5.7/
8.0.x: https://www.percona.com/downloads/Percona-Server-8.0/
8.4.x: https://www.percona.com/downloads/Percona-Server-8.4/
# 补充说明
1、mysql 官方从 8.0 系列开始,同时支持 amd64 和 arm64 两个架构。
2、对于业务数据,为了数据安全,不建议采用容器化的方式部署。
3、建议使用 5.7.x/8.0.x 系列的版本,不要使用太新或太老或创新版本。
# 相关下载
脚本安装工具: https://pan.baidu.com/s/15-BT9ZIhMJMCJOZc8iOrbg?pwd=2025
数据库安装包: https://dev.mysql.com/downloads/mysql
下载时注意选择版本和平台架构按需下载。一般情况下,可下载不带调试符号的版本,也就是带有 minimal 字样的即可。
# 上传文件
# 以 mysql-8.4.4-linux-glibc2.17-x86_64-minimal.tar.xz 为例
把脚本和安装包,上传到数据库服务器同级目录下。
# 配置参数
# ******************** 按需配置以下参数 ******************** #
# 软件安装 '根' 目录
installRootDir="/apps"
# 是否载入脚本所在目录下的bin目录 1=加载
# 此参数主要用于老系统的bash版本过低时 使用预置的命令文件来运行 仅虚拟化平台 物理机可能会报段错误
loadsBinDir="1"
# 是否加载 /etc/profile 环境变量文件 1=加载
loadEtcProfile=""
# 如果已存在同名安装目录 是否开启备份 1=开启 只支持 tgz|rar|zip 格式 备份目录默认为脚本所在平级的 backup 目录
# 建议开启此参数 防止误删 脚本未做人工选择提示 将直接执行任务
# 注意: 此备份是备份 脚本设定的 mysql 的安装文件夹 不是数据库数据的导出导入那种备份
enableBackup="1"
# 备份文件保存目录 默认保存在脚本所在目录下的backup下 若需修改 请设置为绝对路径
backupDir="$(dirname "$(readlink -f "$0")")/backup"
# 备份文件格式(后缀名) 只能是 tgz|rar|zip|7z 没有对应备份程序时 可尝试使用不同的备份格式 如果使用 tgz 一般情况下 只需要一个脚本即可
backupFormat="tgz"
# 客户端和服务端 当前设置为相同 端口默认为 3306 在同一台主机安装多个版本的时候 注意修改端口号和安装路径以及启动控制文件
dbPort="3306"
# 字符集设置(仅字符集 不设置字符序) 如果设置为 utf8mb4 请使用 mysql 5.7/8.0
dbCharacter="utf8mb4"
# 默认存储引擎
dbEngine="InnoDB"
# 初始随机密码位数 默认为 12 位 10 <= dbPWDDigit < 30
dbPWDDigit="12"
# 身份认证插件 仅安装 MySQL 8.x 时按需设置 caching_sha2_password | mysql_native_password | sha256_password
# 8.0.27 开始使用 authentication_policy 并将要废弃 default_authentication_plugin
dbDefaultAuthPlugin="caching_sha2_password"
# root 账号默认身份认证方法 仅安装 MySQL 8.x 时按需设置
rootAuthPlugin="caching_sha2_password"
# 数据库最大连接数
dbMaxConnect="600"
# max_allowed_packet 参数值大小 单位MB 此参数服务端和客户端都有
# 当迁移/升级OA数据库数据时 怀疑 blob 过大导致异常时 可考虑在文件 bin/mysqld_safe 中添加: ulimit -d 256000 并重启 mysqld 服务
# https://dev.mysql.com/doc/refman/8.0/en/packet-too-large.html
dbMaxAllowedPacket="256"
# innodb_buffer_pool_size 参数值占用的的内存百分比 脚本将根据这里指定的百分比进行计算和取整赋值
# 计算公式为 总内存大小(GB)*1024*内存百分比=innodb_buffer_pool_size(MB)
# 需指定为1位数的小数点 如 0.6 表示 60% 即 innodb_buffer_pool_size 的值 = 物理内存的 60%
dbIBPSizeUseMemPercent="0.4"
# 创建数据库 不需创建则双引号内保留为空 数据库名不要使用空格等特殊字符 正确样例: createDBName="a8v81"
createDBName=""
# MySQL 8.0.x 时 为了避免 binlog 撑爆磁盘 设置清除过期日志的时间 以秒为单位
dbBinLogExpireLimit="86400"
# MySQL 默认时区 国内用户使用 8.0+ 时需要调整此参数
dbDefaultTimeZone="+8:00"
# MySQL 事务隔离级别 READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE
dbTransactionIsolation="READ-COMMITTED"
# innodb 数据文件及 redo log 的打开、刷写模式 只能是 fdatasync(默认) | O_DSYNC | O_DIRECT
# fdatasync,调用 fsync() 去刷数据文件与 redo log 的 buffer
# O_DSYNC innodb 会使用 O_SYNC 方式打开和刷写 redo log 使用 fsync() 刷写数据文件
# O_DIRECT innodb 使用 O_DIRECT 打开数据文件 使用 fsync() 刷写数据文件跟 redo log
innodbFlushMethod="O_DIRECT"
# innodb_page_size 大小值(单位为K) 官方默认是16k 最好是根据磁盘系统和性能来设置
innodbPageSize="16"
# slow_query_log 根据需要设置开启慢查询日志 只能是 ON|OFF 其中 ON=开启 OFF=关闭
slowQueryLog="OFF"
# 是否加入开机自启动 1=启用 注意: 仅支持 systemd 服务管理方式
enableAutostart="1"
# 安装后是否启动服务 1=启动 仅限于新装
startAppSrv="1"
# 是否写入 PATH 系统环境变量 1="写入"
enableWriteEnvPATH="1"
# 是否写入 LD_LIBRARY_PATH 系统环境变量 1=写入
enableWriteEnvLD=""
# 系统环境变量配置文件
sysEnvFile="/etc/profile"
# 防火墙设置 取值只能是 dis|add 当取值为 dis 时直接禁用防火墙 取值为 add 时 添加数据库的端口开放规则到防火墙中
firewallMethod="add"
# **** 以下参数不建议修改 **** #
appInstallDir="${installRootDir}/mysql"
appBinDir="${installRootDir}/mysql/bin"
appLogDir="${installRootDir}/mysql/logs"
appDataDir="${installRootDir}/mysql/data"
appLibDir="${installRootDir}/mysql/lib"
appPidFile="${appDataDir}/mysqld.pid"
appSbinFile="${appBinDir}/mysqld"
appBinFile="${appBinDir}/mysql"
appUpgradeFile="${appBinDir}/mysql_upgrade"
appAdminBinFile="${appBinDir}/mysqladmin"
# mysql 配置文件
appEtcFile="${appInstallDir}/my.cnf"
# mysql 错误日志文件
appErrLogFile="${appLogDir}/error.log"
sockFileServer="${appDataDir}/mysql.sock"
sockFileClient="${appDataDir}/mysql.sock"
sockFileMysql="${appDataDir}/mysql.sock"
# appEnvFile="${appInstallDir}/support-files/mysql.env"
appSrvFile="${appInstallDir}/support-files/mysql.server"
# 服务控制文件 - systemd
sysSrvFile="/etc/systemd/system/mysqld.service"
# **** 以上参数不建议修改 **** #
# 安装依赖
bash multi-install-mysql.sh depend
# 执行安装
bash multi-install-mysql.sh install
# 版本更新
工具支持同系列版本更新,例如:5.7.30 更新到 5.7.41。当存在安装时,将提示安装选择。
直接把最新版的安装包和脚本工具放在一起,传参执行安装即可自动识别。
# 执行卸载
为了数据安全,务必谨慎操作,提前备份数据。
bash multi-install-mysql.sh remove
编撰人:yangfc
← COP-V8单体部署和升级方案 手动部署 →
