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

从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[@]}"; do
  echo "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.gz

mysqldump -u root -p --all-databases | gzip > %backup_dir%\%filename%
echo Backup completed: %filename%

Linux Shell脚本restore.sh

#!/bin/bash

backup_dir=/home/user/mysqlbak
filename=all_databases_$(date +%Y-%m-%d).sql.gz

gunzip < $backup_dir/$filename | mysql -u root -p
echo Restore completed: $filename
6.3 使用云存储服务

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


http://www.kler.cn/a/443191.html

相关文章:

  • moviepy 将mp4视频文件提取音频mp3 - python 实现
  • Vue.config.productionTip = false 不起作用的问题及解决
  • 数据结构(Java版)第七期:LinkedList与链表(二)
  • Ubuntu网络连接问题(笔记本更换wifi后,虚拟机连不上网络)
  • 【vue3封装element-plus的反馈组件el-drawer、el-dialog】
  • Python中的可变对象与不可变对象;Python中的六大标准数据类型哪些属于可变对象,哪些属于不可变对象
  • 利用Java爬虫获得京东JD商品SKU信息
  • 论文学习—VAE
  • 皮肤伤口分割数据集labelme格式248张5类别
  • 修改uniapp下拉刷新圆圈颜色
  • Unity UI SafeArea适配
  • vue-element-admin npm install 安装失败,tui-editor更名导致
  • API接口性能优化:提升电商数据处理速度的关键
  • 错误处理中间件 VS 异常过滤器 net Core
  • 深入解析ENAS中的共享权重机制
  • pyparsing restOfLine
  • 基于xss-lab的绕过
  • 华纳云:如何实现tomcat自动化部署?
  • 【Yonghong 企业日常问题03】如何在Linux系统上部署Yonghong DM-Engine v2.3.1(一键安装指南版)
  • 随手记:小程序使用uni.createVideoContext视频无法触发播放
  • Excel+VBA+FFmpeg全能图片处理利器:批量选择、调整尺寸、压缩质量、图片合并,水平垂直合并一键搞定!
  • 【C++】sophus 计算机视觉和机器人技术中的二维和三维李群 (一)
  • WPF MVVM 数据表格DataGrid的表头Header无法进行数据绑定
  • Java全栈项目:校园共享单车管理平台
  • 红狮金业:央行利率决议对贵金属市场的影响
  • A5433 Java+Jsp+Servlet+MySQL+微信小程序+LW+在线点餐小程序的设计与实现 源码 配置 文档