• PG-配置归档模式


    相关参数

    wal_level

    wal_level决定多少信息写入到 WAL 中

    参数枚举值

    wal_level 参数默认值为 replica ,每个层次包括所有更低层次记录的信息。(级别:minimal<replica<logical)

    • minimal :去掉除从崩溃或者立即关机中进行恢复所需的信息之外的所有记录
    • replica :写入足够的数据以支持WAL归档和复制,包括在后备服务器上运行只读查询。默认值
    • logical :增加支持逻辑解码所需的信息
    • 在 9.6 之前的版本中,该参数允许值archivehot_standby。现在仍然接受这些值,但是它们会被映射到replica

    archive_mode

    控制数据库归档模式:off, on, or always。wal_level被设置为minimal时,archive_mode不能被启用

    • off: 默认值,不开启归档WAL
    • on: 启用归档WAL,通过设置 archive_command 命令将完成的WAL 段发送到归档目录。
    • always: 在普通操作期间,on和always 两种模式没有区别。在always模式下,所有从归档中恢复的或者用流复制传来的文件将被(再次)归档

    archive_command

    调用服务器上本地shell或工具命令,用于归档一个完成的WAL文件。该参数仅在启用了archive_mode时生效,否则它将会被忽略。

    如果archive_mode被启用时,archive_command是一个空字符串(默认),WAL 归档的操作会被临时禁用,但仍会继续累计WAL文件链。

    参数值模式匹配

    • %p:指定的参数字符串值中的任何%p被替换成要被归档的文件的路径名
    • %f:指定的参数字符串值中的任何%f只被文件名替换(路径名是相对于数据目录)

    如果要在命令里嵌入一个真正的%字符,可以使用%%

    archive_cleanup_command

    指定一个shell命令,用于清理不需要的已归档WAL文件。通常使用pg_archivecleanup模块清理过时的已归档文件。

    archive_cleanup_command = 'pg_archivecleanup /mnt/archivedir %r'
    

    开启数据库归档模式

    检查当前配置

    查看pg的数据目录

    SHOW data_directory;
    

    查看pg的归档情况

    show archive_mode;
    

    开启WAL归档

    任何数据的修改首先写入WAL日志,然后才对数据文件进行修改。PostgreSQL在数据集簇目录的$PGDATA/pg_wal/子目录下存储预写式日志(WAL)。

    启用WAL归档,需设置wal_level配置参数为replica或更高(级别:minimal<replica<logical),设置archive_mode为on,并且使用archive_command配置参数指定一个shell命令。在archive_command中,%p会被将要归档的文件路径所替代,而%f只会被文件名所替代(路径名是相对于当前工作目录而言的,即集簇的数据目录)

    创建归档目录

    mkdir -p /ups/data/pgdata/12/arch_wal
    chown postgres:postgres /ups/data/pgdata/12/arch_wal
    

    修改wal_level参数

    # 1.1 vi postgresql.conf
    wal_level = 'replica'
    
    # 1.2 SQL命令方式修改
    psql -c "ALTER SYSTEM SET wal_level = 'replica';"
    

    修改archive_mode参数

    # 1.1 vi postgresql.conf
    archive_mode = 'on'
    
    # 1.2 SQL命令方式修改
    psql -c "ALTER SYSTEM SET archive_mode = 'on';"
    

    修改archive_command参数

    非压缩参数
    # 1.1 vi postgresql.conf
    archive_command = 'cp %p /ups/data/pgdata/12/arch_wal/%f'
    
    # 1.2 SQL命令方式修改
    psql -c "ALTER SYSTEM SET archive_command = 'cp %p /ups/data/pgdata/12/arch_wal/%f';"
    
    lz4 压缩归档参数
    vi $PGDATA/postgresql.conf
    archive_command = 'test ! -f %p && /bin/lz4 -q -z %p /ups/data/pgdata/12/archive_wals/%f.lz4'
    
    # 1.2 SQL命令方式修改
    psql -c "ALTER SYSTEM SET archive_command = 'test ! -f %p && /bin/lz4 -q -z %p /ups/data/pgdata/12/archive_wals/%f.lz4';"
    
    压缩归档wal文件体现图

    image-20210918101156587

    相关参数说明
    • lz4 命令工具用法

    image-20210918100344445

    gzip 压缩的归档日志

    适用压缩归档wal日志文件

    -- 使用gzip来压缩归档文件
    archive_command = 'gzip < %p > /var/lib/pgsql/archive/%f'
    -- 使用gunzip恢复
    restore_command = 'gunzip < /mnt/archivedir/%f > %p'
    

    重启PG服务

    sudo systemctl restart postgresql12 
    sudo systemctl status -l postgresql12 
    

    检查确认

    切换日志
    select pg_switch_wal();
    
    检查归档目录及其归档文件列表
    ls -l /ups/data/pgdata/12/archive_wals/*
    
  • 相关阅读:
    Spring中使用存储过程
    使用mysql-connector-java.jar连接MySql时出现:Error while retrieving metadata for procedure columns: java.sql.SQLException: Parameter/Column name pattern can not be NULL or empty.
    Spring的JDBC示例
    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
    Spring的JDBC框架概述
    数据库中的DDL/DML/DCL解释(转)
    沉默的螺旋--digest
    左边老师长征--性命、生命、使命
    柬埔寨旅游小结
    Spring Security 源码分析(四):Spring Social实现微信社交登录
  • 原文地址:https://www.cnblogs.com/binliubiao/p/15308263.html
Copyright © 2020-2023  润新知