当前位置: 首页 > news >正文

从Windows到Linux:跨平台数据库备份与还原

数据库的备份与还原

目录
  1. 引言
  2. 备份
    • 2.1 备份所有数据库
    • 2.2 备份单个数据库
    • 2.3 备份多个指定数据库
  3. 传输备份文件
  4. 还原
    • 4.1 还原所有数据库
    • 4.2 还原单个数据库
    • 4.3 还原多个指定数据库
  5. 注意事项
  6. 拓展

1. 引言

在不同的操作系统间进行数据库迁移时,命令行工具是我们的可靠伙伴。它们高效且直观,特别是在Windows系统下备份MySQL数据库并将其导入Linux系统时。

2. 备份

2.1 备份所有数据库

要将所有数据库打包保存,请在Windows的命令提示符窗口(注意,不是PowerShell)中执行以下命令:

mysql -u root -p --all-databases > D:\mysqlbak\all_databases.sql

贴士: 确保目录存在,例如D:\mysqlbak。如果没有,请先创建:

mkdir D:\mysqlbak
2.2 备份单个数据库

想要某个特定数据库?轻松搞定:

mysqldump -u root -p database_name > D:\mysqlbak\database_name.sql

例如,保存my_database

mysqldump -u root -p my_database > D:\mysqlbak\my_database.sql
2.3 备份多个指定数据库

多数据库选择?没问题,用--databases把它们列出来:

mysqldump -u root -p --databases db1 db2 db3 > D:\mysqlbak\multiple_databases.sql

3. 传输备份文件

使用XFTP或类似工具,让备份文件游走于Windows和Linux之间,确保它们完好无损地到达Linux(如/home/user/mysqlbak/)。

4. 还原

4.1 还原所有数据库

在Linux终端中,前往备份文件目录,敲下命令,静待所有数据库重获新生:

mysql -u root -p < /home/user/mysqlbak/all_databases.sql

没有报错?对,成功了。

4.2 还原单个数据库

如果只是单恋某个数据库:

mysql -u root -p database_name < /home/user/mysqlbak/database_name.sql

比如,还原你的my_database

mysql -u root -p my_database < /home/user/mysqlbak/my_database.sql
4.3 还原多个指定数据库

批量还原不是梦,只需编写简单脚本,如restore.sh

#!/bin/bash# 数据库名单
databases=("db1" "db2" "db3")# 遍历并逐个恢复
for db in "${databases[@]}"; doecho "Restoring $db..."mysql -u root -p "$db" < /home/user/mysqlbak/$db.sql
done

保存并使其可执行:

chmod +x restore.sh
./restore.sh

5. 注意事项

  • 字符编码:备份时选择统一的字符编码,避免乱码横行。
  • 权限管理:确保有权限操作Linux上的备份文件。
  • 防火墙配置:若通过网络传输,确保防火墙为所需端口打开绿灯。
  • 版本兼容性:确保MySQL版本兼容,在不同系统间保持和谐。

6. 拓展

6.1 使用压缩工具优化备份文件

压缩插件如gzip,不仅节约空间,还缩短传输时间:

mysqldump -u root -p --all-databases | gzip > D:\mysqlbak\all_databases.sql.gz

在Linux上解压还原:

gunzip < /home/user/mysqlbak/all_databases.sql.gz | mysql -u root -p
6.2 自动化备份和还原

用批处理和Shell脚本,将这些任务交给机器:

Windows批处理文件backup.bat

@echo off
set backup_dir=D:\mysqlbak
set date=%date:~0,4%-%date:~5,2%-%date:~8,2%
set filename=all_databases_%date%.sql.gzmysqldump -u root -p --all-databases | gzip > %backup_dir%\%filename%
echo Backup completed: %filename%

Linux Shell脚本restore.sh

#!/bin/bashbackup_dir=/home/user/mysqlbak
filename=all_databases_$(date +%Y-%m-%d).sql.gzgunzip < $backup_dir/$filename | mysql -u root -p
echo Restore completed: $filename
6.3 使用云存储服务

将备份文件托管到云端如AWS S3,不仅节省本地空间,还增加存储的可靠性和安全性。

http://www.lryc.cn/news/505901.html

相关文章:

  • upload-labs
  • 【西门子PLC.博途】——面向对象编程及输入输出映射FC块
  • 牛客周赛 Round 72 题解
  • Flux Tools 结构简析
  • 0 前言
  • ARM嵌入式学习--第八天(PWM)
  • 遇到“REMOTE HOST IDENTIFICATION HAS CHANGED!”(远程主机识别已更改)的警告
  • vue3前端组件库的搭建与发布(一)
  • COMSOL快捷键及内置函数
  • HUAWEI-eNSP交换机链路聚合(手动负载分担模式)
  • 番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !
  • 【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数
  • Bootstrap 表格
  • 【论文阅读】Computing the Testing Error without a Testing Set
  • Visio——同一个工程导出的PDF文件大小不一样的原因分析
  • 【ETCD】ETCD 架构揭秘:内部各组件概览
  • Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
  • 音视频学习(二十四):hls协议
  • UniDepth 学习笔记
  • PVE——OpenWRT 硬盘 size单位的调整
  • Android-ImagesPickers 拍照崩溃优化
  • Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
  • Golang学习历程【第一篇 入门】
  • 青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序
  • 【mysql】如何解决主从架构从库延迟问题
  • 前端学习-获取DOM对象(二十一)
  • PCL点云库入门——PCL库中Eigen数学工具库的基本使用(持续更新)
  • CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示
  • 2025山东科技大学考研专业课复习资料一览
  • vue3 v-model实例之二,tab标签页的实现