数据库教程FGMT30‑Linux平台MySQL8.0/8.4安装配置与版本升级

举报
风哥数据库教程 发表于 2026/09/14 09:31:03 2026/09/14
【摘要】 数据库教程FGMT30‑Linux平台MySQL8.0/8.4安装配置与版本升级 前言MySQL8.0与MySQL8.4 LTS是当前企业生产环境主流数据库版本,8.0为广泛使用的长期支持版本,MySQL8.4为新一代LTS版本,在InnoDB内核、IO模型、默认参数、认证插件层面存在大量变更。Linux是MySQL最主要的运行操作系统,二进制通用包、源码编译、RPM/YUM是三种主流部署方...

数据库教程FGMT30‑Linux平台MySQL8.0/8.4安装配置与版本升级

前言

MySQL8.0与MySQL8.4 LTS是当前企业生产环境主流数据库版本,8.0为广泛使用的长期支持版本,MySQL8.4为新一代LTS版本,在InnoDB内核、IO模型、默认参数、认证插件层面存在大量变更。Linux是MySQL最主要的运行操作系统,二进制通用包、源码编译、RPM/YUM是三种主流部署方式,不同安装方式适用场景不同;同时跨大版本升级是DBA高频运维工作,升级操作失误会引发数据库启动失败、账号认证异常、业务SQL报错等严重故障。风哥教程本文搭建两套互相独立的实验环境:第一套在主机fgedu‑net‑cn1部署MySQL8.0;第二套在主机fgedu‑net‑cn2部署MySQL8.4,两套环境硬件规格均为64G内存,8颗CPU,互不依赖。风哥 itpux‑com

本套风哥教程面向MySQL DBA、运维工程师、数据库架构师;软件根目录统一使用/fgedudb,数据库实例名fgedudb,业务测试用户名fgedu;覆盖操作系统环境调优、二进制部署、源码编译部署、RPM包部署、生产规格my.cnf参数模板、实例初始化、systemd启停脚本、远程访问配置、版本升级、卸载清理全流程。风哥教程本文分为前言与大纲、核心理论知识、实战操作演练、风哥针对本文总结四大模块;实战提供大量可直接复制Shell、SQL脚本,读者可以在两套独立主机完整复现8.0、8.4全套部署与升级操作。网上搜索风哥教程可以学习全套数据库教程

内容大纲

  1. MySQL8.0与MySQL8.4版本特性对比,两套实验环境硬件主机规划,三种安装方式适用场景说明
  2. 核心理论:Linux操作系统数据库服务器内核、文件句柄、资源限制;MySQL目录结构解析;二进制包、源码编译、RPM包的区别;8.0到8.4版本关键变更、升级前置约束;生产配置文件核心参数原理(适配64G内存8CPU)
  3. MySQL部署前置检查:依赖包、selinux、防火墙、磁盘规划、用户与权限规范
  4. 实战1:fgedu‑net‑cn1主机 MySQL8.0 Linux二进制包完整部署,生产my.cnf、初始化、systemd脚本、远程访问、业务账号创建
  5. 实战2:fgedu‑net‑cn1主机 MySQL8.0源码编译部署实操要点
  6. 实战3:fgedu‑net‑cn1主机 MySQL8.0 YUM/RPM方式部署实操
  7. 实战4:fgedu‑net‑cn2主机 MySQL8.4 Linux二进制包完整部署,适配8.4新版本内核参数、my.cnf模板
  8. 实战5:fgedu‑net‑cn2主机 MySQL8.4源码编译部署实操要点
  9. 实战6:fgedu‑net‑cn2主机 MySQL8.4 YUM/RPM方式部署实操
  10. 实战7:MySQL8.0升级至MySQL8.4大版本升级完整实战,升级前检查、就地升级、逻辑备份迁移两种方案
  11. MySQL实例基础管理:启停、登录、权限配置、卸载清理操作
  12. 上线验收清单,部署与升级高频故障排查

一、核心理论知识

本章节为本套风哥教程理论基础,理解MySQL不同安装方式差异,掌握8.0与8.4版本内核、参数、认证插件变更点,理解Linux数据库服务器系统调优原理,规避部署、升级过程中业务故障风险。风哥教程 113257174

1.1 两套实验环境说明

两套环境完全独立,不互通,分别部署在不同主机。

  • 环境A:主机fgedu‑net‑cn1,操作系统RHEL8,部署MySQL8.0.36,硬件64G内存、8CPU;软件根目录/fgedudb/mysql80,数据目录/fgedudb/mysql80/data
  • 环境B:主机fgedu‑net‑cn2,操作系统RHEL8,部署MySQL8.4.3 LTS,硬件64G内存、8CPU;软件根目录/fgedudb/mysql84,数据目录/fgedudb/mysql84/data

1.2 MySQL三种主流安装方式对比

  1. 二进制通用包(Generic Tarball):预编译好的tar.xz压缩包,不需要本地编译,部署速度快;目录完全自定义,生产环境最常用;缺点需要手动配置systemd服务、配置文件。
  2. 源码编译安装:下载完整MySQL源代码,本地cmake编译;可以自定义编译选项、裁剪组件;编译耗时高,适合深度定制场景;生产环境一般不优先选用。
  3. RPM/YUM官方包:RPM包管理,自动生成系统服务,目录固定在系统默认路径;适合标准化批量部署;自定义软件、数据目录改动相对繁琐。

1.3 MySQL8.0与MySQL8.4关键版本差异

  1. InnoDB大量默认参数变更:8.4innodb_adaptive_hash_index默认为OFF;innodb_io_capacity由200提升至10000;innodb_log_buffer_size由16M提升至64M;innodb_flush_method默认O_DIRECT;
  2. 认证插件:MySQL8.4默认禁用mysql_native_password,默认使用caching_sha2_password,旧应用需要显式开启旧认证插件;
  3. 复制语法变更:废弃SHOW SLAVE STATUSSTART SLAVE,统一改为SHOW REPLICA STATUSSTART REPLICA
  4. 升级路径:不支持MySQL5.7直接升级到8.4,必须先升级到8.0,再升级8.4;支持8.0.22及以上版本直接就地升级8.4;
  5. 部分系统变量、配置选项被移除,升级前必须检查my.cnf,删除已经废弃参数,否则实例启动失败。网上搜索风哥教程可以学习全套数据库教程

1.4 Linux数据库服务器系统前置理论(适配64G内存8CPU)

  1. swappiness:数据库服务器建议设置为10,尽量避免使用swap交换分区,防止内存交换引发性能抖动;
  2. 文件句柄与进程数:MySQL高并发会消耗大量文件句柄,nofile建议65535以上,nproc进程数放大;
  3. 内核参数max_map_count,建议262144,满足InnoDB内存映射需求;
  4. SELinux:生产部署两种方案,永久关闭或者配置完整selinux上下文;测试环境一般直接关闭;
  5. 防火墙:数据库端口3306需要按需放行,禁止对公网直接暴露数据库端口;
  6. 文件系统:数据目录推荐XFS文件系统,挂载参数增加noatime,nodiratime,减少元数据IO开销。

1.5 MySQL目录结构与核心配置文件理论

  • base_dir:MySQL软件根目录,存放bin、lib、include等程序文件;
  • datadir:数据目录,存放ibd数据文件、redo undo日志、系统库mysql;
  • my.cnf:主配置文件,分为[mysqld]服务段、[mysqld_safe]、[client]客户端段;>

重点参数(64G内存8CPU生产模板):
innodb_buffer_pool_size:InnoDB缓冲池,物理内存50%‑60%,64G机器设置32G;
innodb_log_file_size:redo日志单文件大小,生产推荐4G;
max_connections最大连接数,生产设置2000;
lower_case_table_names=1表名大小写不敏感,初始化之后不可修改。

1.6 MySQL升级两种方案理论

  1. 就地升级(In‑Place Upgrade):保留原有数据目录,替换二进制软件包,执行mysql_upgrade(8.4使用mysqlcheck‑‑upgrade);停机时间短,风险较高,升级前必须完整备份全库。
  2. 逻辑迁移升级:使用mysqldump全库导出,新版本实例重新导入;停机时间取决于数据量;升级风险最低,大数据量耗时较长。

升级硬性前置:升级前执行mysqlcheck‑‑check‑‑all‑databases做全库一致性检查;全库备份;配置文件清理废弃参数;业务应用测试新认证插件兼容性。风哥数据库教程 itpux‑com

1.7 部署、升级高频风险点

  1. lower_case_table_names只能初始化实例时设置,实例创建完成修改直接启动失败,数据损坏风险;
  2. 8.4 my.cnf残留已废弃参数,数据库无法启动;
  3. 升级前没有备份,升级故障无法回退;
  4. mysql_native_password插件在8.4默认关闭,旧应用账号登录失败;
  5. 操作系统文件句柄、swap配置不合理,高并发场景数据库OOM、hang住。

上51CTO搜索风哥可以学习全套数据库教程

二、实战操作演练

环境说明:
主机fgedu‑net‑cn1部署MySQL8.0,主机fgedu‑net‑cn2部署MySQL8.4;操作系统RHEL8;硬件64G内存8CPU;软件根目录/fgedudb;操作系统普通用户mysql;数据库端口3306;业务测试库fgedudb,业务用户fgedu
通用前置操作,两台主机都执行:

2.0.1 操作系统依赖包安装

yum install -y libaio libaio‑devel ncurses‑compat openssl‑devel cmake gcc gcc‑c++ bison perl‑Devel‑CheckLib

2.0.2 操作系统内核参数调优

cat >> /etc/sysctl.conf <<EOF
vm.swappiness=10
vm.max_map_count=262144
net.core.somaxconn=65535
net.ipv4.tcp_fin_timeout=30
EOF
sysctl -p

2.0.3 limits.conf资源限制

cat >> /etc/security/limits.conf <<EOF
mysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 40960
mysql hard nproc 40960
EOF

2.0.4 selinux与防火墙处理(测试环境)

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
firewall‑cmd --permanent --add‑port=3306/tcp
firewall‑cmd --reload

2.0.5 创建mysql操作系统用户

groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

第一部分:实战环境A fgedu‑net‑cn1 MySQL8.0部署

2.1 MySQL8.0二进制包完整部署

2.1.1 创建目录,解压二进制包

mkdir -p /fgedudb/mysql80
mkdir -p /fgedudb/mysql80/data
mkdir -p /fgedudb/mysql80/log
chown -R mysql:mysql /fgedudb/mysql80
#上传mysql‑8.0.36‑linux‑glibc2.28‑x86_64.tar.xz至/fgedudb
cd /fgedudb
tar -Jxvf mysql‑8.0.36‑linux‑glibc2.28‑x86_64.tar.xz -C /fgedudb/mysql80 --strip‑components=1

2.1.2 编写MySQL8.0生产规格my.cnf配置文件,64G内存8CPU

/fgedudb/mysql80/my.cnf

[mysqld]
basedir=/fgedudb/mysql80
datadir=/fgedudb/mysql80/data
socket=/fgedudb/mysql80/mysql.sock
pid‑file=/fgedudb/mysql80/mysql.pid
port=3306
user=mysql
lower_case_table_names=1
default‑storage‑engine=InnoDB
innodb_buffer_pool_size=32G
innodb_log_file_size=4G
innodb_log_buffer_size=16M
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
max_connections=2000
open_files_limit=65535
log_error=/fgedudb/mysql80/log/mysqld.err
slow_query_log=ON
slow_query_log_file=/fgedudb/mysql80/log/slow.log
long_query_time=2
binlog_format=ROW
server‑id=1
log_bin=/fgedudb/mysql80/log/mysql‑bin

[mysqld_safe]
log‑error=/fgedudb/mysql80/log/mysqld.err

[client]
socket=/fgedudb/mysql80/mysql.sock
port=3306

设置配置文件权限

chmod 644 /fgedudb/mysql80/my.cnf
chown mysql:mysql /fgedudb/mysql80/my.cnf

2.1.3 初始化MySQL8.0实例

cd /fgedudb/mysql80
bin/mysqld --defaults‑file=/fgedudb/mysql80/my.cnf --initialize --user=mysql
#查看初始化生成的临时root密码
grep 'temporary password' /fgedudb/mysql80/log/mysqld.err

2.1.4 配置systemd system服务文件

/etc/systemd/system/mysqld80.service

[Unit]
Description=MySQL8.0 Database Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/fgedudb/mysql80/bin/mysqld_safe --defaults‑file=/fgedudb/mysql80/my.cnf
ExecStop=/fgedudb/mysql80/bin/mysqladmin -u root -S /fgedudb/mysql80/mysql.sock shutdown
Restart=on‑failure

[Install]
WantedBy=multi‑user.target

加载systemd配置,启动数据库

systemctl daemon‑reload
systemctl start mysqld80
systemctl enable mysqld80
systemctl status mysqld80

2.1.5 登录数据库,修改root密码,创建业务用户fgedu

cd /fgedudb/mysql80
bin/mysql -u root -S /fgedudb/mysql80/mysql.sock
ALTER USER 'root'@'localhost' IDENTIFIED BY 'fgedudb';
create database fgedudb default character set utf8mb4 collate utf8mb4_unicode_ci;
create user 'fgedu'@'%' identified by 'fgedudb';
grant all privileges on fgedudb.* to 'fgedu'@'%';
flush privileges;
exit;

2.1.6 远程连接测试

#本机客户端测试
bin/mysql -u fgedu -p'fgedudb' -h127.0.0.1 -P3306

2.2 fgedu‑net‑cn1 MySQL8.0源码编译部署要点

源码编译适合需要自定义编译选项场景,编译依赖cmake。

mkdir -p /fgedudb/mysql80_src/build
cd /fgedudb/mysql80_src/build
cmake ../mysql‑8.0.36‑source \
‑DCMAKE_INSTALL_PREFIX=/fgedudb/mysql80 \
‑DMYSQL_DATADIR=/fgedudb/mysql80/data \
‑DWITH_INNOBASE_STORAGE_ENGINE=1 \
‑DWITH_SSL=system \
‑DMYSQL_UNIX_ADDR=/fgedudb/mysql80/mysql.sock \
‑DDEFAULT_CHARSET=utf8mb4 \
‑DDEFAULT_COLLATION=utf8mb4_unicode_ci
make -j8
make install

编译完成后,后续初始化、my.cnf、systemd服务流程与二进制包完全一致。网上搜索风哥教程可以学习全套数据库教程

2.3 fgedu‑net‑cn1 MySQL8.0 YUM/RPM部署要点

YUM方式目录为系统默认路径/var/lib/mysql,如需修改datadir要迁移数据目录。

rpm -Uvh [https://repo.mysql.com/mysql80](https://repo.mysql.com/mysql80)‑community‑release‑el8‑1.noarch.rpm
yum install -y mysql‑community‑server mysql‑community‑client
systemctl start mysqld
systemctl enable mysqld
#获取临时密码
grep 'temporary password' /var/log/mysqld.log

第二部分:实战环境B fgedu‑net‑cn2 MySQL8.4部署

2.4 MySQL8.4二进制包完整部署

主机fgedu‑net‑cn2,硬件64G内存8CPU

2.4.1 创建目录,解压8.4二进制包

mkdir -p /fgedudb/mysql84
mkdir -p /fgedudb/mysql84/data
mkdir -p /fgedudb/mysql84/log
chown -R mysql:mysql /fgedudb/mysql84
cd /fgedudb
tar -Jxvf mysql‑8.4.3‑linux‑glibc2.28‑x86_64.tar.xz -C /fgedudb/mysql84 --strip‑components=1

2.4.2 MySQL8.4生产my.cnf配置文件,适配8.4默认参数变化,64G内存8CPU

/fgedudb/mysql84/my.cnf

[mysqld]
basedir=/fgedudb/mysql84
datadir=/fgedudb/mysql84/data
socket=/fgedudb/mysql84/mysql.sock
pid‑file=/fgedudb/mysql84/mysql.pid
port=3306
user=mysql
lower_case_table_names=1
default‑storage‑engine=InnoDB
#8.4开启旧密码插件兼容老业务,按需开启
mysql_native_password=ON
innodb_buffer_pool_size=32G
innodb_log_file_size=4G
max_connections=2000
open_files_limit=65535
log_error=/fgedudb/mysql84/log/mysqld.err
slow_query_log=ON
slow_query_log_file=/fgedudb/mysql84/log/slow.log
long_query_time=2
binlog_format=ROW
server‑id=1
log_bin=/fgedudb/mysql84/log/mysql‑bin

[mysqld_safe]
log‑error=/fgedudb/mysql84/log/mysqld.err

[client]
socket=/fgedudb/mysql84/mysql.sock
port=3306

注意:8.4大量InnoDB参数自动自适应硬件,不需要显式写在配置文件;删除8.0已经废弃参数。

chmod 644 /fgedudb/mysql84/my.cnf
chown mysql:mysql /fgedudb/mysql84/my.cnf

2.4.3 MySQL8.4实例初始化

cd /fgedudb/mysql84
bin/mysqld --defaults‑file=/fgedudb/mysql84/my.cnf --initialize --user=mysql
grep 'temporary password' /fgedudb/mysql84/log/mysqld.err

2.4.4 systemd服务配置 /etc/systemd/system/mysqld84.service

[Unit]
Description=MySQL8.4 Database Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/fgedudb/mysql84/bin/mysqld_safe --defaults‑file=/fgedudb/mysql84/my.cnf
ExecStop=/fgedudb/mysql84/bin/mysqladmin -u root -S /fgedudb/mysql84/mysql.sock shutdown
Restart=on‑failure

[Install]
WantedBy=multi‑user.target
systemctl daemon‑reload
systemctl start mysqld84
systemctl enable mysqld84
systemctl status mysqld84

2.4.5 登录修改密码,创建业务账号

cd /fgedudb/mysql84
bin/mysql -u root -S /fgedudb/mysql84/mysql.sock
ALTER USER 'root'@'localhost' IDENTIFIED BY 'fgedudb';
create database fgedudb default character set utf8mb4 collate utf8mb4_unicode_ci;
create user 'fgedu'@'%' identified by 'fgedudb';
grant all privileges on fgedudb.* to 'fgedu'@'%';
flush privileges;
exit;

风哥数据库教程 itpux‑com

2.5 fgedu‑net‑cn2 MySQL8.4源码编译部署要点

mkdir -p /fgedudb/mysql84_src/build
cd /fgedudb/mysql84_src/build
cmake ../mysql‑8.4.3‑source \
‑DCMAKE_INSTALL_PREFIX=/fgedudb/mysql84 \
‑DMYSQL_DATADIR=/fgedudb/mysql84/data \
‑DWITH_INNOBASE_STORAGE_ENGINE=1 \
‑DWITH_SSL=system \
‑DMYSQL_UNIX_ADDR=/fgedudb/mysql84/mysql.sock \
‑DDEFAULT_CHARSET=utf8mb4 \
‑DDEFAULT_COLLATION=utf8mb4_unicode_ci
make -j8
make install

编译完成,初始化、服务配置流程同二进制包。

2.6 fgedu‑net‑cn2 MySQL8.4 YUM/RPM部署要点

rpm -Uvh [https://repo.mysql.com/mysql](https://repo.mysql.com/mysql)84‑lts‑community‑release‑el8‑1.noarch.rpm
yum install -y mysql‑community‑server mysql‑community‑client
systemctl start mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log

2.7 实战:MySQL8.0升级MySQL8.4两种方案

升级测试环境:主机fgedu‑net‑cn1原有MySQL8.0.36实例,升级至8.4.3。

升级前置检查(必须执行)

  1. 完整全库备份,mysqldump逻辑全量备份;
  2. 执行库表一致性检查
/fgedudb/mysql80/bin/mysqlcheck --defaults‑file=/fgedudb/mysql80/my.cnf --check --all‑databases
  1. 核对my.cnf配置,删除8.4已经废弃的参数;
  2. 确认版本满足升级条件:8.0版本≥8.0.22;
  3. 业务停机,停止所有应用访问数据库。

方案A:就地升级(In‑Place,停机时间较短)

⚠生产升级务必先测试环境完整演练。

#1.停止旧8.0实例
systemctl stop mysqld80
#2.备份原有8.0软件目录
mv /fgedudb/mysql80 /fgedudb/mysql80_bak
#3.解压8.4二进制包到原路径
tar -Jxvf mysql‑8.4.3‑linux‑glibc2.28‑x86_64.tar.xz -C /fgedudb --strip‑components=1
mv /fgedudb/mysql‑8.4.3‑linux‑glibc2.28‑x86_64 /fgedudb/mysql80
chown -R mysql:mysql /fgedudb/mysql80
#4.修改my.cnf,适配8.4,增加mysql_native_password=ON按需开启,删除废弃参数
#5.启动实例
systemctl start mysqld80
#6.执行升级字典检查,8.4不再使用mysql_upgrade二进制,内置在服务启动
/fgedudb/mysql80/bin/mysqlcheck --defaults‑file=/fgedudb/mysql80/my.cnf --upgrade --all‑databases
#7.登录验证版本、账号、业务表
mysql -uroot -p -S /fgedudb/mysql80/mysql.sock
select version();

方案B:逻辑迁移升级(风险最低,推荐生产)

  1. 原MySQL8.0实例全库mysqldump导出;
  2. 全新部署一套独立MySQL8.4实例;
  3. 将dump文件导入8.4实例;
  4. 业务切换连接指向新8.4实例;
  5. 旧8.0实例保留一段时间作为回退备份。
#8.0端导出
/fgedudb/mysql80/bin/mysqldump -u root -p --all‑databases --routines --triggers --events > /fgedudb/all_db_dump.sql
#拷贝到8.4主机,导入
/fgedudb/mysql84/bin/mysql -u root -p < /fgedudb/all_db_dump.sql

网上搜索风哥教程可以学习全套数据库教程

2.8 MySQL基础管理与卸载清理

2.8.1 启停命令(二进制systemd)

systemctl start mysqld80
systemctl stop mysqld80
systemctl restart mysqld80
systemctl status mysqld80

2.8.2 卸载二进制部署MySQL

systemctl stop mysqld80
systemctl disable mysqld80
rm -f /etc/systemd/system/mysqld80.service
systemctl daemon‑reload
#备份数据目录之后删除软件目录
mv /fgedudb/mysql80/data /fgedudb/mysql80_data_bak
rm -rf /fgedudb/mysql80

2.8.3 RPM包卸载

systemctl stop mysqld
yum remove mysql‑community‑*
rm -rf /var/lib/mysql

2.9 上线验收检查清单

  1. 操作系统:内核swappiness、max_map_count、limits句柄进程数配置完成;selinux/firewall按业务需求配置;磁盘XFS挂载noatime;
  2. MySQL实例:实例正常启动;error日志无报错;内存参数适配64G硬件;lower_case_table_names符合业务需求;
  3. 账号权限:root本地账号安全加固;业务账号fgedu权限最小化;远程连接可正常访问;
  4. 功能验证:建库建表、DML增删改、存储过程、触发器验证;
  5. 升级后验收:版本号确认;全库表检查无损坏;原有业务账号可正常登录;旧业务应用兼容认证插件;
  6. 备份策略:确认全库备份脚本已经配置,升级场景确认回退备份完整。

2.10 高频故障排查

  1. 实例启动失败:查看error日志log_error路径;my.cnf参数错误、8.4包含废弃参数、目录权限mysql用户不匹配;
  2. 初始化失败:磁盘空间不足、目录权限不对;
  3. 8.4旧应用账号登录失败:mysql_native_password默认关闭,my.cnf添加mysql_native_password=ON重启实例;
  4. 升级启动报错:就地升级没有清理废弃参数;数据文件损坏,需要回退备份;
  5. Too many open files:操作系统limits nofile配置过小;
  6. 表名大小写异常:初始化之后修改lower_case_table_names,直接损坏数据,需要重建实例导入备份。

三、风哥针对本文总结

本套风哥教程完整讲解MySQL8.0、MySQL8.4 LTS两套独立环境部署,分别使用二进制包、源码编译、YUM‑RPM三种安装方式;覆盖Linux数据库服务器系统内核调优、64G内存8CPU规格生产my.cnf配置模板、实例初始化、systemd启停服务、账号权限配置;同时完成8.0升级至8.4的就地升级、逻辑迁移升级两套实操方案;包含实例日常管理、卸载清理、上线验收清单、高频故障排查。

  1. MySQL8.0与MySQL8.4 LTS存在大量InnoDB内核默认参数、认证插件、废弃系统变量差异;禁止5.7直接升级8.4,必须先升级8.0再升级8.4;升级前务必备份全库,并且检查my.cnf配置,删除已经废弃参数,否则实例启动失败。8.4默认关闭mysql_native_password,如果兼容老业务需要在配置文件显式开启。
  2. 二进制通用tar包生产使用最为广泛,目录可以完全自定义;源码编译适合深度定制裁剪组件,编译耗时高;YUM/RPM包部署简单,但目录为系统默认路径。lower_case_table_names仅实例初始化阶段生效,实例运行后修改会造成数据损坏。
  3. Linux数据库服务器部署必须优化swappiness、max_map_count、nofile/nproc资源限制;磁盘优先XFS文件系统,挂载参数noatime,nodiratime,减少元数据IO开销;生产不建议直接完全关闭SELinux,测试环境可关闭简化部署。
  4. MySQL升级分为就地升级、逻辑迁移升级;就地升级停机时间短风险高,生产环境优先逻辑迁移升级方案,新实例导入逻辑备份,业务切换,旧实例保留做回退;升级前执行mysqlcheck做全库表一致性检查。
  5. 64G内存8CPU硬件规格,InnoDB缓冲池设置物理内存50%‑60%(32G),redo日志单文件4G,max_connections设置2000;8.4很多InnoDB参数自动适配硬件,不需要在my.cnf显式书写大量参数。
  6. 部署完成必须查看error错误日志确认实例无异常;上线验收需要验证账号、DML、存储过程触发器全部功能;升级场景要重点验证旧应用账号认证兼容性。
  7. 二进制部署卸载前务必备份data数据目录;RPM卸载注意保护业务数据目录,防止误删除业务数据。

全部Shell、SQL脚本,建议读者在fgedu‑net‑cn1fgedu‑net‑cn2两套独立主机完整复现部署与升级流程,再落地企业MySQL生产部署、版本升级真实项目。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。