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

 

  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

hello_junz

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值