pgsql的定时备份和数据恢复

pgsql我们用的是11.服务器使用的centos 7的。pgsql的安装,使用在此就不写了。我们来记录整理一下数据的定时备份和数据恢复

数据定时备份(我们用linux自带的定时器来做)

1.创建文件夹 /backup/sql/log/
            /backup/sql/bin
            /backup/sql
  创建文件 /backup/sql/bin/sql_back.sh
  创建文件 /backup/sql/log/back.log
  
 2.chmod +x sql_back.sh
 
 3,#vim /etc/crontab
 
     # Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
# 15 01 *  *  0 root
  0  0  *  *  0 root /backup/sql/bin/sql_back.sh # 每周天的凌晨 0点0分执行
  15 1  *  *  *  root /backup/sql/bin/sql_back.sh   #表示每天1点15分执行备份
    我们也可以根据自己的需求把文件放在daily,week等等的直接每天,每周等 

 4. 重新加载linux的定时任务: service crond restart
 5,如果该脚本是doc 格式,需要转换成unix,用该命令: sed -i "s/\r//" sql_back.sh  doc的转换成unix。否则执行失败

下面提上sql_back.sh文件:

#!/bin/bash
#备份数据库
#pg_dump -h {ip} -O   -p {port} -U {dbUserName}   -d db_informat_account_prd >  db_informat_account_prd.sql {password}

#PGPASSWORD=pssword pg_dump -h ip-p port-U postgres -d dbname1 > /backup/sql/db_back1.sql

IP='127.0.0.1'
PORT=5432
DUMP=pg_dump
OUT_DIR=/backup/sql/

#LINUX_USER=root #系统用户名
DB_NAME='db1'
DB_NAME2='db2'

DB_USER='postgres'
DB_PASS='xxxxxxx'
        
DAYS=30
#DAYS=30代表删除30天前的备份,即只保留最近30天的备份

cd $OUT_DIR

DATE=`date +%Y_%m_%d`
#获取当前系统时间
OUT_SQL=$DB_NAME$DATE.sql"
OUT_SQL2=$DB_NAME2$DATE.sql"

TAR_SQL=$DB_NAME$DATE.tar.gz"
TAR_SQL2=$DB_NAME2$DATE.tar.gz 

 #我们有两个库要备份下来

PGPASSWORD=$DB_PASS $DUMP -h $IP -p $PORT -U $DB_USER -d $DB_NAME > $OUT_SQL
PGPASSWORD=$DB_PASS $DUMP -h $IP -p $PORT -U $DB_USER -d $DB_NAME2 > $OUT_SQL2

tar -zcvf $TAR_SQL $OUT_SQL
tar -zcvf $TAR_SQL2 $OUT_SQL2
#压缩为.tar.gz格式

rm -rf $OUT_SQL
rm -rf $OUT_SQL2

#删除.sql格式的备份文件
#echo "数据库备份任务 - 删除sql文件" $DATE

#chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL#更改备份数据库文件的所有者

find $OUT_DIR -name "db_informat*" -type f -mtime +$DAYS -exec rm {} \;
#echo "数据库备份任务 - 删除七天前的备份文件"$DATE

#删除7天前的备份文件(注意:{} \;中间有空格)
 

数据恢复

 恢复就比较简单,一行命令搞定。主要是将对应的sql文件执行到对应的库

psql -h 127.0.0.1 -U postgres -d db_1 < /backup/sql/.....sql

// 测试一下

tar -xzvf  xxxx.tar.gz

su postgres   切换到postgres 用户
删除数据 db
drop database db1;
创建数据库
create database db1 owner postgres;
授权数据库
grant all on database db1 to postgres;

到pgsql的bin 目录
cd /user/pgsql-11/bin

恢复数据库psql
psql -h 127.0.0.1 -U postgres -d db1 < /backup/sql/.....sql

输入密码就可以了
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值