postgresql自动备份

      本示例的应用场景是,宿主机系统是centos7,安装有docker相关环境,在docker中启动postgresql镜像,数据库文件从宿主机目录映射到docker实例中。自动备份的方案是:在宿主机上采用crontab定时调用脚本执行数据库的备份。

      具体实施部署如下:

一、创建连接postgresql备份表及数据的用户,并赋予只读权限

1. 在宿主机上执行psql连接到docker上的postgresql数据库

 psql -h localhost -p 10000 -U postgres

其中,10030为docker对外暴露的访问postgresql数据库的端口

2. 创建用户dump

create user dump with password 'justfordump';

3. 给用户授权

grant all on database mydatabase to dump;
alter default privileges in schema public grant select on tables to dump;
grant select on all tables in schema public to dump;
grant select on all sequences in schema public to dump;

其中,mydatabase为需要自动备份的数据库名称

4. 连接到mydatabase,给用户授权

\c mydatabase
alter default privileges in schema public grant select on tables to dump;
grant select on all tables in schema public to dump;
grant select on all sequences in schema public to dump;

第一行 \c mydatabase 用于连接到mydatabase数据库,后面两行赋予用户查询表机sequence的权限

 

二、创建备份脚本

1. 创建备份脚本并copy到指定目录本示例存在在 /var/docker_conf/dump下,脚本名称:dump.sh

#!/usr/bin/sh

export PGPASSWORD=justfordump
pg_dump mydatabase -h localhost -p 10000 -U dump  -c | gzip > /var/docker_conf/dump/mydatabase_$(date +%Y%m%d).backup.gz

其中,在脚本中将设置用户dump的访问密码justfordump。

2. 赋予脚本执行权限

chmod +x /var/docker_conf/dump/dump.sh

 

三、在crontab中加入定时任务

1. 创建一个crontab,用crontab -e指令,加入如下行:

00 21 * * * /var/docker_conf/dump/dump.sh

在每天晚上9点执行备份

2. 重启crontab

service crond restart

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值