阶段八:MySQL数据迁移实战
学习目标
- [ ] 了解数据迁移基本概念
- [ ] 掌握数据库版本迁移(5.7 => 8.0)
- [ ] 掌握数据库云迁移
- [ ] DTS公网数据数据
- [ ] 同构与异构数据迁移
- [ ] 数据库DBA简历及项目编写
一、数据迁移概述
1、什么是数据迁移
数据迁移(Data Migration) 是指将数据从一个系统、平台、存储介质或数据库迁移到另一个目标环境的过程,迁移过程中需保证数据的完整性、一致性、安全性和可追溯性,以确保业务系统能够在新环境中平稳运行。
在企业数字化转型、系统升级、国产化改造(信创)、云上迁移等场景中,数据迁移是最核心、风险最高的环节之一。
2、数据迁移的主要类型
<sheet sheet-id="KJNkRH" token="V9RlsIXeYhOzbHtBGjZcIouXnmg"></sheet>
3、数据迁移的总体流程
数据迁移通常分为 6 个阶段,每个阶段都有明确目标与关键工具:
<sheet sheet-id="q9vBNh" token="V9RlsIXeYhOzbHtBGjZcIouXnmg"></sheet>
二、数据库版本迁移(5.7=>8.0)
1、升级背景与意义
MySQL 8.0 是 MySQL 官方推出的重大版本更新,相比 MySQL 5.7 在性能、安全性、JSON 支持、事务一致性和复制机制等方面都有显著提升。
<sheet sheet-id="N5h3dj" token="V9RlsIXeYhOzbHtBGjZcIouXnmg"></sheet>
2、升级方式总览
<sheet sheet-id="SQ3sQ2" token="V9RlsIXeYhOzbHtBGjZcIouXnmg"></sheet>
3、推荐升级策略(企业生产环境)
推荐采用「逻辑迁移 + 实时同步 + 校验切换」三阶段方案。
3.1 阶段一:全量逻辑迁移(Full Dump)
- 使用
mysqldump或mydumper从 MySQL5 导出数据;
- 导入 MySQL8 时自动升级元数据结构;
- 确保字符集统一(建议 utf8mb4)。
# 导出
mysqldump -h old数据库地址 -uroot -p --single-transaction --routines --triggers --events --set-gtid-purged=OFF db_itheima > db_itheima.sql
# 导入
mysql -h new数据库地址 -uroot -p db_itheima < db_itheima.sql命令作用:
- 使用
mysql客户端连接数据库并执行 SQL 或客户端命令。
执行结果:
- 成功后客户端会连接目标服务并执行指定操作;失败时检查地址、端口、用户、密码和数据库名称。
关键参数:
注意事项:
**注意事项:**
需要的权限:

https://docs.percona.com/percona-xtrabackup/8.0/privileges.html
backup_admin:备份权限
进入到MySQL终端(先登录):
说明:
在数据库中需要以下权限:
第一步:创建全量备份
解决方案:
方案1:把你的套接字文件创建一个软链接,放置于/var/lib/mysql/mysql.sock文件中(不推荐)注意事项:
第二步:预备阶段,把备份这段时间内产生的日志整合到全量备份中
选择登录/注册菜单:

单击注册按钮:

填写注册账号与密码信息:

输入账号、密码信息:

进入管理控制台:

效果如下图所示:

阿里云充值(可选)
由于需要购买阿里云相关组件,如ECS、RDS、SLB等等,所以我们需要先对账号进行充值操作。如下图所示:

选择充值菜单,进行充值操作。注:首次充值不得少于100元,否则后期有些组件无法购买!!!

领取免费ECS资源
领取地址:https://free.aliyun.com/

选择合适的ECS配置:



设置完成后,点击前往控制台:

远程连接ECS服务器

点击远程连接菜单,如下图所示:

远程连接,选择立即登录

登录后,选择右下角重置密码,如下图所示:

设置root管理账号的密码,如下图所示:

重置成功后,如下图所示:

输入新密码,重新登录,如下图所示:


使用远程连接软件连接ECS
本次案例我们以MobaXterm远程连接为主,首先我们需要获取ECS服务器的公网地址,如下图所示:

在MobaXterm端填写阿里云ECS信息:

输入root管理员账号与密码:

回车,登录Linux操作系统,如下图所示:


安装完成后,效果如下图所示

运行sl命令,查看效果

运行结果:

到此ECS远程连接服务器结束!
mysql_install.sh
#!/bin/bash #1.安装依赖软件 #2.判断是否有压缩包,如果有,则执行解压缩操作 #3.判断系统中是否安装过mariadb软件,如果有对其进行卸载操作 #4.创建mysql系统账号 #5.创建/export/server目录,然后移动mysql压缩包解压后的文件到/export/server目录下 #6.进入mysql目录,对其进行初始化操作 #7.设置ssl加密传输连接 #8.设置my.cnf与mysqld.service文件 [mysqld] port=3306 basedir=/export/server/mysql datadir=/export/server/mysql/data socket=/tmp/mysql.sock character_set_server=utf8 collation-server=utf8_unicode_ci
[Unit] After=network.target
[Service] User=mysql Group=mysql Type=forking
TimeoutSec=600
PIDFile=/export/server/mysql/data/mysqld.pid
Restart=on-failure RestartSec=5
[Install] WantedBy=multi-user.target #9.刷新后台服务,然后启动mysqld #10.重置mysql管理员密码为123456 #11.把mysql的bin目录添加到环境变量中 #12.解决mysql客户端首次无法登录问题 #13.弹出提示,MySQL安装成功
**注意事项:**
注意事项:
说明:
在数据库中需要以下权限:
快速的恢复数据库中的数据
第一次恢复报错
...第五步:恢复数据时,一定要记得更改/export/server/mysql/data目录下的文件拥有者以及所属组权限,否则mysql无法启动
**注意事项:**
记得创建.err日志并设置权限为mysql.mysql(这部分可以忽略)
命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
-p | 核心 | -p 的含义取决于当前命令,不能直接套用 Docker 端口映射解释。 |
注意事项:
[mysqld] port=3306 basedir=/export/server/mysql datadir=/export/server/mysql/data socket=/tmp/mysql.sock character_set_server=utf8 collation-server=utf8_unicode_ci slow_query_log=1 slow_query_log_file=/export/server/mysql/logs/mysql-slow.log long_query_time=1 log_queries_not_using_indexes=0 server-id=10 log_error=/export/server/mysql/logs/error.log log-bin=/export/server/mysql/data/binlog binlog_format=statement default_authentication_plugin=mysql_native_password
**注意事项:**
DTS数据迁移服务

免费试用DTS

进入管理控制台-数据迁移-创建任务:

创建mysql_to_rds任务:



单击测试连接以进行下一步:



单击下一步高级配置:



校检完成后,保存并返回列表

任务运行结果:



**高可用**:所有服务采用高可用架构,存在多个节点,可在任意节点出现故障的情况下,快速将请求或任务切换至正常节点运行。同时,复制、备份及对比等长时间运行的任务支持无损断点续传,一旦任务运行的节点出现异常,可在节点切换后继续传输数据。
命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo | 普通 | 目标 URL https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo,命令会访问这个地址或从这里下载内容。 |
注意事项:
swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
-----------------------------------------------------------------------------------------------
参数说明 --privileged:赋予容器运行和访问的系统权限。
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `>/etc/modules-load.d/ninedata.conf` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
| `>/etc/sysctl.d/99-ninedata.conf` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
| `-d` | 【核心】 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
| `--name` | 【核心】 | 指定容器名称 `ninedata`,后续可以用这个名称执行 ps、logs、exec 等管理命令。 |
| `--cgroupns=host` | 【普通】 | Docker 过滤条件或配置值 `--cgroupns=host`,用于限定查询结果或改变容器运行行为。 |
| `-v` | 【核心】 | 目录挂载:把宿主机目录 `/sys/fs/cgroup` 挂载到容器内目录 `/sys/fs/cgroup:rw`,容器删除后宿主机数据仍可保留。 |
| `/sys/fs/cgroup:/sys/fs/cgroup:rw` | 【普通】 | Docker 镜像引用 `/sys/fs/cgroup:/sys/fs/cgroup:rw`,指定要运行、上传、下载或重新标记的镜像。 |
| `/opt/ninedata:/u01` | 【普通】 | Docker 镜像引用 `/opt/ninedata:/u01`,指定要运行、上传、下载或重新标记的镜像。 |
| `-p` | 【核心】 | 端口映射,格式是 `宿主机端口:容器端口`,把宿主机访问转发到容器端口。 |
**注意事项:**
#!/bin/bash
#1.安装依赖软件
#2.判断是否有压缩包,如果有,则执行解压缩操作
#3.判断系统中是否安装过mariadb软件,如果有对其进行卸载操作
#4.创建mysql系统账号
#5.创建/export/server目录,然后移动mysql压缩包解压后的文件到/export/server目录下
#6.进入mysql目录,对其进行初始化操作
#7.设置ssl加密传输连接
#8.设置my.cnf与mysqld.service文件
[mysqld]
port=3306
basedir=/export/server/mysql
datadir=/export/server/mysql/data
socket=/tmp/mysql.sock
character_set_server=utf8
collation-server=utf8_unicode_ci
[Unit]
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=600
PIDFile=/export/server/mysql/data/mysqld.pid
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
#9.刷新后台服务,然后启动mysqld
#10.重置mysql管理员密码为123456
#11.把mysql的bin目录添加到环境变量中
#12.解决mysql客户端首次无法登录问题
#13.弹出提示,MySQL安装成功注意事项:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | `-p` 的含义取决于当前命令,不能直接套用 Docker 端口映射解释。 |
**注意事项:**


创建高权限账号

创建数据库与普通账号

创建MySQL数据源

创建RDS数据源

创建数据复制


建立映射关系




运行效果:

动态插入数据到MySQL数据库

查看NineData复制任务

验证RDS数据

支持数据库源如下:

工作经历01:
1、负责数据库的日常管理和维护,确保数据库的稳定性和安全性;
4、负责数据库的部署、优化、调试以及故障排查;
5、根据业务及项目需求,进行数据分析及数据汇总统计。
工作经历02:
1、负责公司内部系统日常巡检,确保系统运行正常;
4、实时接收各大水库各指标数据,监测数据变化;
6、运维文档的收集和整理。
工作经历03:
工作经历04:
项目名称:XXX省份周边水库监测平台运维
项目时间:2022.06-2023.04
项目介绍:公司承接了多个省市重点水库监测系统的建设与维护任务,系统汇集来自各地水库的水
据库,作为支撑水资源调度、水质预警、水电调控的核心数据基础。需要监测各大水库各种数据的
变化,同时,随着设备数量增多与数据激增,数据库面临写入压力大、查询缓慢、备份时间长等挑
战,需进行系统化优化与管理。
个人职责:
3、实时接收各大水库各指标数据,监测水库数据变化,特殊时期定时提交数据给相关负责人;
项目时间:2024.06-2025.06
个人职责: