Ubuntu 下使用 SQLAdmin 进行数据库迁移
工具与适用范围
- SQLAdmin 是面向 MySQL 的第三方 Web 管理工具,可用于执行备份与恢复等日常管理操作。若你的目标是 SQL Server,SQLAdmin 并不适用,应使用 SSMS、sqlcmd 等工具完成迁移。下文以 MySQL 为对象说明迁移思路与步骤。
迁移方案总览
- 方案一(图形化):在 SQLAdmin 中完成“备份/导出”与“恢复/导入”,适合一次性或低频迁移。
- 方案二(命令行):使用 mysqldump 导出与 mysql 导入,适合跨服务器、自动化与批量迁移。
- 方案三(自动化):将方案二脚本化并加入 cron,适合定期迁移/同步与灾备演练。
方案一 使用 SQLAdmin 图形化迁移
- 源库备份
- 登录 SQLAdmin,选择目标数据库,点击工具栏的备份,配置备份名称与路径,执行导出,生成 .sql 备份文件。
- 传输备份文件
- 将导出的 .sql 文件从源服务器复制到目标服务器(如使用 scp):
scp backup.sql user@target_ip:/path/to/destination
- 目标库恢复
- 在目标服务器的 SQLAdmin 中,选择或创建同名数据库,进入恢复,选择上传的 .sql 文件并执行恢复。
- 适用场景
- 数据量中小、网络带宽与磁盘 IO 充足、对自动化要求不高。
方案二 使用命令行迁移(推荐)
- 导出源库
- 使用 mysqldump 导出结构与数据:
mysqldump -u [用户名] -p [数据库名] > backup.sql
- 传输到目标
- 使用 scp 将备份文件复制到目标主机:
scp backup.sql user@target_ip:/path/to/destination
- 目标库准备
- 在目标库先创建同名空库(如不存在):
mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS [数据库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;”
- 导入到目标
- 执行恢复:
mysql -u [用户名] -p [数据库名] < backup.sql
- 验证数据
- 登录目标库核验:
mysql -u [用户名] -p -e “USE [数据库名]; SHOW TABLES; SELECT COUNT(*) FROM your_table LIMIT 10;”
- 适用场景
- 跨机房/跨地域迁移、自动化脚本、CI/CD 流程、大体量数据分片导入。
方案三 自动化与注意事项
- 自动化迁移/同步
- 将导出与传输写入脚本,并用 cron 定时执行,例如每天 02:00 自动备份并同步:
0 2 * * * mysqldump -u root -p[密码] mydb > /backup/mydb_$(date +%F).sql && scp /backup/mydb_$(date +%F).sql user@target_ip:/backup/
- 注意事项
- 权限与安全:确保用于迁移的账号具备 SELECT、SHOW VIEW、LOCK TABLES、CREATE、DROP、INSERT 等必要权限;备份文件含敏感信息,传输与落盘需加密与访问控制。
- 字符集与排序规则:建议统一为 utf8mb4 / utf8mb4_unicode_ci,避免导入后乱码或索引问题。
- 版本与特性兼容:跨大版本迁移(如 5.7 → 8.0)时,注意 SQL_MODE、系统变量与索引限制差异,必要时在导出时添加兼容参数或先行评估。
- 大表与锁表:导出期间可能加锁,建议在低峰期执行;超大表可分表/分批导出或使用物理/逻辑复制方案降低停机时间。
- 验证与回滚:迁移后做数据一致性校验(行数、关键聚合、抽样对比),并保留最近一次可用备份以便回滚。