• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    MySQL 5.7.44 升级到 MySQL 8.0.35 详细文档

    :2024年10月17日
    DBA小强

    本文主要介绍了MySQL 5.7.44升级到MySQL 8.0.35的详细过程,包括升级背景、环境信息、升级前的准备工作、升级过程和升级后的检查。在升级过程中,建议使用MySQL Shell进行升级前检查,确保数据安全和兼容...

    MySQL 5.7.44 升级到 MySQL 8.0.35 详细文档(使用二进制方式)

    1. 升级背景与环境信息

    • 目标:将 MySQL 5.7.44 升级到 MySQL 8.0.35,确保数据安全、最小化关服务时间,使用二进制安装方式。

    • 服务器环境

    • IP 地址: 192.168.100.120

    • MySQL 基本路径 (basedir): /usr/local/mysql

    • 数据路径 (datadir): /data/mysqldata

    • 配置文件: /etc/my.cnf

    • 操作系统: Red Hat/CentOS 7.x 系列

    • 注意事项

    • MySQL 8.0 对于权限系统、数据格式、SQL 语法等有重大变化。

    • mysql_upgrade 在 MySQL 8.0 中已弃用,应使用 mysqlsh 进行兼容性检查与数据升级。

    2. 升级前的准备工作

    1. 安装必要的工具和依赖

    • 确保以下依赖已经安装:

    • yum install -y gcc libaio perl-Data-Dumper mysql-shell

    1. 下载 MySQL 8.0 二进制安装包

    • 从 MySQL 官方下载 MySQL 8.0.35 的二进制安装包:

    • wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz

    1. 检查现有应用兼容性

    • 检查当前应用对 MySQL 8.0 的兼容性,特别是针对 SQL 语法、权限和数据存储格式的变更。

    1. **配置 MySQL Shell (mysqlsh)**:

    • 安装 MySQL Shell,作为升级检查工具:

    • yum install mysql-shell

    3. 升级前的检查

    3.1 使用 MySQL Shell 进行升级前检查

    使用 mysqlsh 进行数据库的兼容性检查,确保数据库结构、权限等适配 MySQL 8.0。

    1. 连接到 MySQL 5.7

    2. mysqlsh root@localhost:3306 --mysql

    3. 运行升级检查工具

    • 使用 util.checkForServerUpgrade() 检查是否存在兼容性问题:

    • \connect root@localhost:3306

    • util.checkForServerUpgrade({"datadir": "/data/mysqldata", "targetVersion": "8.0.35", "configPath":"/etc/my3410.cnf"})

    1. 检查并修复兼容性问题

    • 解决检查中发现的兼容性问题,包括表结构、字符集、权限系统等。

    3.2 检查权限系统与数据结构

    1. 检查表的引擎与字符集

    • MySQL 8.0 强制使用 utf8mb4 编码,确保所有表和数据库使用正确的字符集:

    • SELECT table_schema, table_name, engine, table_collation

    • FROM information_schema.tables

    • WHERE  engine != 'InnoDB' OR table_collation NOT LIKE 'utf8mb4%';

    1. 导出用户和权限表

    • 确保升级前备份用户和权限,防止权限丢失:

    • mysqldump -u root -p mysql > /backup/mysql_users_backup.sql

    1. 检查大小写,SQL_MODEL:

    • 确保数据库大小写,SQL_MODE一致:

    • show variables like 'sql_mode';

    • show variables like 'lower_case_table_names';

    4. 升级前的备份

    4.1 使用逻辑备份(推荐)

    逻辑备份是最安全的升级方式,避免物理格式的兼容性问题。使用 mysqldump 对所有数据库进行完整备份。

    mysqldump -u root -p --all-databases --routines --triggers --events --single-transaction --flush-logs > /backup/full_backup.sql

    • 备份路径:/backup/full_backup.sql

    • 权限表备份:已包含在 --all-databases 中,但单独备份权限表可增强安全性。

    4.2 验证备份文件

    在备份完成后,确保备份文件无误:

    less /backup/full_backup.sql

    5. 升级步骤明细

    5.1 停止 MySQL 5.7 服务

    首先停止 MySQL 5.7 服务,确保所有数据写入已完成:

    systemctl stop mysqld

    5.2 备份 MySQL 安装目录和数据目录

    为了确保即使升级失败,也可以完整回滚,需要备份当前的安装目录和数据目录。

    mv /usr/local/mysql /usr/local/mysql_backup

    cp -R /data/mysqldata /data/mysqldata_backup

    5.3 解压 MySQL 8.0.35 二进制包

    解压并安装新的 MySQL 8.0.35 二进制包。

    tar -xvf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz

    mv mysql-8.0.35-linux-glibc2.12-x86_64 /usr/local/mysql

    chown -R mysql:mysql /usr/local/mysql

    5.4 保持现有的数据目录

    不要对数据目录进行初始化,直接保留 MySQL 5.7 的数据文件。确保数据目录的权限正确:

    chown -R mysql:mysql /data/mysqldata

    5.5 启动 MySQL 8.0

    启动 MySQL 8.0 服务:

    systemctl start mysqld

    6. 升级后的验证

    6.1 验证 MySQL 版本

    确保 MySQL 已成功升级到 8.0.35:

    mysql --version

    6.2 验证数据完整性

    使用 mysqlcheck 验证数据的完整性:

    mysqlcheck -u root -p --all-databases

    6.3 验证权限系统

    检查用户权限是否正常:

    SELECT  user, host FROM mysql.user;

    7. 升级失败的回退方案

    若升级过程中遇到无法解决的问题,或 MySQL 8.0 无法正常工作,可回滚至 MySQL 5.7。

    1. 停止 MySQL 8.0 服务

    2. systemctl stop mysqld

    3. 恢复 MySQL 5.7 安装目录与数据目录

    4. mv /usr/local/mysql /usr/local/mysql_failed

    5. mv /usr/local/mysql_backup /usr/local/mysql

    6. mv /data/mysqldata /data/mysqldata_failed

    7. mv /data/mysqldata_backup /data/mysqldata

    8. 启动 MySQL 5.7

    9. systemctl start mysqld

    10. 验证 MySQL 5.7 数据与服务:检查是否一切恢复正常。

    8. 总结

    • 逻辑备份优先:在升级过程中始终优先使用逻辑备份,确保数据安全。

    • 兼容性检查:通过 MySQL Shell 的 util.checkForServerUpgrade() 工具提前发现并解决兼容性问题。

    • 无需重新初始化数据:数据目录保留现有结构,避免误操作导致数据丢失。

    • 回滚机制:通过备份原有 MySQL 目录和数据,确保即使升级失败也能快速回滚。

    此文档力求确保升级过程稳健、安全,帮助你顺利完成从 MySQL 5.7.44 到 8.0.35 的升级。

    原谅来源:https://mp.weixin.qq.com/s/lxBiCPHQfaZ7pkVsCpJv4Q

    [编辑:宋聪乔 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: MySQL 5.7.44 升级 MySQL 8.0.35
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证