[postgres]启用归档模式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: [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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
打赏
0
0
0
0
27
分享
相关文章
Pgpool-II实现高可用+读写分离+负载均衡(一)---- 规划及安装
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。
PostgreSQL 12: Recovery.conf 文件参数合并到 postgresql.conf
PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用,我们看看手册的说明,如下: 发行说明 Move recovery.
5031 0
CentOS7配置阿里yum源 超详细!!!
CentOS7配置阿里yum源 超详细!!!
30265 2
PostgreSQL 11 新特性解读:分区表支持创建主键、外键、索引
PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文演示这三种场景。
7494 0
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。
【一文搞懂PGSQL】4.逻辑备份和物理备份 pg_dump/ pg_basebackup
本文介绍了PostgreSQL数据库的备份与恢复方法,包括数据和归档日志的备份,以及使用`pg_dump`和`pg_basebackup`工具进行逻辑备份和物理备份的具体操作。通过示例展示了单库和单表的备份与恢复过程,并提供了错误处理方案。此外,还详细描述了如何利用物理备份工具进行数据损坏修复及特定时间点恢复(PITR)的操作步骤,以应对误操作导致的数据丢失问题。
在CentOS 7上安装和使用PostgreSQL的方法
在CentOS 7上安装和使用PostgreSQL的方法
1407 0
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
2480 3
介绍几种 MySQL 官方高可用方案
基于Patroni的PostgreSQL高可用环境部署
在部署PostgreSQL到生产环境中时,选择适合的高可用方案是一项必不可少的工作。本文介绍基于Patroni的PostgreSQL高可用的部署方法,供大家参考。
7486 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问