postgreSQL进程检测与数据库备份脚本
脚本功能: 系统环境:SUSE Linux Server 11.3 X64
#### Check DB Process Script #### #!/bin/sh YEAR=`date +%Y` MON=`date +%m` DAY=`date +%d` HOUR=`date +%H` MIN=`date +%M` echo "$YEAR-$MON-$DAY $HOUR:$MIN" > /opt/pgdb/cron/dbstatus.log servName="postmaster" DBSTAT=`ps -ef|grep $servName|grep -v 'grep'` if [ "$DBSTAT" == "" ]; then echo "testdb DB is down" >> /opt/pgdb/cron/dbstatus.log echo "testdb database is down"|mailx -s "testdb DB down" user01@baidu.com DBstus=`ps -ef|grep $servName|grep -v 'grep'` while [ "$DBstus" == "" ]; do if ["$DBstus" == ""]; then echo "DB starting ..." >> /opt/pgdb/cron/dbstatus.log /etc/init.d/postgresql start DBstus=`ps -ef|grep $servName|grep -v 'grep'` else echo "testdb DB already running." fi done else echo "testdb DB is running." >> /opt/pgdb/cron/dbstatus.log fi #### Backup DB Script #### #!/bin/bash export PATH=$PATH:/usr/local/pgsql/bin DATE=`date +%Y_%m_%d_%H` YESDAY=`date -d "yesterday" +%Y_%m_%d_%H` TWODAGO=`date -d "3 day ago" +%Y_%m_%d_%H` del_file_3ago() { #### delete 3 day ago backup file #### PGHOME="/home/postgres" cd $PGHOME echo "Dir list before delete 3 day ago backup file: " ls -lrt TDAFILE="testdb_"$TWODAGO".bak.tar.gz" echo "Detele 3 Day ago file: "$TDAFILE rm "$TDAFILE" echo "Dir list after delete 3 day ago backup file: " ls -lrt } process_yesterday_bak() { #### Compress and remove yesterday bak file#### PGHOME="/home/postgres" cd $PGHOME COMFILE="testdb_"$YESDAY".bak.tar.gz" YDFILE="testdb_"$YESDAY".bak" echo "tar zcvf $COMFILE $YDFILE"|sh echo "General yesterday tar file: "$COMFILE rm "$YDFILE" echo "delete yesterday file: "$YDFILE echo "Dir list After tar yesterday backup file: " ls -lrt } #### Backup testdb database #### echo $DATE echo "Starting backup database: testdb ...." echo "">/home/postgres/pgbk_fail.txt su - postgres -c "pg_dump testdb > /home/postgres/testdb_$DATE.bak 2>/home/postgres/pgbk_fail.txt" grep failed /home/postgres/pgbk_fail.txt if [ $? -eq 0 ] then echo "Database testdb backup Failed!" else echo "Database testdb backup Successful!" del_file_3ago process_yesterday_bak fi echo "Dir list After backup database testdb: " ls -lrt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |