太强了!MySQL、Oracle、PostgreSQL 数据库备份拿来就用的 Shell 脚本!

备份 数据库 echo 备份文件 脚本
发布于 2026-06-14
5

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

文章主旨:本文系统介绍了MySQL、Oracle和PostgreSQL三种主流数据库在Linux环境下的异地备份脚本编写、定时任务配置及相应恢复方法,强调备份对保障数据安全与业务连续性的核心作用。

关键要点:

  1. MySQL备份使用mysqldump全库导出、压缩、本地保留7天并scp拷贝至远程服务器,需提前配置SSH免密。
  2. Oracle备份通过expdp导出dmp文件,支持本地及远程双份保留,恢复时使用impdp并指定目录对象。
  3. PostgreSQL备份使用pg_dumpall全库导出并gzip压缩,恢复时采用pg_restore命令。
  4. 三种数据库的备份脚本均包含7天(或两周)旧备份自动清理逻辑,并可配置crontab实现定期执行。
  5. 附加一个独立脚本用于按find -mtime +7删除指定目录下的旧sql备份文件。

内容结构:

一、MySQL 数据库异地备份脚本

定义数据库连接信息、本地/远程路径、当前日期及7天前日期变量。使用mkdir -p创建当天目录,mysqldump --all-databases导出全库,tar -zcvf压缩并删除原始sql文件。通过rm -rf删除7天前目录,scp -r传输压缩包至远程备份服务器。需提前配置SSH免密,并查找mysqldump实际路径,最后添加cron定时任务(每周六凌晨3点执行)。

二、MySQL 数据库的恢复

前提:MySQL已正常安装。使用mysql -u [用户名] -p [密码] [数据库名] < [备份文件.sql]命令恢复。若备份为全库,则先创建空数据库再导入。

三、Oracle 数据库异地备份脚本

定义数据库变量(SID、用户、密码、本地IP、远程IP及路径)、当前日期、7天前和14天前日期。本地使用expdp按用户导出dmp文件并gzip压缩。保留本地和远程两星期内的备份,删除更早的旧文件。通过scp传输至远程,并邮件通知失败情况。同样需SSH免密。

四、Oracle 数据库的恢复

前提:Oracle已安装且创建目录/opt/oracle/oraclebak,赋予oracle:dba权限。在数据库中创建目录对象oracle_exp并授权。使用impdp命令指定用户、dmp文件和日志进行恢复。

五、PostgreSQL 数据库异地备份脚本

获取当前日期、时间点及7天前日期,定义本机IP、远程IP、端口、用户、密码及备份目录。使用pg_dumpall导出全库sql文件,然后gzip压缩。删除本地7天前的旧备份,scp传输至远程。最后配置cron每周六凌晨3点执行。

六、PostgreSQL 数据库的恢复

使用pg_restore -U <username> -d <target_db> <backup_file>命令,前提是目标数据库已创建。也支持从sql文件使用psql恢复。

附加:删除7天前备份文件的独立脚本

使用find /path -name "*.sql" -mtime +7 -exec rm -rf {} \;实现。

文章总结:文章提供了可直接投入生产环境使用的数据库备份与恢复脚本方案,覆盖三大主流数据库,实操性强,注重自动化与远程容灾,适合运维人员参考。

杰哥的IT之旅