在PostgreSQL中不开归档?恭喜你!锅你背定了

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

    • 📣 1.PG归档优势
    • 📣 2.在线日志(pg_wal)
    • 📣 3.如何开归档
    • 📣 4.清理归档
      • ✨ 4.1 手动清理
      • ✨ 4.2 归档策略脚本
    • 📣 5.总结


PostgreSQL归档具有安全、高效、可靠的归档能力,并具有跨平台、语言兼容,和社区支持的优势。

📣 1.PG归档优势

PostgreSQL归档实现了数据库抽离,提供完善的安全性和保护性,并可提供归档数据的只读性,能有效地避免归档数据造成的服务器资源浪费。另外,PostgreSQL归档具有在原始数据库系统的接口上的便捷性及快速性,归档过程不会出现过多处理延迟,在生产环境来说,这个优势是十分可观的。

PostgreSQL归档完全兼容多种操作系统,可以在Windows、Mac、Linux、iPhone等等操作系统上使用,归档后的数据也可以被多种形式的软件读取,使企业更为便利的在网络环境中使用数据

📣 2.在线日志(pg_wal)

在开启归档日志前,我们先聊聊pg_wal日志

事务日志是数据库的重要组成部分,存储了数据库系统中所有更改和操作的历史,以确保数据库不会因为故障(例如掉电或其他导致服务器崩溃的故障)而丢失数据。在PostgreSQL中,事务日志文件称为Write Ahead Log(以下简称WAL),相当于oracle中的redo日志。

##切日志的方式
postgres=# select pg_switch_wal();pg_switch_wal 
---------------0/15679F0
(1 row)##pg_wal日志的位置
jmedb=# select * from pg_ls_waldir();
位置在:cd $PGDATA/pg_walpostgres=# select name,setting from pg_settings where name in ('max_wal_size','min_wal_size');name     | setting
--------------+---------max_wal_size | 1024min_wal_size | 80如果超过了max_wal_size,那么就会删除不需要的wal。如果开启了归档,那么归档成功了,才会被清除,所以这里注意一下,
如果你开启了归档,但是归档命令是失效的,
那么wal目录会一直增长,
不会自动删除WAL,会使得此目录被撑爆。postgres=# show archive_timeout;
在PostgreSQL.conf 文件中的参数archive_timeout,
如果设置archive_timeout=60s,
意思是,wal日志60s切换一次,同时会触发日志归档。
注:尽量不要把archive_timeout设置的很小,
如果很小,会很消耗归档存储,
因为强制归档的日志,即使没有写满,
也会是默认的16M(假设wal日志写满的大小为16M)

📣 3.如何开归档

## 查看是否有归档,默认是关闭的
postgres=# show archive_mode;archive_mode
--------------off
(1 row)

–配置归档
在数据库服务器上创建该路径
mkdir -p /postgresql/archive
chown -R postgres.postgres /postgresql/archive

–添加开启归档参数
cat >> /postgresql/pgdata/postgresql.conf <<“EOF”
wal_level=‘replica’
archive_mode=‘on’
archive_command=‘test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f’
restore_command=‘cp /postgresql/archive/%f %p’

max_wal_senders=10
wal_keep_size=128M
wal_sender_timeout=60s
EOF

–参数说明
wal_level:
默认是replica,这种模式支持复制和wal归档,同时支持备库只读查询。
minimal:除了实例crash恢复需要的记录,其他不记录,
logic:在replica的基础上增加一些信息以支持逻辑解码
archive_command:
当启用archive_mode时,通过设置archive_command将已完成的WAL段发送到归档存储。
除了off,disable,还有两种模式:on,always。
在正常操作期间,两种模式之间没有区别,但是当设置为always的情况下,
WAL archiver在存档恢复或待机模式下也被启用。
在always模式下,从归档还原或流式复制流的所有文件都将被归档(再次)。
archive_mode和archive_command是单独的变量,
因此可以在不更改存档模式的情况下更改archive_command。
此参数只能在服务器启动时设置。
当wal_level设置为minimal时,无法启用archive_mode。
max_wal_senders:
指定wal日志发送进程的最大并发连接数
wal_sender_timeout:
中断那些停止活动超过指定毫秒数的复制连接
–重启PG数据库
pg_ctl restart
pg_ctl status

--切换归档
postgres=# select * from pg_stat_get_archiver();
postgres=# select pg_switch_wal();
SELECT * FROM pg_stat_archiver;

📣 4.清理归档

如果开启了归档,那么归档成功了,才会被清除,所以这里注意一下,如果你开启了归档,但是归档命令是失效的,那么wal目录会一直增长,不会自动删除WAL,会使得此目录被撑爆。

✨ 4.1 手动清理

1)读取控制文件,找到能清理的xlog范围
pg_controldata $PGDATA

表示000000010000000000000009之前的文件可以删除
2)通过pg_archivecleanup清理
pg_archivecleanup -d $PGDATA/pg_wal 000000010000000000000009

✨ 4.2 归档策略脚本

这次分享的策略是使用一个shell脚本来管理归档:
在postgres家目录下,分别创建bin,log目录。bin目录存放此脚本,log则记录执行日志
归档策略是 在/data下的 archivedir中,按日期为名归档日志,保留20天。20天前的自动删除archive_command参数的配置为:
archive_command ='/bin/bash /home/postgres/bin/pg_archive.sh %p %f'--脚本内容
#!/bin/bash
source /home/postgres/.bash_profileDATE=`date +%Y%m%d`
DIR="/data/archivedir/$DATE"
BACK="/data/archivedir/"`date -d '-20 day' +%Y%m%d`
if [ -d "$BACK" ]; thenrm -rf $BACKecho "success rm $BACK" > /home/postgres/logs/pg_archive_logs
elseecho "the old backup file not exists!" > /home/postgres/logs/pg_archive_logs
fi(test -d $DIR || mkdir -p $DIR) && cp $1 $DIR/$2

📣 5.总结

PostgreSQL归档具有安全、高效、可靠的归档能力,并具有跨平台、语言兼容,和社区支持的优势,无论是个人开发用户还是企业用户,可以根据自身的需要,合理利用PostgreSQL来优化业务逻辑,提升数据备份安全性以及归档时间弹性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s中deployment模板

一、清单文件 apiVersion: apps/v1 kind: Deployment metadata:annotations:version: "1.1.6"labels:k8s-app: deployment-nginxname: deployment-nginxnamespace: test spec:minReadySeconds: 30progressDeadlineSeconds: 600replicas: 2revisionHistoryLimit: 5sel…

智能汽车竞赛摄像头处理——摄像头入门(2)

前言 在上一节中&#xff0c;我们学习了如何将总钻风摄像头的图像显示在1.8寸TFT显示屏上&#xff0c;其实我建议大家显示屏还是要选用ips200&#xff0c;像素点多一些&#xff0c;显示的图像更加清晰。 二值化处理 &#xff08;1&#xff09;对原始的灰度图像进行二值化&am…

【操作宝典】IntelliJ IDEA新建maven项目详细教程

目录 &#x1f33c;1. 配置maven环境 &#x1f33c;2. 创建maven项目 &#x1f33c;3. 创建maven项目完整示例 a. 导入spring boot环境 b. 修改maven配置 c. 下载jar包 d. 创建Java类 &#x1f33c;1. 配置maven环境 【安装指南】maven下载、安装与配置详细教程-CSDN博客…

反物质(anti matter)和湮灭反应(Annihilation)浅读

反物质 反物质是正常物质的反状态。当正反物质相遇时&#xff0c;双方就会相互湮灭抵消&#xff0c;发生爆炸并产生巨大能量。 概念 正电子、负质子都是反粒子&#xff0c;它们跟通常所说的电子、质子相比较&#xff0c;电量相等但电性相反。科学家设想在宇宙中可能存在完全由…

【GitHub项目推荐--一个 C++ 实现快速存储的库】【转载】

一个提供可嵌入、持久键值存储以实现快速存储的库。 github地址 https://github.com/facebook/rocksdb 国内镜像 http://www.gitpp.com/ag/rocksdb RocksDB 是一个开源的嵌入式键值存储库&#xff0c;由 Facebook 开发&#xff0c;用于处理大量的数据&#xff0c;特别适合于…

【Eclipse插件开发】2运行时环境Runtime总览-【中篇】

系列文章目录 文章目录 系列文章目录三、并发基础架构并发基础运行作业Job常用作业操作作业的状态作业改变监听器作业管理器工作族关闭前完成作业3.1 报告进度进度报告简述进度监视器和UI系统作业用户作业进度组3.2 作业调度

sql注入绕过原理

了解SQL注入攻击的绕过技术对于加强网络安全具有重要意义。以下是对常见的绕过技术的整理,以及如何防御这些攻击策略。 1. 大小写绕过 原理:如果过滤机制仅识别特定大小写的关键字,攻击者可以通过改变关键字的大小写来尝试绕过过滤。 实验示例: SELECT * FROM users oR…

2024牛客寒假算法基础集训营1

H&#xff1a;01背包&#xff0c;但是bit 这题一看数据范围很大&#xff0c;重量和价值都是1e8级别的&#xff0c;当时还在想是不是背包&#xff0c;原来就是位运算 具体来说&#xff0c;我们枚举m的每一位为1的1&#xff0c;强制这一位为0&#xff0c;这样m被分为前后两部分…

力扣202-快乐数

快乐数 题目链接 解题思路&#xff1a; 两个指针&#xff0c;一快一慢&#xff0c;如果相遇&#xff0c;就会生成环如果环内元素为1,那么就可以返回 class Solution { public:int get(int n){int res 0;while(n){res (n%10) * (n%10);n / 10;}return res;}bool isHappy(int …

docker面试问题二

如何防止Docker容器中的漏洞和攻击&#xff1f; 防止Docker容器中的漏洞和攻击是一个多层次、多方面的任务&#xff0c;涉及从镜像构建、容器运行到网络安全的整个生命周期。以下是一些关键措施&#xff1a; 使用官方和受信任的镜像&#xff1a; 总是从官方源或受信任的第三方…

基于SSM的个性化旅游攻略定制系统设计与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的个性化旅游攻略定制系统设计与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xf…

故障诊断 | 一文解决,RF随机森林的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,RF随机森林的故障诊断(Matlab) 模型描述 随机森林(Random Forest)是一种集成学习(Ensemble Learning)方法,常用于解决分类和回归问题。它由多个决策树组成,每个决策树都独立地对数据进行训练,并且最终的预测结果是由所有决策…

为什么SSL会握手失败?SSL握手失败原因及解决方案

随着网络安全技术的发展&#xff0c;SSL证书作为网站数据安全的第一道防线&#xff0c;被越来越多的企业选择。SSL证书使用的是SSL协议&#xff0c;而SSL握手是SSL协议当中最重要的一部分。当部署SSL证书时&#xff0c;如果服务器和客户端之间无法建立安全连接&#xff0c;就会…

C++学习Day01之using声明以及using编译指令

目录 一、程序1.1 using声明1.2 using声明与就近原则1.3 using编译指令与就近原则1.4 多个using编译指令 二、分析与总结 一、程序 1.1 using声明 #include<iostream> using namespace std;namespace KingGlory {int sunwukongId 1; } void test01() {//1、using声明u…

由数据插入超长引起的问题——了解GaussDB和openGauss的字符集

前言 故事是这样开始的。我们的小DEMO项目的数据库版本从openGauss 2.1.0升级到了5.0.0版本。升级后进行功能验证的时候&#xff0c;测试同学发现个BUG&#xff0c;原来通过gs_restore导出来的数据再导入时报超长&#xff0c;插入失败了&#xff0c;如下图所示&#xff0c;nva…

2024年第十五届电子商务、管理与经济国际会议(ICEME 2024)即将召开!

2024年第十五届电子商务、管理与经济国际会议(ICEME 2024) 将于2024年7月19-21日在北京召开。本次会议将由北京工业大学主办&#xff0c;中国澳门圣若瑟大学提供学术支持。ICEME 2024旨在为来自世界各地的电子商务、管理与经济的研究人员提供一个展示最新研究成果的高质量交流平…

市场复盘总结 20240202

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 昨日主题投资 连板进级率 6/30 20% 二进三…

java多线程详解

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。简单理解为&#xff1a;引用软件中相互独立&#xff0c;可以同时允许的功能 进程是程序的基本执行实体 并发&#xff1a;在同一时刻&#xff0c;有多个指令在单个CPU上交替…

java事务相关知识小总结

java事务相关知识小总结 Spring 事务相关知识&#xff1a; Spring提供了强大的事务管理机制&#xff0c;支持声明式事务和编程式事务。以下是一些与Spring事务相关的关键知识点&#xff1a; 声明式事务管理&#xff1a; 使用 Transactional 注解声明事务&#xff0c;可以应用…