数据库教程FGMT31‑Linux平台MySQL9.7安装配置与版本升级
前言
MySQL9.7属于LTS长期支持版本,在InnoDB存储引擎、原子DDL、性能模式、复制框架、认证体系等方面做了大量重构与增强,是面向下一代企业业务的开源关系型数据库,大量互联网、政企、交易类系统逐步开展向该版本迁移工作。风哥教程本文围绕Linux操作系统,完整覆盖MySQL9.7项目落地全流程,包含业务项目环境评估、操作系统底层预调优、软件介质获取、源码编译部署、二进制包部署、YUM与RPM部署、生产规格参数配置、实例初始化、systemd服务管理、远程访问授权、SSL/TLS安全传输、版本升级方案实战、日常运维命令、故障排查、实例完整卸载等完整技术链路。
风哥教程本文硬件基准环境为两台主机fgedu‑net‑cn1、fgedu‑net‑cn2,硬件配置统一为8CPU、64GB物理内存,存储介质采用SSD;全部文件路径统一使用/fgedudb;数据库实例名、业务数据库名、业务账号统一为fgedudb、fgedudb、fgedu;所有my.cnf参数基于64G内存8CPU硬件规格调优,面向OLTP生产业务负载。
风哥教程本文面向DBA、运维工程师、云计算工程师、数据库架构师、大数据工程师,学习完成后,能够独立完成MySQL9.7单机实例部署、基础运维,并且掌握官方支持的升级方案,具备存量MySQL版本迁移至MySQL9.7的实操能力。
本文内容大纲
- Linux平台MySQL9.7项目业务环境介绍
- MySQL9.7操作系统底层运行环境准备
- MySQL9.7介质下载与版本选型说明
- Linux平台源码编译方式部署MySQL9.7实例
- Linux平台二进制包方式部署MySQL9.7实例
- Linux平台YUM、RPM包方式部署MySQL9.7实例
- MySQL9.7生产标准参数文件配置(64G内存8CPU)
- MySQL9.7实例初始化、systemd启停管理
- MySQL9.7安装完成后测试与远程账号授权
- MySQL9.7 SSL/TLS加密连接配置
- MySQL版本升级理论、升级约束与升级前置检查
- MySQL8.4升级MySQL9.7原地升级实战
- MySQL逻辑迁移升级实战方案
- MySQL9.7基础管理命令与常见故障排查
- Linux环境MySQL9.7完整卸载操作
- 风哥针对本文总结
一、Linux平台MySQL9.7项目业务环境介绍
MySQL9.7作为新一代LTS长期支持版本,对比MySQL8.4,在数据字典、原子DDL、不可见主键、复制框架、认证插件、性能诊断组件做了大量变更,同时废弃移除部分历史兼容特性,DBA在项目落地前必须充分评估业务系统适配情况,风哥梳理企业中四类典型落地场景。
第一类场景,全新建设的OLTP业务系统。新建业务没有历史版本兼容包袱,可以直接上线MySQL9.7单机架构,后期扩展主从复制、MGR高可用,主机fgedu‑net‑cn1承担业务读写,fgedu‑net‑cn2承担从库备份、读分担。该场景优先二进制包部署,参数完全自主可控,适合DBA深度管控数据库目录、日志、权限。
第二类场景,存量LTS版本迁移升级项目。官方支持的直接原地升级路径仅为MySQL8.4 LTS升级至MySQL9.7 LTS,不允许跳过LTS版本直接升级;对于MySQL5.7存量业务,不支持直接原地升级,只能分步升级或者采用逻辑导出导入迁移。该场景分为测试验证、预演、业务停机窗口执行升级、业务校验、回滚预案完整流程,升级前必须完成全量备份。
第三类场景,政企、信创合规场景。部分业务需要裁剪数据库组件,关闭不必要的插件,定制编译选项,此时适合源码编译安装MySQL9.7;源码编译可以关闭不需要存储引擎、审计组件,适配安全基线要求,但编译耗时较长,后续版本迭代维护成本偏高。
第四类场景,标准化测试、开发环境。开发测试服务器追求快速部署,不希望投入过多精力维护目录结构,优先选择YUM、RPM包方式部署,包管理器自动处理依赖,快速拉起多套测试实例。
风哥 itpux‑com
需要重点关注MySQL9.7的重要变更:mysql_native_password认证插件已经被移除,所有业务账号必须使用caching_sha2_password认证插件,老旧客户端驱动如果不支持该插件,连接数据库会直接报错;新增自动生成不可见主键GIPK能力;原子DDL覆盖更多操作;部分旧版系统变量被删除,旧版本my.cnf直接复用会造成实例启动失败。不同部署方式没有绝对优劣,生产环境优先二进制包;标准化测试环境优先YUM/RPM;特殊安全裁剪需求才选择源码编译。掌握版本之间的差异、废弃参数、认证体系变化,是部署与升级MySQL9.7的前置基础。
二、MySQL9.7操作系统底层运行环境准备
MySQL9.7对操作系统基础环境、系统依赖包、内核参数、资源限制有严格要求,如果操作系统配置缺失,会出现实例启动失败、性能抖动、文件句柄耗尽、OOM内存溢出等故障,本章节全部操作执行于root账号,演示主机fgedu‑net‑cn1。
2.1 操作系统安全组件配置
测试环境为简化操作关闭SELinux与防火墙;生产环境禁止直接关闭防火墙,应当精细化放行数据库端口,SELinux配置对应的策略规则。
bash
#临时关闭SELinux
setenforce 0
#永久关闭SELinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#防火墙操作,测试环境
systemctl stop firewalld
systemctl disable firewalld
2.2 安装操作系统依赖软件包
MySQL9.7运行与编译需要libaio、numactl、openssl、cmake、ncurses‑devel等基础组件,CentOS8、RHEL8环境执行下面命令安装依赖:
bash
yum install -y libaio libaio-devel numactl perl net-tools wget cmake ncurses-devel bison openssl-devel libtirpc-devel
2.3 创建操作系统mysql运行账号
数据库进程禁止使用root账号运行,创建专用系统账号,不允许登录操作系统shell。
bash
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
id mysql
风哥教程 113257174
2.4 内核参数调优,适配64G内存主机
编辑vim /etc/sysctl.conf写入内核参数,针对数据库业务做内存、虚拟内存、文件句柄、网络调优:
ini
vm.swappiness = 5
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 655350
net.core.somaxconn = 4096
参数配置完成执行生效:
bash
sysctl -p
参数说明:vm.swappiness=5尽量避免操作系统将MySQL内存置换到swap分区,防止数据库性能剧烈抖动;fs.file‑max设置系统全局最大打开文件句柄数;net.core.somaxconn优化TCP连接队列,应对高并发业务连接。
2.5 用户资源限制配置
修改/etc/security/limits.conf,在文件末尾追加进程、文件句柄软硬限制:
ini
mysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 65535
mysql hard nproc 65535
root soft nofile 65535
root hard nofile 65535
修改systemd全局资源配置文件/etc/systemd/system.conf:
ini
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
重载systemd配置:
bash
systemctl daemon-reload
2.6 关闭透明大页THP
透明大页会造成InnoDB内存分配不稳定,数据库服务器必须关闭,执行下面两条命令临时关闭:
bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
将两行写入/etc/rc.local,实现操作系统开机自动关闭透明大页。
2.7 创建完整目录结构,统一路径/fgedudb
风哥教程本文全部目录统一放置于/fgedudb,区分软件目录、数据目录、二进制日志目录、慢日志目录、临时文件目录,目录权限归属操作系统mysql用户。
bash
mkdir -p /fgedudb/mysql‑soft
mkdir -p /fgedudb/fgedudb‑data
mkdir -p /fgedudb/fgedudb‑log/binlog
mkdir -p /fgedudb/fgedudb‑log/slowlog
mkdir -p /fgedudb/fgedudb‑tmp
chown -R mysql:mysql /fgedudb
chmod 750 -R /fgedudb
ls -ld /fgedudb/*
网上搜索风哥教程可以学习全套数据库教程
目录规划说明:/fgedudb/mysql‑soft存放软件介质;/fgedudb/fgedudb‑data存放实例全部数据字典与InnoDB数据文件;binlog二进制日志、慢查询日志单独存放,和数据目录物理隔离;/fgedudb/fgedudb‑tmp存放数据库运行时临时文件;目录权限设置750,阻止普通操作系统用户读取数据库内部文件,提升数据安全。
三、MySQL9.7介质下载与版本选型说明
MySQL9.7社区版介质分为通用Linux二进制tar包、源码压缩包、YUM仓库repo包、全套RPM离线包四类。生产环境必须选择正式GA稳定版本,不使用开发测试版本、beta预览版本。下载介质优先访问MySQL官方归档站点,下载完成校验MD5哈希值,确认介质完整、未被篡改。
3.1 二进制包下载示例
bash
cd /fgedudb/mysql‑soft
wget [https://downloads.mysql.com/archives/get/p/23/file/mysql](https://downloads.mysql.com/archives/get/p/23/file/mysql)‑9.7.0‑linux‑glibc2.28‑x86_64.tar.gz
3.2 源码包下载示例
bash
wget [https://downloads.mysql.com/archives/get/p/23/file/mysql](https://downloads.mysql.com/archives/get/p/23/file/mysql)‑9.7.0.tar.gz
3.3 YUM仓库配置包下载
bash
wget [https://dev.mysql.com/get/mysql97](https://dev.mysql.com/get/mysql97)‑community‑release‑el8‑1.noarch.rpm
版本选型关键要点:
- MySQL9.7只支持RHEL8、Oracle Linux8及以上操作系统,CentOS7已经不在官方支持列表,需要高版本glibc运行环境;
- 二进制包选择
glibc2.28编译版本,适配主流企业Linux发行版; - 升级场景中,必须确认源版本是官方支持升级路径,8.4 LTS可以原地升级9.7 LTS;MySQL5.7不能直接原地升级9.7,需要分步升级或者逻辑迁移;
- 内网离线环境优先下载全套RPM包,外网环境优先YUM仓库方式。
风哥数据库教程 itpux‑com
四、Linux平台源码编译方式部署MySQL9.7实例
源码编译适合安全合规、需要裁剪数据库组件的场景,通过cmake指定编译参数,关闭不需要存储引擎、组件;编译过程消耗CPU、内存资源,8核主机编译耗时约20‑40分钟,生产环境无特殊需求不推荐使用源码部署。本章节主机fgedu‑net‑cn1,实例名称fgedudb。
4.1 解压源码包
bash
cd /fgedudb/mysql‑soft
tar -zxvf mysql‑9.7.0.tar.gz
cd mysql‑9.7.0
4.2 cmake编译参数配置
bash
cmake \
‑DCMAKE_INSTALL_PREFIX=/fgedudb/mysql‑soft/mysql‑src \
‑DMYSQL_DATADIR=/fgedudb/fgedudb‑data \
‑DSYSCONFDIR=/etc \
‑DWITH_INNOBASE_STORAGE_ENGINE=1 \
‑DWITH_MYISAM_STORAGE_ENGINE=1 \
‑DWITH_PARTITION_STORAGE_ENGINE=1 \
‑DWITH_FEDERATED_STORAGE_ENGINE=0 \
‑DWITH_BLACKHOLE_STORAGE_ENGINE=0 \
‑DWITH_SSL=system \
‑DWITH_ZLIB=system \
‑DENABLED_LOCAL_INFILE=1 \
‑DMYSQL_UNIX_ADDR=/fgedudb/fgedudb‑data/mysql.sock \
‑DDEFAULT_CHARSET=utf8mb4 \
‑DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
‑DMYSQL_TCP_PORT=3306 \
‑DWITH_COMPRESSION=ON
编译参数说明:关闭Federated、Blackhole不常用存储引擎,开启InnoDB、MyISAM、分区引擎;使用系统OpenSSL库;默认字符集utf8mb4,排序规则采用utf8mb4_0900_ai_ci,为MySQL9.x推荐排序规则。
4.3 编译与安装
bash
make -j8
make install
‑j8代表调用8颗CPU核心并行编译,编译完成之后,my.cnf配置、实例初始化、systemd服务配置步骤,和二进制包部署流程完全一致,参考本文第五章。源码编译完成的程序安装目录为/fgedudb/mysql‑soft/mysql‑src。
上51CTO搜索风哥可以学习全套数据库教程
五、Linux平台二进制包方式部署MySQL9.7实例
二进制包部署是企业生产环境最主流部署方案,无需编译,解压后直接配置初始化,目录、参数全部自主可控,本章节演示主机fgedu‑net‑cn1,实例fgedudb。
5.1 解压二进制包,创建软链接
bash
cd /fgedudb/mysql‑soft
tar -zxvf mysql‑9.7.0‑linux‑glibc2.28‑x86_64.tar.gz
ln -s mysql‑9.7.0‑linux‑glibc2.28‑x86_64 /fgedudb/mysql‑soft/mysql
ls -l /fgedudb/mysql‑soft
5.2 编写生产规格my‑fgedudb.cnf配置文件(64G内存8CPU)
创建配置文件/etc/my‑fgedudb.cnf,适配64GB内存8CPU OLTP业务,剔除MySQL9.7已经废弃的系统变量。
ini
[mysqld]
user=mysql
port=3306
socket=/fgedudb/fgedudb‑data/mysql.sock
pid‑file=/fgedudb/fgedudb‑data/fgedudb.pid
basedir=/fgedudb/mysql‑soft/mysql
datadir=/fgedudb/fgedudb‑data
tmpdir=/fgedudb/fgedudb‑tmp
#内存调优 64G内存8CPU
innodb_buffer_pool_size=40G
innodb_buffer_pool_instances=8
innodb_log_file_size=4G
innodb_log_buffer_size=256M
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#IO配置
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=2000
innodb_io_capacity_max=4000
#连接相关
max_connections=3000
max_connect_errors=100000
open_files_limit=65535
back_log=1024
max_allowed_packet=1G
#字符集排序规则 MySQL9.7推荐
character‑set‑server=utf8mb4
collation‑server=utf8mb4_0900_ai_ci
#二进制日志
log_bin=/fgedudb/fgedudb‑log/binlog/fgedudb‑bin
binlog_format=ROW
binlog_expire_logs_seconds=604800
server‑id=1
#慢查询日志
slow_query_log=ON
slow_query_log_file=/fgedudb/fgedudb‑log/slowlog/fgedudb‑slow.log
long_query_time=1
log_queries_not_using_indexes=ON
#安全与认证,mysql_native_password已移除
default_authentication_plugin=caching_sha2_password
skip‑name‑resolve=1
explicit_defaults_for_timestamp=1
#性能模式开启
performance_schema=ON
[mysqld_safe]
log‑error=/fgedudb/fgedudb‑data/fgedudb‑error.log
[mysql]
socket=/fgedudb/fgedudb‑data/mysql.sock
default‑character‑set=utf8mb4
关键参数说明:
innodb_buffer_pool_size=40G,64G主机分配40G内存给InnoDB缓冲池,预留内存给操作系统、会话缓冲区、binlog缓存;binlog_expire_logs_seconds=604800,MySQL9.7推荐使用秒数控制binlog过期,替代旧版本expire_logs_days;default_authentication_plugin=caching_sha2_password,MySQL9.7默认认证插件,业务驱动必须支持该认证方式;collation‑server=utf8mb4_0900_ai_ci,MySQL9.x系列标准排序规则。
5.3 执行实例初始化
MySQL9.7使用mysqld --initialize完成初始化,自动生成数据字典,root临时密码输出写入错误日志。
bash
cd /fgedudb/mysql‑soft/mysql
bin/mysqld --defaults‑file=/etc/my‑fgedudb.cnf --initialize --user=mysql
初始化结束,查看root临时密码:
bash
grep 'temporary password' /fgedudb/fgedudb‑data/fgedudb‑error.log
5.4 配置systemd服务单元文件
创建/usr/lib/systemd/system/mysql‑fgedudb.service服务配置:
ini
[Unit]
Description=MySQL fgedudb Database Server 9.7
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/fgedudb/mysql‑soft/mysql/bin/mysqld --defaults‑file=/etc/my‑fgedudb.cnf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on‑failure
LimitNOFILE=65535
LimitNPROC=65535
[Install]
WantedBy=multi‑user.target
重载systemd,启动并设置开机自启:
bash
systemctl daemon‑reload
systemctl start mysql‑fgedudb
systemctl enable mysql‑fgedudb
systemctl status mysql‑fgedudb
5.5 登录实例修改root账号密码
bash
/fgedudb/mysql‑soft/mysql/bin/mysql -S /fgedudb/fgedudb‑data/mysql.sock -uroot -p
输入初始化生成临时密码,登录数据库执行修改密码SQL:
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@Fgedu123';
FLUSH PRIVILEGES;
5.6 配置操作系统环境变量
编辑/etc/profile增加mysql命令路径:
bash
echo "export PATH=/fgedudb/mysql‑soft/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile
mysql -V
六、Linux平台YUM、RPM包方式部署MySQL9.7实例
YUM适合外网环境,自动处理全部软件依赖;RPM适合内网离线环境,提前下载全套rpm包。本章节演示主机fgedu‑net‑cn2。
6.1 YUM仓库方式安装MySQL9.7
bash
cd /fgedudb/mysql‑soft
wget [https://dev.mysql.com/get/mysql97](https://dev.mysql.com/get/mysql97)‑community‑release‑el8‑1.noarch.rpm
rpm -ivh mysql97‑community‑release‑el8‑1.noarch.rpm
确认仓库已经启用mysql97社区版本:
bash
yum repolist enabled | grep mysql
执行安装:
bash
yum install -y mysql‑community‑server mysql‑community‑client mysql‑community‑client‑plugins
启动服务,设置开机自启:
bash
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
YUM安装后错误日志路径/var/log/mysqld.log,读取root临时密码:
bash
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@Fgedu123';
FLUSH PRIVILEGES;
注意:YUM安装默认数据目录
/var/lib/mysql;生产环境需要迁移数据目录至/fgedudb/fgedudb‑data,修改/etc/my.cnf配置,迁移完成修改目录权限为mysql用户。
6.2 RPM离线包安装MySQL9.7
内网服务器无法访问外网yum源,提前下载完整RPM包,严格按照依赖顺序安装:
bash
cd /fgedudb/mysql‑soft
rpm -ivh mysql‑community‑common‑9.7.0‑1.el8.x86_64.rpm
rpm -ivh mysql‑community‑libs‑9.7.0‑1.el8.x86_64.rpm
rpm -ivh mysql‑community‑client‑plugins‑9.7.0‑1.el8.x86_64.rpm
rpm -ivh mysql‑community‑devel‑9.7.0‑1.el8.x86_64.rpm
rpm -ivh mysql‑community‑client‑9.7.0‑1.el8.x86_64.rpm
rpm -ivh mysql‑community‑server‑9.7.0‑1.el8.x86_64.rpm
安装完成之后,服务启停、修改root密码操作,和YUM安装流程完全一致。
七、MySQL9.7安装完成测试与远程账号授权
实例正常启动后,需要创建业务数据库fgedudb、业务账号fgedu,配置远程访问权限,完成业务连接测试。
7.1 本地登录数据库实例
bash
mysql -S /fgedudb/fgedudb‑data/mysql.sock -uroot -p
7.2 创建业务数据库
sql
CREATE DATABASE fgedudb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
SHOW DATABASES;
7.3 创建业务账号fgedu,配置访问权限
MySQL9.7默认认证插件caching_sha2_password,创建账号时不需要额外指定,生产环境禁止使用%通配符,建议限定业务服务器IP地址。
sql
CREATE USER 'fgedu'@'%' IDENTIFIED BY 'Fgedu@123456';
GRANT ALL PRIVILEGES ON fgedudb.* TO 'fgedu'@'%';
FLUSH PRIVILEGES;
SHOW GRANTS FOR fgedu@'%';
7.4 远程TCP连接测试
从另外一台主机发起远程连接,替换数据库主机IP:
bash
mysql -h fgedu‑net‑cn1_IP -ufgedu -pFgedu@123456 -P3306
连接成功执行SQL校验:
sql
SELECT database();
SELECT version();
八、MySQL9.7 SSL/TLS加密连接配置
MySQL9.7默认支持SSL/TLS加密传输,保护客户端与数据库之间网络报文,防止网络抓包窃取账号密码与业务数据,跨公网访问数据库场景必须启用SSL。
8.1 生成SSL证书密钥文件
MySQL9.7内置工具mysql_ssl_rsa_setup一键生成CA证书、服务端证书、客户端证书密钥:
bash
cd /fgedudb/mysql‑soft/mysql
bin/mysql_ssl_rsa_setup --uid=mysql --datadir=/fgedudb/fgedudb‑data
ls /fgedudb/fgedudb‑data/*.pem
8.2 修改my‑fgedudb.cnf开启SSL配置
在[mysqld]段追加下面参数:
ini
ssl_ca=/fgedudb/fgedudb‑data/ca.pem
ssl_cert=/fgedudb/fgedudb‑data/server‑cert.pem
ssl_key=/fgedudb/fgedudb‑data/server‑key.pem
重启实例让SSL配置生效:
bash
systemctl restart mysql‑fgedudb
8.3 查看数据库SSL状态
登录数据库执行SQL:
sql
SHOW VARIABLES LIKE '%ssl%';
have_ssl参数输出YES,代表SSL功能已经成功启用。
8.4 客户端SSL连接测试
bash
mysql -h fgedu‑net‑cn1_IP -ufgedu -p --ssl‑mode=REQUIRED
登录完成执行status命令,输出中出现Cipher in use代表当前会话使用SSL加密通道传输。
九、MySQL版本升级理论、升级约束、升级前置检查
升级是MySQL9.7运维中风险最高的操作,风哥教程本文梳理官方升级约束,升级分为原地升级、逻辑迁移升级、复制拓扑升级三类方案。
原地升级:直接替换数据库二进制程序,复用原有数据目录,数据库自动升级数据字典;官方仅支持MySQL8.4 LTS原地升级MySQL9.7 LTS;MySQL5.7不能直接原地升级9.7,需要分步升级。原地升级需要停机窗口。
逻辑迁移升级:使用mysqldump或者mysqlpump将旧实例全部数据逻辑导出,导入全新MySQL9.7空实例,兼容性最好,不受版本跨代限制,但是会消耗磁盘空间,大库导出导入耗时较长,生产环境高风险业务优先选择逻辑迁移。
复制拓扑升级:搭建8.4到9.7主从复制,业务切流量,实现几乎无停机升级,适合业务不能长时间停机场景。
升级前置强制要求:
- 升级前完成全量数据库备份,包含mysql系统库;
- 使用MySQL Shell的
util.checkForServerUpgrade()工具做升级预检查,捕获不兼容对象、废弃参数、不支持的SQL语法、旧认证账号; - 核对my.cnf配置,删除MySQL9.7已经废弃的系统变量,否则实例无法启动;
- 业务应用做兼容性测试,确认驱动支持
caching_sha2_password认证插件; - 准备完整回滚预案。
执行升级预检查,登录旧实例执行MySQL Shell工具:
bash
mysqlsh -uroot -p
util.checkForServerUpgrade()
工具输出全部风险项,必须全部修复后才可以执行升级操作。
十、MySQL8.4升级MySQL9.7原地升级实战
本场景主机fgedu‑net‑cn1,原有MySQL8.4二进制部署实例,数据目录/fgedudb/fgedudb‑data,执行原地升级至MySQL9.7。
10.1 升级前操作
1.全量备份数据库;
2.执行util.checkForServerUpgrade()预检查,修复全部告警项;
3.停止业务流量,关闭应用;
4.停止原有MySQL8.4实例。
bash
systemctl stop mysql‑fgedudb
systemctl disable mysql‑fgedudb
10.2 替换二进制程序包
bash
cd /fgedudb/mysql‑soft
mv mysql mysql‑84‑old
tar -zxvf mysql‑9.7.0‑linux‑glibc2.28‑x86_64.tar.gz
ln -s mysql‑9.7.0‑linux‑glibc2.28‑x86_64.tar.gz mysql
chown -R mysql:mysql /fgedudb/mysql‑soft/mysql
10.3 修改systemd服务文件指向新的basedir路径,重载systemd
bash
systemctl daemon‑reload
10.4 启动实例,自动执行数据字典升级
MySQL9.7启动时自动执行数据字典升级,不需要旧版本mysql_upgrade工具。
bash
systemctl start mysql‑fgedudb
systemctl status mysql‑fgedudb
观察错误日志/fgedudb/fgedudb‑data/fgedudb‑error.log确认升级无报错。登录实例校验版本:
sql
SELECT version();
10.5 业务校验
业务应用连接数据库,执行业务功能校验;校验存储过程、视图、触发器、复制配置全部正常。
十一、逻辑迁移升级实战方案
逻辑迁移适用于MySQL5.7迁移MySQL9.7,不受原地升级路径限制。
1.部署一套全新MySQL9.7空实例;
2.在源库执行全库逻辑备份:
bash
mysqldump -uroot -p --all‑databases --routines --triggers --events > backup_all.sql
3.将备份文件传输到新服务器;
4.导入MySQL9.7实例:
bash
mysql -uroot -p < backup_all.sql
5.校验账号、存储过程、视图、业务数据完整性;
6.业务切换到新MySQL9.7实例;
7.业务稳定运行一段时间后再下线旧实例。
十二、MySQL9.7基础管理命令与故障排查
12.1 systemd启停管理(二进制部署)
bash
systemctl start mysql‑fgedudb
systemctl stop mysql‑fgedudb
systemctl restart mysql‑fgedudb
systemctl status mysql‑fgedudb
12.2 多种登录方式
bash
#socket本地登录
mysql -S /fgedudb/fgedudb‑data/mysql.sock -uroot -p
#TCP本地回环登录
mysql -h127.0.0.1 -P3306 -uroot -p
#远程TCP登录
mysql -hIP -P3306 -uroot -p
12.3 高频运维SQL
sql
SELECT version();
SELECT user();
SHOW FULL PROCESSLIST;
SHOW VARIABLES LIKE '%max_connections%';
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW ENGINE INNODB STATUS\G
SHOW VARIABLES LIKE '%ssl%';
12.4 常见故障排查思路
1.实例启动失败:优先读取错误日志/fgedudb/fgedudb‑data/fgedudb‑error.log;检查目录权限、my.cnf废弃参数语法错误、磁盘空间满、端口占用;
2.业务无法登录:检查防火墙、账号认证插件,老旧驱动不支持caching_sha2_password会直接连接报错;
3.升级失败:回滚到升级前备份,核对升级预检查输出;
4.连接数打满:通过show full processlist定位慢SQL,优化业务或者调大max_connections。
十三、Linux平台MySQL9.7完整卸载操作
卸载分为二进制包卸载和RPM/YUM包卸载两种场景,卸载前务必备份全部业务数据,rm操作会直接清除数据文件。
13.1 二进制包实例完整卸载
bash
#停止服务
systemctl stop mysql‑fgedudb
systemctl disable mysql‑fgedudb
rm -f /usr/lib/systemd/system/mysql‑fgedudb.service
systemctl daemon‑reload
#删除目录与配置
rm -rf /fgedudb
rm -f /etc/my‑fgedudb.cnf
#修改/etc/profile,删除mysql PATH环境变量
13.2 YUM/RPM安装MySQL9.7卸载
bash
systemctl stop mysqld
systemctl disable mysqld
yum remove -y mysql‑community‑*
rm -rf /var/lib/mysql
rm -f /etc/my.cnf
rm -rf /var/log/mysqld.log
风哥针对本文总结
风哥教程本文完整覆盖Linux平台MySQL9.7项目业务评估、操作系统底层环境调优、介质版本选型、源码编译部署、二进制包部署、YUM与RPM包部署,基于64G内存8CPU硬件规格的my.cnf参数配置、实例初始化、systemd服务管理、业务账号库创建、SSL/TLS加密连接配置;同时重点讲解MySQL升级理论、升级约束、升级前置检查、8.4原地升级9.7实战、跨版本逻辑迁移升级方案,以及日常运维命令、故障排查、完整实例卸载全流程。
MySQL9.7相比历史版本存在大量变更,移除mysql_native_password认证插件、部分旧系统变量废弃,是部署和升级过程中最高发故障点。二进制包是生产环境优先选择,自由度高;YUM/RPM适合标准化测试环境;源码编译只用于特殊安全裁剪场景。升级操作属于高风险运维动作,原地升级严格遵守官方支持升级路径,MySQL5.7不能直接原地升级至MySQL9.7,优先逻辑迁移方案;升级前必须执行升级预检查,完成全量备份,准备完整业务回滚预案。
操作系统内核参数、资源限制、目录权限,是数据库稳定运行的底层根基,大量数据库故障根源来自部署阶段操作系统配置缺失。实例部署完成,不能仅满足服务可以启动,需要完成账号权限最小化、SSL加密、慢查询日志开启、binlog日志自动过期清理等运维安全配置。生产上线前必须搭建完整备份策略,定期验证备份文件可恢复性。掌握本套风哥教程全部实操内容,可以独立完成企业MySQL9.7单机实例部署运维,并且具备存量业务迁移升级的实操能力,为后续主从复制、MGR高可用、性能调优打下坚实基础。