(十二)PostgreSQL开启归档模式

PostgreSQL开启归档模式

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

1 查看数据库是否开启归档

当前数据库未开启归档模式。

[pg16@test ~]$ psql -p 5777
psql (16.2)
Type "help" for help.

postgres=# show archive_mode;
 archive_mode 
--------------
 off
(1 row)

postgres=# 

2 开启归档模式

–创建归档日志目录

[pg16@test ~]$ pwd
/home/pg16
[pg16@test ~]$ mkdir archivelog

–修改postgresql.conf配置文件

vi postgresql.conf
archive_mode = on #开启归档
archive_command ='cp %p /home/pg16/archivelog/%f'

–重启数据库

[pg16@test archivelog]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2024-04-17 06:58:40.949 PDT [91871] LOG:  redirecting log output to logging collector process
2024-04-17 06:58:40.949 PDT [91871] HINT:  Future log output will appear in directory "log".
 done
server started

–确认

[pg16@test archivelog]$ psql -p 5777
psql (16.2)
Type "help" for help.

postgres=# show archive_mode;
 archive_mode 
--------------
 on
(1 row)
postgres=# SELECT pg_switch_wal();
 pg_switch_wal 
---------------
 0/A000078
(1 row)

–查看归档目录,已经有归档日志。目前的配置是最简单的,后期可以进行优化,比如每天的归档日志独立放在一个目录。

[pg16@test archivelog]$ pwd
/home/pg16/archivelog
[pg16@test archivelog]$ ll
total 147456
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000002
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000003
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000004
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000005
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000006
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000007
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000008
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000009
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 00000001000000000000000A

3 归档日志切换频率

PostgreSQL中的归档切换频率主要取决于两个因素:当前的WAL(Write-Ahead Logging)段文件填满的速度,以及是否手动触发WAL切换。WAL归档是PostgreSQL用于保证数据完整性和支持点对点恢复(PITR)的一种机制。它工作的原理是先将数据变更记录在WAL文件中,然后再将这些变更应用到实际的数据库文件上。当WAL文件被写满后,PostgreSQL会切换到新的WAL文件,同时旧的文件可以被归档。

归档切换的条件有两种:

  1. WAL段文件填满:默认情况下,一个WAL段文件的大小是16MB(对于PostgreSQL 10及以前的版本,或者当你在更高版本中未更改配置时)。一旦这个文件被填满,系统会自动切换到新的WAL段,这个过程中旧的WAL文件将被归档(如果已经开启了归档模式并提供了归档命令archive_command)。

  2. 手动触发WAL切换:通过执行SELECT pg_switch_wal();(在PostgreSQL 10以后的版本,旧版本使用SELECT pg_switch_xlog();),管理员可以手动触发WAL的切换。这在某些维护操作或在某些特定的业务逻辑实施前是有用的,如在进行大规模数据导入前做一次切换,以便容易地区分不同操作产生的WAL。

归档切换的频率受多种因素影响,包括:

  • 数据库的写入负载:在写入密集型应用中,WAL文件填满的速度更快,导致归档切换的频率较高。
  • WAL段文件的大小:管理员可以通过调整配置参数wal_segment_size来更改WAL段文件的大小(PostgreSQL 11及以后的版本)。较大的文件可能减少归档的频率,但在故障恢复时可能需要更多的时间和资源。
  • 应用程序的行为:特定类型的操作,如大量的批量插入或更新,会更频繁地填满WAL文件。

频率调整和管理

虽然通常系统默认的配置足够应对大多数情况,但基于特定的业务需求和系统负载,有时需要调整归档策略以达到最佳的性能和数据安全性平衡。这包括调整WAL段文件大小、优化archive_command的性能,或者更智能地触发手动WAL切换。

谨记:心存敬畏,行有所止。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值