postgresql备份数据库-pg_dump在线热备

pg_dump 只备份数据库集群中的某个数据库的数据,它不会导出角色和表空间相关的信息,因为这些信息是整个数据库集群共用的,不属于某个单独的数据库。
pg_dumpall 对集群中的每个数据库调用pg_dump来完成该工作,还会还转储对所有数据库公用的全局对象(pg_dump不保存这些对象)。 目前这包括数据库用户和组、表空间以及适合所有数据库的访问权限等属性。

举例-数据库信息:
数据库名:pgdb01
用户:pgsql/123456

pg_dump备份:
pg_dump -p5432 -d pgdb01 -Upgsql -c -C -f pgdb01-`date +%Y%m%d`.sql

pg_dumpall备份:
pg_dumpall –p 5432 -Upgsql –c -C –f db_bak-`date +%Y%m%d`.sql

说明:
  -d, --dbname=DBNAME      database to dump
  -t, --table=PATTERN          dump the specified table(s) only
  -c, --clean                  clean (drop) database objects before recreating
  -C, --create                 include commands to create database in dump


恢复:
psql -p 5432 -Upgsql –f xxx.sql

定时任务:

[pgsql@localhost bak]$ crontab -l
5 0 * * * $HOME/pgsql9.6.9/bak/pgsql_bak.sh >$HOME/pgsql9.6.9/bak/pgsql_bak.log 2>&1
[pgsql@localhost bak]$ pwd
/home/pgsql/pgsql9.6.9/bak
[pgsql@localhost bak]$ ll
总用量 8
drwxrwxr-x. 2 pgsql pgsql  33 8月  29 19:45 data
-rw-r--r--. 1 pgsql pgsql  88 8月  29 19:45 pgsql_bak.log
-rwxrw-r--. 1 pgsql pgsql 241 8月  29 19:38 pgsql_bak.sh
[pgsql@localhost bak]$ cat pgsql_bak.sh
#!/bin/bash
. $HOME/.bash_profile
echo =================`date +%Y-%m-%d~%H:%M:%S`===start

cd $HOME/pgsql9.6.9/bak
pg_dump -p5432 -d pgdb01 -Upgsql -c -C -f data/pgdb01-`date +%Y%m%d`.sql
pg_dump -p5432 -d kettle -Upgsql -c -C -f data/kettle-`date +%Y%m%d`.sql

#delete bak files 30 days ago
find $HOME/pgsql9.6.9/bak/data -mtime +30 |xargs rm -rf

echo =================`date +%Y-%m-%d~%H:%M:%S`===end
[pgsql@localhost bak]$


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值