太强了!MySQL、Oracle、PostgreSQL 数据库备份拿来就用的 Shell 脚本!
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章主旨:本文系统介绍了MySQL、Oracle和PostgreSQL三种主流数据库在Linux环境下的异地备份脚本编写、定时任务配置及相应恢复方法,强调备份对保障数据安全与业务连续性的核心作用。
关键要点:
- MySQL备份使用
mysqldump全库导出、压缩、本地保留7天并scp拷贝至远程服务器,需提前配置SSH免密。 - Oracle备份通过
expdp导出dmp文件,支持本地及远程双份保留,恢复时使用impdp并指定目录对象。 - PostgreSQL备份使用
pg_dumpall全库导出并gzip压缩,恢复时采用pg_restore命令。 - 三种数据库的备份脚本均包含7天(或两周)旧备份自动清理逻辑,并可配置crontab实现定期执行。
- 附加一个独立脚本用于按
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之旅