一个 Pg_dump SHELL 脚本

最近有个处于开发阶段的项目需要DBA介入,希望DBA对这个项目的数据库进行备份。要到主机帐号后,先对数据库进行一翻熟悉,发现上面有虽然有9个库,但是数据量都不大,除了一个库有5G左右,其它的都在1G以下,因为目前业务还没完全上线,等以后业务起来后数据量应该会大些, 由于数据库不是很大,并且和项目发员沟通后,只需要一周备一次,于是决定用pg_dump方式备份,以下是详细内容。

备份脚本 dump_db.sh 内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# The folling is database dump shell  
#!/bin/bash
export PGHOME=/usr/local/pgsql
export PGPORT=5432
export PGDATA=/usr/local/pgsql/data
export PATH=$PGHOME/bin:$PATH
CUR_DATE=`date +%Y%m%d`
#Loading config-file
CONFIG_FILE="/appt/pgbackup/db.config" #Set config file
. ${CONFIG_FILE}
#Data directory
SAVE_BASE_DIR="/appt/pgbackup/dump_dir"
DAT_FILE_DIR="${SAVE_BASE_DIR}/${CUR_DATE}"
if [ -d ${DAT_FILE_DIR} ]
then :
else
mkdir -p ${DAT_FILE_DIR}
fi
# The reall backup process !
echo "`date +%F %T` begin backup db "
for db_name in ${db_name[@]}
do
pg_dump -E UTF8 -Fc ${db_name} -U postgres -v > ${DAT_FILE_DIR}/${db_name}_${CUR_DATE}.dmp
done
echo "`date +% F%T` end backup db "

db.config 脚本内容

1
2
3
4
5
6
7
8
9
db_name[1]=db_name1  
db_name[2]=db_name2
db_name[3]=db_name3
db_name[4]=db_name4
db_name[5]=db_name5
db_name[6]=db_name6
db_name[7]=db_name7
db_name[8]=db_name8
db_name[9]=db_name9

将备份脚本写入任务计划

每周三零晨四点备份

1
2
###Backup maopao db every week###  
0 4 * * 3 /appt/pgbackup/dump_db.sh >>/appt/pgbackup/log/dump.err 2>&1

后期

由于没有备份服务器,备份集暂时保存在数据库本机,等有了机器后,需要完善下备份脚本,并且根据需求将备份集清理脚本也加上。

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%