pg_resetxlog清理的pg_xlog下的WAL日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: PostgreSQL的pg_xlog下有大量日志,空间不足,如何删除?Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>ls000000010000000000000008.

PostgreSQL的pg_xlog下有大量日志,空间不足,如何删除?

Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>ls

000000010000000000000008.00000028.backup  00000001000000000000009D  0000000100000000000000C9  0000000100000000000000F5  000000010000000100000021  00000001000000010000004D

000000010000000000000072                  00000001000000000000009E  0000000100000000000000CA  0000000100000000000000F6  000000010000000100000022  00000001000000010000004E

000000010000000000000073                  00000001000000000000009F  0000000100000000000000CB  0000000100000000000000F7  000000010000000100000023  00000001000000010000004F

......


Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>ll|wc -l

263


Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>du -sh /usr/local/pgsql/data/pg_xlog/

4.1G    /usr/local/pgsql/data/pg_xlog/


清理步骤:

pg_resetxlog用来清理WAL日志,当数据库服务启动的情况下,是不能使用的,所以执行之前需要停机。


(1)停机

Darren1:postgres:/usr/local/pgsql/bin:>pg_ctl stop -m fast


(2)查看NextXID和NextOID(发生checkpoint的时候,这两个值会发生改变)

Darren1:postgres:/usr/local/pgsql/bin:>pg_controldata

pg_control version number:            960

Catalog version number:               201608131

Database system identifier:           6446917631406040181

Database cluster state:               shut down

pg_control last modified:             Thu 27 Jul 2017 05:04:12 AM CST

Latest checkpoint location:           1/73000028

Prior checkpoint location:            1/720048F8

Latest checkpoint's REDO location:    1/73000028

Latest checkpoint's REDO WAL file:    000000010000000100000073

Latest checkpoint's TimeLineID:       1

Latest checkpoint's PrevTimeLineID:   1

Latest checkpoint's full_page_writes: on

Latest checkpoint's NextXID:          0:19545

Latest checkpoint's NextOID:          16646

......


(3)使用pg_resetxlog,指定oid和xid

Darren1:postgres:/usr/local/pgsql/bin:>pg_resetxlog -o 16646 -x 19545 -f /usr/local/pgsql/data/

Transaction log reset

Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>ll

-rw-------. 1 postgres dba      302 Jul 26 12:12 000000010000000000000008.00000028.backup

-rw-------. 1 postgres dba 16777216 Jul 27 05:07 000000010000000100000077

drwx------. 2 postgres dba    20480 Jul 27 05:07 archive_status

Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>du -sh /usr/local/pgsql/data/pg_xlog/

17M    /usr/local/pgsql/data/pg_xlog/


(4)启动数据库

Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>pg_ctl start


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
SQL 运维 关系型数据库
MySQL redo与undo日志解析
前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍。相对于其他几种日志而言, redo log 和 undo log 是更加神秘,难以观测的。本篇文章将主要介绍这两类事务日志的作用及运维方法。
371 0
|
监控 关系型数据库 数据库
PostgreSQL 恢复模式错误日志增强 - 提供正在恢复的WAL(XLOG)文件位置
标签 PostgreSQL , the database system is starting up , the database system is in recovery mode 背景 当数据库异常停库,再次启动时。
3010 0
|
6月前
|
SQL 关系型数据库 数据库连接
`pg_dump` 和 `pg_restore`
`pg_dump` 和 `pg_restore`
86 4
|
缓存 关系型数据库 数据库
PG:checkpoint是什么
PG:checkpoint是什么
96 0
|
关系型数据库 PostgreSQL
PostgreSQL如何删除不使用的xlog文件
PostgreSQL如何删除不使用的xlog文件
151 0
|
Oracle 安全 关系型数据库
如何在openGauss/PostgreSQL手动清理XLOG/WAL 文件?
openGauss/PostgreSQL中的预写式日志WAL(Write Ahead Log),又名Xlog或redo log,相当于oracle的online redo log, 不同的是oracle online redo log是提前创建几组滚动使用,但在opengauss中只需要本配置参数控制WAL日志的周期,数据库会一直的创建并自动清理,但存在一些情况WAL日志未清理导致目录空间耗尽,或目录空间紧张时手动删除wal日志时,比如如何确认在非归档模式下哪些WAL日志文件可以安全删除?
946 0
|
关系型数据库
PG修改数据页页头等信息时是否会产生WAL?
PG修改数据页页头等信息时是否会产生WAL?
69 0
|
存储 关系型数据库
PG检查点刷写脏页CheckPointGuts
PG检查点刷写脏页CheckPointGuts
135 0
|
关系型数据库 数据库 PostgreSQL
PG 数据文件
每个索引和表都是一个单独的文件,page页/段,默认1G,大于1G的page会被分割
314 0
|
SQL 安全 关系型数据库
pg_dump
备份PostgreSQL数据库的工具,它甚至可以在数据库正在并发使用时进行完整一致的备份,而不会阻塞其它用户对数据库的访问。该工具生成的转储格式可以分为两种,脚本和归档文件。
204 0