首页 > 数据库 >【什么是PostgreSQL日志归档】

【什么是PostgreSQL日志归档】

时间:2024-12-03 11:04:03浏览次数:9  
标签:PostgreSQL postgres 归档 日志 data archive

什么是PostgreSQL日志归档

文章目录


前言

PostgreSQL默认采用的是非归档模式,也就是说,在重做日志被写满时,数据库会覆盖之前的重做日志信息,这就会导致重做日志丢失。
为了保证重做日志不会丢失,建议在生产环境开启 PostgreSQL 的归档模式。以保证能完全恢复数据库中的数据。

一、设置 PostgreSQL 的归档模式

1.1 查看当前的归档模式

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

通过上面的命令可以看到,默认处于非归档模式

1.2 查看当前 PostgreSQL 的数据目录

postgres=# show data_directory;
 data_directory 
----------------
 /dbs/pg14/data
(1 row)

1.3 创建日志归档目录

[postgres@localhost ~]$ mkdir -p /home/postgres/training/pgsql/data

1.4 修改配置文件

$PGDATA/postgresql.conf
cat >> test << EOF
archive_mode = on
archive_command = 'DATE=`date +%Y%m%d`; DIR="/home/postgres/training/pgsql/data/archivelog/$DATE";(test -d $DIR || mkdir -p $DIR) && cp %p $DIR/%f'
EOF

1.5 重启 PG 服务检查归档信息

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

归档已开启

1.6 查看预写日志列表

postgres=# select * from pg_ls_waldir() order by modification desc;
           name           |   size   |      modification      
--------------------------+----------+------------------------
 000000010000000000000008 | 16777216 | 2024-12-03 02:11:13+00
 00000001000000000000000C | 16777216 | 2024-11-29 04:39:02+00
 00000001000000000000000B | 16777216 | 2024-11-28 08:56:50+00
 00000001000000000000000A | 16777216 | 2024-11-28 08:55:04+00
 000000010000000000000009 | 16777216 | 2024-11-28 08:31:36+00
(5 rows)

二、管理过期的归档日志文件

启动 PostgreSQL 的日志归档后,会生成大量的归档日志文件。如果没有及时删除,会导致磁盘空间被占满。

2.1 创建shell脚本

PostgreSQL 执行日志文件时会自动调用参数 archive_command 所指定的命令,因此可以在参数 archive_command中传入指定脚本。在生成归档日志前删除过期的归档日志。

创建 Shell 脚本

test -! -f /home/postgres/training/psql/data/archivelog/$1 && cp --preserve=timestamps $2 /home/postgres/training/pgsql/data/archivelog/$1 ; find /data/postgres/archivelog/ -type f -mtime +7 -exec rm -f {} /;

2.2 给脚本添加执行权限

[postgres@localhost ~]$ chmod +x /home/postgres/training/pgsql/data/arch.sh

修改 postgresql.conf 文件archive_command 的参数

archive_command = '/home/postgres/training/pgsql/data/arch.sh %f %p'

2.3 重启服务

重启服务以后,此时的归档日志文件,当时间超过7天,再次生产归档日志文件时会自动删除该归档的日志文件。

标签:PostgreSQL,postgres,归档,日志,data,archive
From: https://blog.csdn.net/weixin_46661978/article/details/144203985

相关文章

  • ultralytics框架yolov8模型训练过程(日志)讲解
    训练命令及提示        执行下面的命令,可以使用yolov8的图像目标检测功能完成训练:yolotrainmodel=yolov8x.ptdata=test.yamlepochs=150imgsz=640命令执行成功后,会先弹出以下的信息:Newhttps://pypi.org/project/ultralytics/8.3.39available......
  • vue main.js 捕获错误日志并上传后端接口示例
    import'./assets/main.css';import'./assets/tailwind.css';import'./components/myts';import{createApp}from'vue';import{createPinia}from'pinia';importAppfrom'./App.vue';import......
  • 记spring boot中基于Logback的常用日志文件配置
    1.默认情况下直接依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>2.创建一个名为:logback-spring.xml的文件3.在yml配置文件中激活注:优先级logback.xml(默认)> logback-sp......
  • postgreSQL安装后启动有The application server could not be contacted问题
      不得不说pgsql是真的麻烦,找问题找了几个小时才解决.直接步入主题吧首先问题如下安装后,双击启动就出现上述问题首先删除路径为c:\Users\your_name\AppData\Roaming\pgAdmin之内的所有文件和文件夹,如果找不到AppData,就把这个点开接着找到你安装pgsql的路径,......
  • 【实战】Oracle基础之重做日志文件(REDO)的6种dump方法
    关于Jady:★工作经验:近20年IT技术服务经验,熟悉业务又深耕技术,为业务加持左能进行IT技术规划,右能处理综合性故障与疑难杂症;★成长历程:网络运维、主机/存储运维、程序/数据库开发、大数据运维、数据库运维、数据管理;★擅长技术:Oracle/MySQL/PGSQL/SQLServer/ClickHouse/Elastic......
  • Java日志手机号脱敏工具类
    背景在开发过程中,很容易将用户敏感信息,例如手机号码、身份证等,打印在日志平台。为了保护用户数据,又不影响日志的打印,需要将日志中的敏感信息进行脱敏。效果没看明白,强烈建议pull项目,执行一下项目中SensitiveUtils#main方法。特性支持多层级Json/对象字段脱敏支持一次......
  • 【PostgreSQL备份恢复一】物理备份与恢复
    【PostgreSQL备份恢复】物理备份与恢复文章目录【PostgreSQL备份恢复】物理备份与恢复前言一、PostgreSQL的物理备份什么?二、冷备份1、准备阶段2、关闭数据库3、备份数据目录4、严重数据5、重启数据库服务总结前言前文介绍了PostgreSQL的逻辑备份与恢复,文本......
  • Spring Boot日志总结
    文章目录1.我们的日志2.日志的作用3.使用日志对象打印日志4.日志框架介绍5.深入理解门面模式(外观模式)6.日志格式的说明7.日志级别7.1日志级别分类7.2配置文件添加日志级别8.日志持久化9.日志文件的拆分9.1官方文档9.2IDEA演示文件分割10.日志格式的配置11.更简单的日......
  • golang: 用协程异步写日志
    一,代码1,全局文件://日志消息结构体typeLogMessagestruct{ Levelstring Messagestring}//通道varLogChanchanLogMessage//日志文件句柄varGlobalLogFile*os.File//异步日志函数funcAsyncLog(logChchanLogMessage){ for{ select{ casems......
  • Spring Boot日志的使用和配置
    基础日志系统有日志门面和日志实现(类似JDBC和MySQL的关系)日志门面用于统一接口,可以切换不同的日志实现SpringBoot中的日志SpringBoot默认使用SLF4j作为日志门面,Logback作为日志实现框架,但同时也支持JavaUtilLogging、Log4J2等其他日志实现。通过默认引入spring-boot......