[postgres]启用归档模式

本文涉及的产品
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
PolarDB Agent Express,2核4GB
简介: [postgres]启用归档模式

前言

默认情况下,postgres未开启归档模式。当重做日志被写满时,之前的重做日志信息将被覆盖,这就可能导致重做日志信息的丢失。为了保证所有的重做日志不被覆盖,生产环境下一般启用归档模式。当重做日志被写满,pg先产生归档日志文件以备份重做日志,然后再覆盖重做日志文件。

配置步骤

  1. 在psql中查看当前的归档模式。默认为off,也就是未开启归档模式。
show archive_mode;
  1. 创建归档日志目录。个人习惯在数据目录下创建,可根据实际需求修改。
mkdir -p /home/postgres/apps/pgsql/data/archivelog
  1. 修改postgresql.conf文件
# 开启归档模式
archive_mode = on
# 配置归档命令
archive_command = 'log_dt=$(date +%Y%m%d);log_dir="/home/postgres/apps/pgsql/data/archivelog/${log_dt}";(test -d ${log_dir} || mkdir -p ${log_dir}) && cp %p ${log_dir}/%f'
  1. 重启postgres
pg_ctl restart -D /home/postgres/apps/pgsql/data/
  1. 使用psql登录控制台确认
-- 查看归档模式, 此时应该为on
show archive_mode;
-- 查看预写日志列表
select * from  pg_ls_waldir() order by modification desc;
-- 手动切换日志
checkpoint;  -- 触发一个完全检查点, 以及将内存中的脏数据写入数据文件
select pg_switch_wal();
  1. 查看归档文件
/home/postgres/apps/pgsql/data/archivelog

自动清理归档日志文件的shell脚本

虽然都是写shell脚本,但有两种配置自动执行的方式。一种是写在postgresql.conf中的archive_command中,每次创建归档日志的时候调用。另一种是搭配crontab。crontab方式跟配置archive_command方式差不多,只不过省去传参,直接配置crontab定时删除即可。以下为配置archive_command的步骤。

脚本内容

#!/bin/bash
set -u
log_dt=$(date +%F)
archivelog_dir="/home/postgres/apps/pgsql/data/archivelog/${log_dt}"
if [ ! -d "${archivelog_dir}/$1" ]; then
    mkdir -p "${archivelog_dir}/$1"
fi
cp --preserve=timestamps $2 ${archivelog_dir}/$1
find ${archivelog_dir}/* -type f -mtime +7 | xargs rm -f

修改postgresql.conf文件

archive_command = 'bash /home/postgres/scripts/clean_archivelog.sh %f %p'

参考

  • 赵渝强《PostgreSQL数据库实战派》
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
2544 0
|
存储 关系型数据库 数据库
用Patroni配置PostgreSQL高可用集群
Patroni是Zalando开发的数据库高可用管理软件,用于编排和自动化PostgreSQL集群的管理过程。Patroni 需要一系列其他组件的支持,通过利用第三方分布式一致性软件,组建并实现数据库高可用方案。
用Patroni配置PostgreSQL高可用集群
|
9月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
918 0
|
SQL Oracle 关系型数据库
Oracle的cursor_sharing参数详解
总的来说,cursor_sharing参数是一个非常重要的参数,它可以影响Oracle数据库的性能和稳定性。因此,我们需要根据我们的应用程序的特性和需求,以及我们的性能和稳定性的需求,来选择最合适的值。
530 23
|
11月前
|
固态存储 关系型数据库 数据库
从Explain到执行:手把手优化PostgreSQL慢查询的5个关键步骤
本文深入探讨PostgreSQL查询优化的系统性方法,结合15年数据库优化经验,通过真实生产案例剖析慢查询问题。内容涵盖五大关键步骤:解读EXPLAIN计划、识别性能瓶颈、索引优化策略、查询重写与结构调整以及系统级优化配置。文章详细分析了慢查询对资源、硬件成本及业务的影响,并提供从诊断到根治的全流程解决方案。同时,介绍了索引类型选择、分区表设计、物化视图应用等高级技巧,帮助读者构建持续优化机制,显著提升数据库性能。最终总结出优化大师的思维框架,强调数据驱动决策与预防性优化文化,助力优雅设计取代复杂补救,实现数据库性能质的飞跃。
1840 0
|
关系型数据库 数据库 文件存储
【赵渝强老师】PostgreSQL的表空间
本文介绍了PostgreSQL中的表空间概念及其操作方法,包括查看现有表空间、创建新表空间、在特定表空间上创建表、设置默认表空间以及查询表空间信息等步骤,并提供了相应的命令示例。
712 1
|
SQL 关系型数据库 数据库
【一文搞懂PGSQL】4.逻辑备份和物理备份 pg_dump/ pg_basebackup
本文介绍了PostgreSQL数据库的备份与恢复方法,包括数据和归档日志的备份,以及使用`pg_dump`和`pg_basebackup`工具进行逻辑备份和物理备份的具体操作。通过示例展示了单库和单表的备份与恢复过程,并提供了错误处理方案。此外,还详细描述了如何利用物理备份工具进行数据损坏修复及特定时间点恢复(PITR)的操作步骤,以应对误操作导致的数据丢失问题。
|
缓存 运维 监控
PostgreSQL运维技巧之vacuum调优
PostgreSQL运维技巧之vacuum调优
1740 3
|
关系型数据库 数据库 PostgreSQL
使用pg_resetxlog修复PostgreSQL控制文件的方法
PostgreSQL 控制文件在$PGDATA/global目录下名为pg_control. 控制文件中记录了以下三部分信息 : 1. initdb时生成的静态信息 : pg_control version number: 922 C
12455 0
|
缓存 监控 Linux
在Linux中,如何进行数据库性能调优?
在Linux中,如何进行数据库性能调优?