在 Ubuntu 系统中使用 SQLAdmin 实现 MySQL 数据库迁移

工具说明与适用范围
- SQLAdmin 是一款面向 MySQL 的第三方 Web 数据库管理工具,常用于数据库备份、恢复、导入、导出等日常运维操作。如果你的迁移目标是 SQL Server,那么 SQLAdmin 并不适合,应优先使用 SSMS、sqlcmd 等官方或常用工具完成数据库迁移。本文将以 MySQL 数据库迁移 为核心,介绍在 Ubuntu 环境下的常见迁移方法与操作步骤。
数据库迁移方案总览
- 方案一(图形化):通过 SQLAdmin 完成“备份/导出”与“恢复/导入”,适合一次性迁移、低频迁移或偏向可视化操作的场景。
- 方案二(命令行):借助 mysqldump 导出数据库,再使用 mysql 命令导入,适合跨服务器迁移、批量迁移以及自动化部署场景。
- 方案三(自动化):将方案二脚本化,并结合 cron 定时任务实现自动备份与定期同步,适合周期性迁移、容灾备份和灾备演练。
方案一:使用 SQLAdmin 进行图形化数据库迁移
- 源库备份
- 登录 SQLAdmin 后,选择需要迁移的目标数据库,点击工具栏中的备份功能,设置备份名称与保存路径,执行导出操作,生成对应的 .sql 数据库备份文件。
- 传输备份文件
- 将导出的 .sql 文件从源服务器传输到目标服务器,例如可通过 scp 命令进行复制:
scp backup.sql user@target_ip:/path/to/destination
- 将导出的 .sql 文件从源服务器传输到目标服务器,例如可通过 scp 命令进行复制:
- 目标库恢复
- 在目标服务器的 SQLAdmin 中,选择已有数据库或新建同名数据库,进入恢复功能,上传之前导出的 .sql 文件并执行导入恢复。
- 适用场景
- 适用于中小规模数据迁移、网络带宽和磁盘 IO 条件较好、且对自动化要求不高的数据库迁移任务。
方案二 使用命令行迁移(推荐)
- 导出源库
- 使用 mysqldump 导出数据库结构和数据内容:
mysqldump -u [用户名] -p [数据库名] > backup.sql
- 使用 mysqldump 导出数据库结构和数据内容:
- 传输到目标
- 使用 scp 命令将数据库备份文件传输到目标主机:
scp backup.sql user@target_ip:/path/to/destination
- 使用 scp 命令将数据库备份文件传输到目标主机:
- 目标库准备
- 在目标 MySQL 服务器中,提前创建同名空数据库(如果尚不存在):
mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS [数据库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;”
- 在目标 MySQL 服务器中,提前创建同名空数据库(如果尚不存在):
- 导入到目标
- 执行数据库恢复与导入操作:
mysql -u [用户名] -p [数据库名] < backup.sql
- 执行数据库恢复与导入操作:
- 验证数据
- 登录目标数据库后进行核验,确认表结构和数据已成功迁移:
mysql -u [用户名] -p -e “USE [数据库名]; SHOW TABLES; SELECT COUNT(*) FROM your_table LIMIT 10;”
- 登录目标数据库后进行核验,确认表结构和数据已成功迁移:
- 适用场景
- 非常适合跨机房、跨地域服务器迁移,也适用于自动化脚本、CI/CD 流程以及大规模数据的分批导入与迁移。
方案三 自动化与注意事项
- 自动化迁移/同步
- 可将数据库导出与文件传输步骤写入 Shell 脚本,并通过 cron 设置定时任务,例如每天 02:00 自动执行 MySQL 备份并同步到目标服务器:
0 2 * * * mysqldump -u root -p[密码] mydb > /backup/mydb_$(date +%F).sql && scp /backup/mydb_$(date +%F).sql user@target_ip:/backup/
- 可将数据库导出与文件传输步骤写入 Shell 脚本,并通过 cron 设置定时任务,例如每天 02:00 自动执行 MySQL 备份并同步到目标服务器:
- 注意事项
- 权限与安全:确保参与迁移的数据库账号具备 SELECT、SHOW VIEW、LOCK TABLES、CREATE、DROP、INSERT 等必要权限;同时,由于备份文件通常包含敏感业务数据,建议在传输和存储时做好加密、权限隔离与访问控制。
- 字符集与排序规则:建议源库与目标库统一使用 utf8mb4 / utf8mb4_unicode_ci,从而降低导入后出现乱码、排序异常或索引兼容问题的风险。
- 版本与特性兼容:在跨大版本迁移场景中(如 5.7 → 8.0),要特别关注 SQL_MODE、系统变量、默认认证方式以及索引限制等差异,必要时可在导出时加入兼容参数,或先进行预迁移测试与评估。
- 大表与锁表:数据库导出期间可能产生锁表影响,建议在业务低峰期进行;对于超大表,可采用分表、分批导出,或使用物理复制、逻辑复制等方案,以尽量减少停机时间和业务影响。
- 验证与回滚:迁移完成后应进行数据一致性校验,例如检查总行数、关键聚合结果以及抽样数据比对,同时保留最近一次可用备份,确保在迁移异常时能够快速回滚。
