• 售前

  • 售后

热门帖子
入门百科

PostgreSQL归档配置及自动整理归档日志的操作

[复制链接]
小瑞熙 显示全部楼层 发表于 2021-10-26 13:57:42 |阅读模式 打印 上一主题 下一主题
在一般的生产情况中,数据库都需要开启归档模式,那么在pg中怎样开启归档模式呢?
pg中的归档设置涉及几个参数如下:
  1. # - Archiving -
  2. 是否开启归档
  3. #archive_mode = off       # enables archiving; off, on, or always
  4.                 # (change requires restart)
  5. 归档命令,注意 %p %f %% 格式化的含义。
  6. %p 是被归档的redo文件的路径,  
  7. %f 是被归档的redo文档的文件名   
  8. %% 是百分号
  9. #archive_command = ''      # command to use to archive a logfile segment
  10.                 # placeholders: %p = path of file to archive
  11.                 #        %f = file name only
  12.                 # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
  13. 超时强制归档,例:如果10分钟数据库都没有什么活动,一个redo文件没有写完,就不会归档,
  14. 但是我们希望数据库至少10分钟要切换一个日志,则可以使用archive_timeout
  15. #archive_timeout = 0      # force a logfile segment switch after this
  16.                 # number of seconds; 0 disables
复制代码
–归档设置方法为:

1、创建归档目录
  1. pg12@oracle-> mkdir -p $PGDATA/archive/
复制代码
2、编辑归档脚本
该脚本还可以删除7天内的归档日志。
  1. pg12@oracle-> vi $PGDATA/arch.sh
  2. test ! -f $PGDATA/arch/$1 && cp --preserve=timestamps $2 $PGDATA/arch/$1 ; find /arch/ -type f -mtime +7 -exec rm -f {} \;
复制代码
3、设置归档相干参数
  1. wal_level = replica
  2. archive_mode = on
  3. archive_command = 'arch.sh %f %p'
复制代码
设置完之后重启数据库服务即可。
  1. pg12@oracle-> ps -ef|grep archiver
  2. pg12 21338 21331 0 20:20 ? 00:00:00 postgres: archiver
复制代码
补充:postgresql归档失败并在日志文件中存在报错
PG运行过程中出现归档失败的情况,并在日志文件中存在报错。
报错如下:
  1. cp: writing `/arch/20171204/000000010000000000000002': No space left on device
  2. LOG: archive command failed with exit code 1
  3. DETAIL: The failed archive command was: DATE=`date +%Y%m%d`;DIR="/arch/$DATE";(test -d $DIR || mkdir -p $DIR)&& cp pg_xlog/000000010000000000000002 $DIR/000000010000000000000002
  4. cp: writing `/arch/20171204/000000010000000000000002': No space left on device
  5. LOG: archive command failed with exit code 1
  6. DETAIL: The failed archive command was: DATE=`date +%Y%m%d`;DIR="/arch/$DATE";(test -d $DIR || mkdir -p $DIR)&& cp pg_xlog/000000010000000000000002 $DIR/000000010000000000000002
  7. cp: writing `/arch/20171204/000000010000000000000002': No space left on device
  8. LOG: archive command failed with exit code 1
  9. DETAIL: The failed archive command was: DATE=`date +%Y%m%d`;DIR="/arch/$DATE";(test -d $DIR || mkdir -p $DIR)&& cp pg_xlog/000000010000000000000002 $DIR/000000010000000000000002
  10. WARNING: archiving transaction log file "000000010000000000000002" failed too many times, will try again later
复制代码
原因是归档日志地点文件体系/arch空间不足。
通过清理该文件体系下过期的暂时文件,或将归档日志存放至更大的体系空间中。
以上为个人履历,希望能给各人一个参考,也希望各人多多支持草根技术分享。如有错误或未考虑完全的地方,望不吝赐教。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作