MySQL 5.7.35 升级到 8.0.35 — 平滑迁移(数据迁移方式)
基于mysqldump导出5.7数据导入到全新8.0实例实现平滑迁移源实例192.168.195.141MySQL 5.7.35端口3306目标实例192.168.195.141MySQL 8.0.35端口3307→33061. 环境信息项目源实例5.7目标实例8.0IP192.168.195.141192.168.195.141MySQL版本5.7.35二进制包glibc2.128.0.35二进制包glibc2.17端口33063307迁移期间→ 3306切换后server-id110迁移期间→ 1切换后gtid_modeONON2. 升级方式说明平滑迁移数据迁移方式在5.7实例运行的同时新建一个8.0实例通过mysqldump导出5.7的用户数据导入到8.0实例验证无误后切换应用。优点安全可控5.7实例始终可用可随时回退不依赖数据目录兼容性8.0实例是全新初始化的缺点需要双实例并行运行占用更多资源迁移期间5.7的新增数据需要增量同步大数据量时mysqldump导出导入耗时较长3. 前置条件搭建 MySQL 5.7.35 GTID 主从3.1 清理旧环境两台均执行systemctl stop mysqldrm-rf/usr/local/mysqlrm-rf/data/mysql/3306/data/*rm-f/etc/my.cnf unlink /usr/local/mysql2/dev/null3.2 安装 MySQL 5.7.35两台均执行# 创建用户与组groupaddmysqluseradd-gmysql mysql# 解压二进制包cd/usr/local/wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gztarxzf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gzln-smysql-5.7.35-linux-glibc2.12-x86_64 mysql# 验证/usr/local/mysql/bin/mysql--version# /usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.7.35, for linux-glibc2.12 (x86_64) using EditLine wrapper3.3 创建数据目录两台均执行mkdir-p/data/mysql/3306/datachownmysql.mysql /data/mysql/3306/data/3.4 编辑配置文件主库 /etc/my.cnf141[client] socket /data/mysql/3306/data/mysql.sock [mysqld] basedir /usr/local/mysql datadir /data/mysql/3306/data user mysql port 3306 socket /data/mysql/3306/data/mysql.sock log_error /data/mysql/3306/data/mysqld.err log_timestamps system log-bin mysql-bin server-id 1 gtid_mode ON enforce_gtid_consistency ON从库 /etc/my.cnf142[client] socket /data/mysql/3306/data/mysql.sock [mysqld] basedir /usr/local/mysql datadir /data/mysql/3306/data user mysql port 3306 socket /data/mysql/3306/data/mysql.sock log_error /data/mysql/3306/data/mysqld.err log_timestamps system server-id 2 gtid_mode ON enforce_gtid_consistency ON3.5 初始化实例两台均执行/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf--initialize--usermysql获取临时密码greptemporary password/data/mysql/3306/data/mysqld.err# 141: A temporary password is generated for rootlocalhost: 6Y:DTTfAGHAO# 142: A temporary password is generated for rootlocalhost: fDlZ3cDg%uhF3.6 配置 systemd 服务两台均执行创建/etc/systemd/system/mysqld.service[Unit] DescriptionMySQL Server Documentationman:mysqld(8) Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.html Afternetwork.target Aftersyslog.target [Install] WantedBymulti-user.target [Service] Usermysql Groupmysql Typeforking PIDFile/data/mysql/3306/data/mysqld.pid TimeoutSec0 ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf --pid-file/data/mysql/3306/data/mysqld.pid --daemonize $MYSQLD_OPTS EnvironmentFile-/etc/sysconfig/mysql LimitNOFILE 65535 Restarton-failure RestartPreventExitStatus1 PrivateTmpfalse创建/etc/sysconfig/mysqlMYSQLD_OPTS3.7 启动实例并修改密码两台均执行systemctl daemon-reload systemctl start mysqld systemctlenablemysqld /usr/local/mysql/bin/mysql-uroot-S/data/mysql/3306/data/mysql.sock -p临时密码--connect-expired-password-ealter user user() identified by Root123456;3.8 搭建 GTID 主从复制主库141创建复制用户CREATEUSERrepl%IDENTIFIEDBY123456;GRANTREPLICATIONSLAVEON*.*TOrepl%;从库142建立复制CHANGE MASTERTOMASTER_HOST192.168.195.141,MASTER_USERrepl,MASTER_PASSWORD123456,MASTER_AUTO_POSITION1;STARTSLAVE;验证-- 从库执行showslavestatus\G-- Slave_IO_Running: Yes-- Slave_SQL_Running: Yes-- Auto_Position: 13.9 插入测试数据-- 主库141执行CREATEDATABASEtest_gtid;USEtest_gtid;CREATETABLEt1(idINTPRIMARYKEY,nameVARCHAR(20));INSERTINTOt1VALUES(1,gtid_data);SELECT*FROMt1;-- ----------------- | id | name |-- ----------------- | 1 | gtid_data |-- ---------------4. 平滑迁移步骤4.1 下载并解压 MySQL 8.0.35cd/usr/local/wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.35-linux-glibc2.17-x86_64.tar.xztarxJf mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz注意8.0.35使用glibc2.17编译5.7.35使用glibc2.12编译两者可以共存。4.2 创建8.0实例的数据目录mkdir-p/data/mysql/3307/datachownmysql.mysql /data/mysql/3307/data/4.3 编辑8.0实例配置文件创建/data/mysql/3307/my.cnf[client] socket /data/mysql/3307/data/mysql.sock [mysqld] basedir /usr/local/mysql-8.0.35-linux-glibc2.17-x86_64 datadir /data/mysql/3307/data user mysql port 3307 socket /data/mysql/3307/data/mysql.sock log_error /data/mysql/3307/data/mysqld.err log_timestamps system log-bin mysql-bin server-id 10 gtid_mode ON enforce_gtid_consistency ON default_authentication_plugin mysql_native_password关键参数说明port 3307与5.7实例3306并行运行互不冲突server-id 10与5.7实例1不同default_authentication_plugin mysql_native_password8.0新增参数保持与5.7兼容的认证方式。8.0默认使用caching_sha2_password5.7客户端可能无法连接basedir直接指向8.0的安装目录不使用软链接4.4 初始化8.0实例/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysqld --defaults-file/data/mysql/3307/my.cnf--initialize--usermysql获取临时密码greptemporary password/data/mysql/3307/data/mysqld.err# A temporary password is generated for rootlocalhost: nlFtkR/Fy7X34.5 启动8.0实例/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysqld --defaults-file/data/mysql/3307/my.cnf --pid-file/data/mysql/3307/data/mysqld.pid--daemonize修改root密码/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysql-uroot-S/data/mysql/3307/data/mysql.sock -pnlFtkR/Fy7X3--connect-expired-password-ealter user user() identified by Root123456;4.6 导出5.7用户数据重要只导出用户数据库不导出系统库mysql、information_schema、performance_schema、sys。5.7的系统表使用MyISAM引擎8.0的系统表使用InnoDB引擎直接导入会报错。/usr/local/mysql/bin/mysqldump-uroot-S/data/mysql/3306/data/mysql.sock -pRoot123456\--databasestest_gtid\--routines--triggers--events\--set-gtid-purgedOFF\--single-transaction\/tmp/57_user_data.sql参数说明--databases test_gtid只导出用户数据库排除系统库--set-gtid-purgedOFF8.0是全新实例不需要设置GTID_PURGED--single-transactionInnoDB表一致性快照导出不锁表4.7 导入数据到8.0实例# 先清空8.0的GTID信息/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysql-uroot-S/data/mysql/3307/data/mysql.sock -pRoot123456-eRESET MASTER;# 导入数据/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysql-uroot-S/data/mysql/3307/data/mysql.sock -pRoot123456/tmp/57_user_data.sql4.8 验证8.0实例数据-- 版本确认SELECTVERSION();-- 8.0.35-- 数据库列表SHOWDATABASES;-- ---------------------- | Database |-- ---------------------- | information_schema |-- | mysql |-- | performance_schema |-- | sys |-- | test_gtid |-- ---------------------- 数据验证USEtest_gtid;SELECT*FROMt1;-- ----------------- | id | name |-- ----------------- | 1 | gtid_data |-- ----------------- 认证插件确认SHOWVARIABLESLIKEdefault_authentication_plugin;-- mysql_native_password4.9 验证8.0新功能-- 窗口函数8.0新功能SELECTid,name,ROW_NUMBER()OVER(ORDERBYid)ASrnFROMtest_gtid.t1;-- --------------------- | id | name | rn |-- --------------------- | 1 | gtid_data | 1 |-- --------------------- Instant ADD Column8.0新功能不锁表加字段ALTERTABLEt1ADDCOLUMNageINTDEFAULT0,ALGORITHMINSTANT;SELECT*FROMt1;-- ----------------------- | id | name | age |-- ----------------------- | 1 | gtid_data | 0 |-- ----------------------- JSON增强功能CREATETABLEjson_test(idINTPRIMARYKEY,dataJSON);INSERTINTOjson_testVALUES(1,{name:test,value:100});SELECTid,JSON_EXTRACT(data,$.name)ASjnameFROMjson_test;-- -------------- | id | jname |-- -------------- | 1 | test |-- ------------DROPTABLEjson_test;4.10 创建复制用户-- 在8.0实例上创建复制用户为后续切换做准备CREATEUSERrepl%IDENTIFIEDWITHmysql_native_passwordBY123456;GRANTREPLICATIONSLAVEON*.*TOrepl%;4.11 切换应用停5.78.0接管3306端口# 1. 停止5.7实例/usr/local/mysql/bin/mysqladmin-uroot-S/data/mysql/3306/data/mysql.sock -pRoot123456shutdown# 2. 停止8.0实例/usr/local/mysql-8.0.35-linux-glibc2.17-x86_64/bin/mysqladmin-uroot-S/data/mysql/3307/data/mysql.sock -pRoot123456shutdown# 3. 将8.0数据目录移到3306rm-rf/data/mysql/3306/datamv/data/mysql/3307/data /data/mysql/3306/data/mysql/3306/datachown-Rmysql.mysql /data/mysql/3306/data# 4. 更新my.cnf端口改为3306basedir改为软链接cat/etc/my.cnfEOF [client] socket /data/mysql/3306/data/mysql.sock [mysqld] basedir /usr/local/mysql datadir /data/mysql/3306/data user mysql port 3306 socket /data/mysql/3306/data/mysql.sock log_error /data/mysql/3306/data/mysqld.err log_timestamps system log-bin mysql-bin server-id 1 gtid_mode ON enforce_gtid_consistency ON default_authentication_plugin mysql_native_password EOF# 5. 切换软链接到8.0unlink /usr/local/mysqlln-smysql-8.0.35-linux-glibc2.17-x86_64 /usr/local/mysql# 6. 启动8.0systemctl start mysqld4.12 最终验证-- 版本确认SELECTVERSION();-- 8.0.35-- 数据完整性USEtest_gtid;SELECT*FROMt1;-- ----------------------- | id | name | age |-- ----------------------- | 1 | gtid_data | 0 |-- ----------------------- GTID状态SHOWVARIABLESLIKEgtid_mode;-- ON-- 认证插件SHOWVARIABLESLIKEdefault_authentication_plugin;-- mysql_native_password-- 复制用户SELECTuser,host,pluginFROMmysql.userWHEREuserrepl;-- ------------------------------------- | user | host | plugin |-- ------------------------------------- | repl | % | mysql_native_password |-- -----------------------------------再次重启确认systemctl restart mysqld /usr/local/mysql/bin/mysql-uroot-S/data/mysql/3306/data/mysql.sock -pRoot123456-eSELECT VERSION();# 8.0.355. 兼容性注意事项5.1 认证插件MySQL 8.0默认使用caching_sha2_password5.7使用mysql_native_password。升级后需在my.cnf中添加default_authentication_plugin mysql_native_password否则5.7客户端可能无法连接8.0实例。5.2 系统表引擎MySQL 5.7的系统表使用MyISAM引擎8.0使用InnoDB引擎。平滑迁移时不要导出系统库mysql、sys等只导出用户数据库。5.3 8.0新增关键字MySQL 8.0新增了RANK、DENSE_RANK、ROW_NUMBER、GROUPS等关键字。如果5.7中使用了这些名称作为表名或列名升级后需要用反引号引用-- 5.7中可以CREATETABLErank(idINT);-- 8.0中需要反引号CREATETABLErank(idINT);SELECT*FROMrank;5.4 query_cache 相关参数MySQL 8.0移除了查询缓存功能以下参数在8.0中不再支持query_cache_typequery_cache_sizequery_cache_limit如果5.7的my.cnf中有这些参数升级到8.0前必须去掉。5.5 .frm文件MySQL 8.0使用数据字典Data Dictionary替代了5.7的.frm文件。平滑迁移后8.0实例中不会有.frm文件。6. 升级后最终配置文件/etc/my.cnf141升级后[client] socket /data/mysql/3306/data/mysql.sock [mysqld] basedir /usr/local/mysql datadir /data/mysql/3306/data user mysql port 3306 socket /data/mysql/3306/data/mysql.sock log_error /data/mysql/3306/data/mysqld.err log_timestamps system log-bin mysql-bin server-id 1 gtid_mode ON enforce_gtid_consistency ON default_authentication_plugin mysql_native_password软链接/usr/local/mysql - mysql-8.0.35-linux-glibc2.17-x86_647. 连接信息# 升级后连接/usr/local/mysql/bin/mysql-uroot-S/data/mysql/3306/data/mysql.sock -pRoot1234568. 回退方案如果升级后发现问题可以回退到5.7停止8.0实例切换软链接回5.7unlink /usr/local/mysql ln -s mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql恢复5.7的my.cnf去掉default_authentication_plugin恢复5.7的数据目录如果有备份启动5.7实例注意平滑迁移方式下5.7的数据目录在切换前应保留备份这是回退的关键保障。

相关新闻

深度传感器如何与PX4-Avoidance协同工作?Realsense D435实战指南

深度传感器如何与PX4-Avoidance协同工作?Realsense D435实战指南

深度传感器如何与PX4-Avoidance协同工作?Realsense D435实战指南 【免费下载链接】PX4-Avoidance PX4 avoidance ROS node for obstacle detection and avoidance. 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Avoidance PX4-Avoidance是一个基于ROS的…

2026/7/26 21:25:49阅读更多 →
月之暗面Kimi智能助手:长文本大模型的技术架构与商业化挑战

月之暗面Kimi智能助手:长文本大模型的技术架构与商业化挑战

在科技创投领域,一级市场融资与二级市场上市是衡量一家技术驱动型公司发展阶段与价值潜力的关键节点。近期,人工智能公司月之暗面(Moonshot AI)传出以投前500亿美元估值启动Pre-IPO轮融资,并计划最快6个月内赴港上市的…

2026/7/26 21:25:49阅读更多 →
Jellium Desktop窗口透明度设置教程:打造个性化观影体验

Jellium Desktop窗口透明度设置教程:打造个性化观影体验

Jellium Desktop窗口透明度设置教程:打造个性化观影体验 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款非官方的Jellyfin桌面客户端…

2026/7/26 21:25:49阅读更多 →
游戏AI实时世界模型推理延迟实战:Unity与Unreal引擎性能对比与优化指南

游戏AI实时世界模型推理延迟实战:Unity与Unreal引擎性能对比与优化指南

1. 项目概述:当游戏世界开始“思考”最近在圈子里,一个话题的热度正在急剧攀升:游戏智能的“AGI临界点”。这听起来有点科幻,但如果你关注过SITS2026(游戏智能技术研讨会)发布的首份《实时世界模型推理延迟…

2026/7/26 22:46:02阅读更多 →
PPT高级动画实战:复刻Windows 7界面交互完整指南

PPT高级动画实战:复刻Windows 7界面交互完整指南

这次我们来看一个很有意思的技术实践——用PPT复刻Windows 7操作系统界面。这个项目不是真的开发一个操作系统,而是通过PowerPoint的动画和交互功能,高度还原Windows 7的桌面体验,包括开始菜单、任务栏、窗口拖拽、程序打开关闭等核心交互。 …

2026/7/26 22:46:02阅读更多 →
ACB Decrypter:游戏音频解密终极指南,5分钟快速上手

ACB Decrypter:游戏音频解密终极指南,5分钟快速上手

ACB Decrypter:游戏音频解密终极指南,5分钟快速上手 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 还在为游戏音频文件无法播放而烦恼吗?ACB Decrypter 是你的救星!这是一款专…

2026/7/26 22:46:02阅读更多 →
如何为ComfyUI安装终极扩展管理器:ComfyUI-Manager完整指南

如何为ComfyUI安装终极扩展管理器:ComfyUI-Manager完整指南

如何为ComfyUI安装终极扩展管理器:ComfyUI-Manager完整指南 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various …

2026/7/26 22:46:02阅读更多 →
AI模型自动化测试框架对比|pytest/Great Expectations/DeepChecks/LangSmith

AI模型自动化测试框架对比|pytest/Great Expectations/DeepChecks/LangSmith

摘要:AI模型自动化测试框架对比:pytest单元测试、Great Expectations数据验证、DeepChecks模型测试、LangSmith LLM评估四大工具详解。本文从适用场景、核心功能、上手难度、集成能力等维度对比主流自动化测试框架,帮你构建CI/CD自动测试流水线。 自动化测试框架与工具 专栏…

2026/7/26 22:46:02阅读更多 →
AI Agents安全通信:基于密码学签名邮件的自动化系统实现

AI Agents安全通信:基于密码学签名邮件的自动化系统实现

AI Agents与加密签名邮件:构建安全可信的自动化通信系统 在数字化转型浪潮中,自动化智能体(AI Agents)正逐渐成为企业流程优化的核心工具。然而,当多个AI系统需要协同工作时,如何确保通信的 真实性 和 不…

2026/7/26 22:44:02阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →