zoukankan      html  css  js  c++  java
  • PostgreSQL归档日志 手动触发归档 select pg_switch_xlog()

    (转,做记录)

    一 环境信息
    --1.1 PostgreSQL 版本
    9.3.0

    --1.2 postgresql.conf
    wal_level = hot_standby
    archive_mode = on
    archive_command = 'test ! -f /archive/pg93/archive_active || cp %p /archive/pg93/%f'

    --1.3 归档目录
    [pg93@redhatB pg93]$ pwd
    /archive/pg93

    [pg93@redhatB pg93]$ ll
    total 32M
    -rw-------. 1 pg93 pg93 16M Oct 16 11:05 00000001000000000000007A
    -rw-------. 1 pg93 pg93 16M Oct 16 11:07 00000001000000000000007B
    -rw-rw-r--. 1 pg93 pg93 0 Oct 16 11:05 archive_active --归档标识文件
    备注:归档目录为 "/archive/pg93",归档脚本为 archive_command 设置的内容,回到本文的问题:
    什么情况下会触发归档? 经观察只要发生了 WAL 日志切换时,就会触发归档,更进一步分析,
    目前想到了以下三种切换 WAL 日志的方法。

    方法一:手动切换 WAL 日志
    PostgreSQL 提供 pg_switch_xlog() 函数可以手工切换 WAL 日志,如下:

    --手动归档
    [pg93@redhatB ~]$ psql
    shpsql (9.3.0)
    Type "help" for help.

    postgres=# select pg_switch_xlog();
    pg_switch_xlog
    ----------------
    0/87000000
    (1 row)
    备注:执行 pg_switch_xlog() 后,WAL 会切换到新的日志,这时会将老的 WAL日志归档,这里归档到
    /archive/pg93 目录。

    方法二:WAL 日志写满后触发归档
    WAL 日志被写满后会触发归档,文档在说明配置参数 archive_command 时的第一句说就说明了这点,
    WAL 日志文件默认为 16MB,这个值可以在编译 PostgreSQL 时通过参数 "--with-wal-segsize" 更改,编
    译后不能修改。

    方法三:设置 archive_timeout

    另外可以设置archive 超时参数 archive_timeout ,假如设置 archive_timeout=60 ,那么每 60 s ,
    会触发一次 WAL 日志切换,同时触发日志归档,这里有个隐含的假设: 当前 WAL 日志中仍有未归档的 WAL



    自己的实际配置:

      wal_level = archive
      archive_mode = on
      archive_command = 'test ! -f /usr/local/pgsql/archive_xlog/%f && cp %p /usr/local/pgsql/archive_xlog/%f'



  • 相关阅读:
    Dubbo简介---搭建一个最简单的Demo框架
    git学习总结
    FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
    Spring AOP实现Mysql数据库主从切换(一主多从)
    Mybatis中int insertSelective()的相关问题
    主从数据库读写分离知识
    IoC理解
    AOP理解
    MyBatis中mybatis-generator代码生成的一般过程
    fread 快速读入
  • 原文地址:https://www.cnblogs.com/kuang17/p/6994068.html
Copyright © 2011-2022 走看看