postgresql自动备份linux,Linux系统Postgresql数据库自动备份

本文介绍了在Linux系统中使用PostgreSQL数据库时,如何通过pg_dump工具进行SQL转储实现在线备份。该策略适合24小时运行的Web服务,通过Linux的cron服务在凌晨自动执行备份,备份文件存储在独立的备份分区。恢复数据时,只需用pg_restore命令。此外,文章还提及了如何设置cron任务和权限,以确保备份过程的顺利进行。
摘要由CSDN通过智能技术生成

Linux系统Postgresql数据库自动备份

PostgreSQL备份有3种方式:

文件系统级别备份,就是直接copy数据库目录,必须关闭服务,这无法在提供24小时不间断服务的Web上应用。并且产生的文件也不小,因为包括索引等无需备份的信息。

在线备份PITR,太麻烦了。。。

SQL转储,是通过PostgreSQL内置的pg_dump工具,作为一个普通的客户端进行联机备份,产生一个SQL命令的文本文件。由pg_dump创建的备份在内部是一致的,在pg_dump运行的时候对数据库的更新将不会被转储。pg_dump工作的时候并不阻塞其他的对数据库的操作(但会阻塞需要排它锁的操作)。另外pg_dump会忽略索引等信息,最终产生的文件容量有优势。运行在命令行上的pg_dump也有诸多便利性。

再考虑一般Web应用的特性:

用户需要全天的服务,生产服务器尽量不要中断服务

不同时间段的压力不同,服务器在夜间比较轻松

大多数不是关键数据,灾难恢复时可以允许适当的一点偏差

相对企业级系统,需要低成本运作。同时技术调整频繁,不能有固化的软硬件结构

因此我采用的策略是:

生产数据库基于X64或X86,Linux系统

双硬盘,容量大小基本一致,第一块硬盘作为根分区(数据库在其中),第二块作为备份分区

通过pg_dump进行SQL转储备份

通过Linux的cron服务,每日凌晨自动进行数据库备份,产生的备份文件存放于备份分区中

维护人员每周自行下载备份数据,即为低成本的异地备份

例如一台基于RedHat Enterprise Linux 4 AS的机器,跑PostgreSQL 8.1.4。硬盘是2个146GB的SCSI,/分区、/boot、SWAP等都在第一块硬盘。第二块硬盘整个挂载到/backup。

备份采用pg_dumpall。pg_dump进行单个数据库的备份,而pg_dumpall备份一个给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。使用方法如下:

su postgres (需要切换到系统的postgres用户来进行备份)

pg_dumpall > /backup/all_the_data.backup (备份整个数据库集群)

exit

要用cron来自动调度备份,则如下:

vi /etc/crontab

00 3 * * * postgres pg_dumpall > /backup/all_the_data.backup (添加这行,实现每日凌晨3点自动备份,并且是以postgres用户身份来运行的)

chown postgres /backup/all_the_data.backup (需要改变文件的拥有者,以确保postgres用户能写入)

service crond restart (重启crond服务以更新内存中的crontab)

恢复数据:

su postgres

psql -f /backup/all_the_data.back

up postgres

exit

注意此时数据库的postgres用户口令要和备份文件内的一致

一个非常好的技巧,

第二块硬盘划分为/backup分区后,编辑/etc/fstab,取消开机时的自动挂载,即平时无法操作这个硬盘;

编写一个shell脚本,先挂载/backup分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值