archive_command是用来设置归档行为的命令,重要的库在存储空间允许的情况下会一直开启归档,而有些相对不是很重要的库可能偶尔开启归档,对于第二种情况,应该如何编写 archive_command 命令呢?这里提供两种方式
方法一: 编写 archive_command
这种方法编写两条 archive_command 命令,不归档时启用 /bin/date
,真正需要归档时启用下面这条,如下:
1.1 归档参数
1 |
# - Archiving - |
备注:这种归档的禁用或启用需要通过修改 postgresql.conf 文件来控制,并且修改之后还需要 reload
操作,步骤较烦琐。
方法二: 使用逻辑或运算
看下面这个配置:
2.1 归档参数
1 |
# - Archiving - |
备注:这里使用了逻辑或运算,当文件标识 /archive/pg93/archive_active 存在时,则会运行之后的归档命令。逻辑或命令参考 2.3 的规则。
2.2 查看归档目录
1 |
[pg93@redhatB pg93]$ ll /archive/pg93 |
备注:归档标识文件archive_active 需要手工创建。
2.3 逻辑或,逻辑与运算
- 命令1 && 命令2 命令1执行成功后才会执行命令2
- 命令1 || 命令2 命令1执行失败后才会执行命令2
备注:逻辑运算较第一种方法更为简洁,启用归档时只需 touch 一个标识文件,关闭归档时只需要删除标识文件即可,个人推荐这种方法。如果觉得逻辑运算比较难懂,也可以直接通过 shell 判断语句执行,简单粗暴:
2.4 归档参数
1 |
# - Archiving - |
备注:这种方法脚本量稍多点。
2.5 每天生成一个归档目录
archive_command = 'DIR=/pgarch/arch/`date +%F`; sudo test ! -d $DIR && sudo mkdir $DIR; sudo test ! -f $DIR/%f && sudo cp %p $DIR/%f'
参考
- Linux shell笔记
- archive_command
- PostgreSQL:流复制环境清除 pg_xlog 日志
- How to estimate total number of WAL segments ?
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/238009.html