postgreSQL远程自动备份

2017年7月1日开始,阿里云的快照功能就要开始收费了,于是公司果断决定放弃快照,大家自己做好备份工作... 照理说这事儿轮不到我来做,但是小公司总是会有一人身兼多职的情况的...所以...

备份脚本

其实这事儿还是挺简单的,PG 本身备份起来也非常方便,为了方便自动化,写了个脚本

#数据库密码
export PGPASSWORD=YOUR_PASSWORD
#载入 bash 配置
source /etc/profile && source /root/.bash_profile && source /root/.bashrc
#备份
pg_dump -U USERNAME -h HOST -p PORT -Fc -d DATABASE -f FILE_NAME 

然后把这个脚本添加到备份机的 crontab 就可以了

设置 PostgreSQL 允许被远程访问

由于是要把 dump 备份到另外一台机器上,所以还得修改一下 PG 的设置文件 postgresql.conf 以及 pg_hba.conf,允许远程访问,这两个文件都在 PG 的安装目录下

  1. 修改postgresql.conf PG 默认是只允许本机访问的,所以你的配置文件可能和我一样,里面有这一行
    listen_addresses = 'localhost'
    把这一行修改一下,就你能接受任意 ip 的连接请求了:
    listen_addresses = '*'
  2. 修改pg_hba.conf 上面的配置允许任意地址连接 PG ,但是只是允许连接而已,这还不算完,还需配置服务端允许的认证方式。在 pg_hba.conf 中添加一行配置
    # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD
    host  all  all 0.0.0.0/0 md5
    修改后即可以对任意IP访问进行密码验证。当然我为了安全起见我只允许了备份机访问。

完成上两项配置后执行sudo service postgresql restart重启 PG ,配置就生效了