6. FreeBSD postgresql periodic script
FreeBSD port 会安装了一个 periodic 在 /usr/local/etc/periodic/daily/502.pgsql
这个 periodic script 提供两个服务:
i) 每天定时做 vacuumdb 一次
ii) 每天定时做 pg_dump 一次
想启动这功能 要修改 /etc/periodic.conf
或 /etc/periodic.conf.local 二者选一,内容一样
$vi /etc/periodic.conf
$ exit
档案中增加以下内容
daily_pgsql_backup_enable="YES" # do backup
daily_pgsql_vacuum_enable="YES" # do vacuum
如果你只想做 vacuum 不做 pg_dump,内容如下
档案中增加以下内容
daily_pgsql_backup_enable="NO" # do backup
daily_pgsql_vacuum_enable="YES" # do vacuum
由于 postgresql 已改变为加密登入,使用 periodic script 必需提供 password 给
periodic,否则会执行 vacuumdb pg_dump,失败。方法是建立一个密码 .pgpass
档案把 password 传给 periodic
.pgpass 档案必需放置在 postgresql daemon 的 $HOME 才可以配合 periodic 顺利执行
检察 postgresql 的 $HOME 在那里
$more /etc/passwd | grep PostgreSQL
$ exit
我的查询结果如下
pgsql:*:70:70::0:0:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh
表示 postgresql 的 $HOME 在 /usr/local/pgsql 这里
因此把 .pgpass 放置在 /usr/local/pgsql 成为
/usr/local/pgsql/.pgpass
步骤如下:
$ cd /usr/local/pgsql
$ touch .pgpass
$ chmod 600 .pgpass
$ chown pgsql:pgsql .pgpass
$ exit
修改 .pgpass 内容
$ vi /usr/local/pgsql/.pgpass
$ exit
.pgpass 格式有规范的,官方说明请看:http://www.postgresql.org/docs/8.4/interactive/libpq-pgpass.html
localhost:5432:*:pgsql:你的pgsql密码
最后一步,是修改 /usr/local/etc/periodic/daily/502.pgsql 使它懂得配对
正确的用户名和密码
$ vi /usr/local/etc/periodic/daily/502.pgsql
$ exit
把其中的两行参数修改
< 原本是 >
daily_pgsql_pgdump_args="-b -F c"
< 修改为 >
daily_pgsql_pgdump_args="-h localhost -U pgsql -b -F c"
基本安装完成。