无网络异地环境下MySQL全库/单表备份与迁移方法咨询
我来给你一步步拆解这个离线迁移MySQL数据的问题,毕竟这种跨无网络环境的备份恢复需求,在运维场景里太常见了~
第一步:在源服务器完成本地备份
不管是全库还是单表,MySQL官方的mysqldump工具都是最靠谱的选择,操作起来也简单:
全库备份
直接导出所有数据库,命令格式如下:
# 建议加上--single-transaction避免锁表(适合InnoDB引擎),--routines --triggers --views导出存储过程、触发器和视图 mysqldump -u [你的MySQL用户名] -p --single-transaction --routines --triggers --views --all-databases > full_backup_$(date +%Y%m%d).sql
执行后会提示你输入MySQL密码,完成后当前目录就会生成带日期的全库备份文件。
单表备份
只导出指定数据库里的某张表,命令是:
mysqldump -u [你的MySQL用户名] -p --single-transaction --routines --triggers [目标数据库名] [目标表名] > table_backup_$(date +%Y%m%d).sql
同样输入密码后就能得到单表的备份文件。
小提醒:如果是MyISAM引擎,建议用
--lock-tables参数代替--single-transaction,保证备份数据的一致性。
第二步:离线传输备份文件到异地计算机
因为两台机器没联网,只能靠物理介质中转:
- 把备份文件复制到U盘、移动硬盘或者光盘这类存储介质上
- 为了防止文件在传输过程中损坏,最好生成校验码验证完整性:
在源服务器上生成校验码:
把备份文件和校验码文件一起拷到异地机器后,执行校验:md5sum full_backup_20240520.sql > backup_checksum.txt
如果输出md5sum -c backup_checksum.txtOK就说明文件没问题。
第三步:在异地计算机创建并恢复数据库
首先得确保异地机器安装了版本兼容的MySQL(尽量和源库大版本一致,比如都是8.0.x,避免恢复时出现兼容性问题),然后按以下步骤操作:
1. 创建空数据库(单表恢复需要这一步,全库恢复可跳过)
登录MySQL控制台:
mysql -u root -p
输入密码后创建目标数据库:
CREATE DATABASE [目标数据库名] CHARACTER SET [源库字符集] COLLATE [源库排序规则];
注意:字符集和排序规则要和源库完全一致,不然会出现乱码!比如源库用的是utf8mb4,这里就别写成utf8。
2. 恢复备份数据
- 全库恢复:直接导入备份文件到MySQL
mysql -u [MySQL用户名] -p < full_backup_20240520.sql - 单表恢复:指定目标数据库导入
mysql -u [MySQL用户名] -p [目标数据库名] < table_backup_20240520.sql
3. 验证恢复结果
登录MySQL,检查数据是否和源库一致:
USE [目标数据库名]; -- 查看表结构 DESC [表名]; -- 统计数据行数,和源库对比 SELECT COUNT(*) FROM [表名];
额外优化建议
如果备份文件很大,可以在备份时直接压缩,节省存储空间和传输时间:
# 备份并压缩 mysqldump ... | gzip > full_backup_20240520.sql.gz # 恢复时解压并导入 gunzip < full_backup_20240520.sql.gz | mysql -u [用户名] -p
内容的提问来源于stack exchange,提问作者Korenron
相关产品推荐
相关产品推荐

