postgresql如何维护WAL日志/归档日志
WAL日志介绍
wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性。而在PostgreSQL 7中引入的技术。它的中心思想是“先写日志后写数据”,即要保证对数据库文件的修改应放生在这些修改已经写入到日志之后,同时,在PostgreSQL 8.3以后又加入了WalWriter日志写进程,可以保证事务提交记录不是在提交时同步写入到磁盘,而是异步写入,这样就极大的减轻了I/O的压力。所以说WAL日志很重要。对保证数据库中数据的一致性和事务的完整性。
PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小:000000010000000000000010文件名称为16进制的24个字符组成,每8个字符一组,每组的意义如下:
- 时间线:英文为timeline,是以1开始的递增数字,如1,2,3...
- LogId:32bit长的一个数字,是以0开始递增的数字,如0,1,2,3...
- LogSeg:32bit长的一个数字,是以0开始递增的数字,如0,1,2,3...
wal日志跟online redo log一样,其个数,也不是无限的。归档日志就出现了。
WAL日志维护
. 参数max_wal_size/min_wal_size
.5以前: ( + checkpoint_completion_target) * checkpoint_segments +
9.5:PostgreSQL 9.5 将废弃checkpoint_segments 参数, 并引入max_wal_size 和 min_wal_size 参数,
通过max_wal_size和checkpoint_completion_target 参数来控制产生多少个XLOG后触发检查点,
通过min_wal_size和max_wal_size参数来控制哪些XLOG可以循环使用。
. 参数wal_keep_segments
在流复制的环境中。使用流复制建好备库,如果备库由于某些原因接收日志较慢。导致备库还未接收到。就被覆盖了。导致主备无法同步。这个需要重建备库。
避免这种情况提供了该参数。每个日志文件大小16M。如果参数设置64. 占用大概64×=1GB的空间。根据实际环境设置。
. pg_resetxlog
在前面参数设置合理的话。是用不到pg_resetxlog命令。
使用案例参考: https://
[postgres@postgres128 ~]$ pg_resetxlog -?
pg_resetxlog resets the PostgreSQL transaction log.
Usage:
pg_resetxlog [OPTION]... DATADIR
Options:
-c XID,XID set oldest and newest transactions bearing commit timestamp
(zero in either value means no change)
[-D] DATADIR data directory
-e XIDEPOCH set next transaction ID epoch
-f force update to be done
-l XLOGFILE force minimum WAL starting location for new transaction log
-m MXID,MXID set next and oldest multitransaction ID
-n no update, just show what would be done (for testing)
-o OID set next OID
-O OFFSET set next multitransaction offset
-V, --version output version information, then exit
-x XID set next transaction ID
-?, --help show this help, then exit
Report bugs to <pgsql-bugs@postgresql.org>.
归档日志维护
. pg_archivecleanup清理归档日志。 [postgres@postgres128 ~]$ pg_archivecleanup -? pg_archivecleanup removes older WAL files from PostgreSQL archives. Usage: pg_archivecleanup [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE Options: -d generate debug output (verbose mode) -n dry run, show the names of the files that would be removed -V, --version output version information, then exit -x EXT clean up files if they have this extension -?, --help show this help, then exit For use as archive_cleanup_command in recovery.conf when standby_mode = on: archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %r' e.g. archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %r' Or for use as a standalone archive cleaner: e.g. pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup 1.1 当主库不断把WAL日志拷贝到备库。这个时候需要清理。在recovery.conf可以配置 e.g. archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %r' 1.2 可以收到执行命令。 e.g. pg_archivecleanup /home/postgres/arch/ 在归档目录/home/postgres/arch/ 把000000010000000000000009之前的日志都清理。 . pg_rman备份 参考博客 http://www.cnblogs.com/lottu/p/.html 在pg_rman备份保留策略中。在每天都备份。可以清理归档日志。 对流复制环境中。备份一般是在备库。可以把归档日志传送到备库中。 --keep-arclog-files=NUM keep NUM of archived WAL --keep-arclog-days=DAY keep archived WAL modified in DAY days e.g 保留归档日志个数10。或者保留10天内的归档日志。 KEEP_ARCLOG_FILES = KEEP_ARCLOG_DAYS = 在备份信息中会产生以下信息。 INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = , keep days = )
postgresql如何维护WAL日志/归档日志的更多相关文章
- oracle归档日志管理
归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档 ...
- oracle归档日志配置查询
归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档 ...
- oracle之 Oracle归档日志管理
在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle最大的区别之一就是数据库可以在数据出错的时候进行恢复.这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了. ...
- RMAN备份归档日志ORA-19575
RMAN备份归档日志ORA-19575 一.问题描述 1)环境oracle 10g; 2)报错现象RMAN进行备份归档报错失败ORA-19575 二.问题处理 1)根据客户说明的现象,百度了一波(详见 ...
- PostgreSQL归档日志 手动触发归档 select pg_switch_xlog()
(转,做记录) 一 环境信息--1.1 PostgreSQL 版本 9.3.0 --1.2 postgresql.conf wal_level = hot_standbyarchive_mode = ...
- oracle日志归档空间清理
进入机器,设置环境变量,如: export ORACLE_HOME=/main/app/oracle/product//db_1 export ORACLE_SID=devdb 然后切换oracle用 ...
- oracle 归档日志总结
Oracle 归档模式和非归档模式 归档模式和非归档模式 在DBA部署数据库之初,必须要做出的最重要决定之一就是选择归档模式(ARCHIVELOG)或者非 归档模式(NOARCHIVELOG )下运行 ...
- Oracle的归档日志
归档模式的特点和要求 在归档模式下,当LGWR后台进程的写操作从一个重做日志组切换到另一个重做日志组后,归档写后台进程(ARCH/ARCRn)就会将原来的重做日志的信息复制到归档日志文件中. 可以把归 ...
- Oracle 归档日志管理
一.Oracle日志介绍 1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo log ...
随机推荐
- 【javascript】回调函数
1. 定义 回调函数,即当条件满足时执行的函数.有三种方法实现调用回调函数 call 1)call 用法:call(thisObj, Obj) 主要区别:call 方法会将函数对象上下文修改为this ...
- 【jquery】获取元素高度
1. $("#div_id").height(); // 获得的是该div本身的高度, (不包含padding,margin,border)2. $("#div_id&q ...
- MySQL学习笔记(五):MySQL表级锁和行级锁
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
- PHP执行linux命令mkdir权限问题
在linux系统中,root帐号执行php命令: mkdir('test', 0777); 结果文件的权限依然为: drwxr-xr-x 2 root root Jul 27 19:30 test ...
- mybatis 详解(一)------JDBC
1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且 ...
- jquery.imagezoom.js制作鼠标悬停图片放大镜特效、参数和最简教程
一.插件介绍 今天在用到放大镜效果的时候,突然发现网站里没有放大镜的插件.于是总结了一下,放到这里.为自己,也为他人提供方便.jquery.imagezoom.js这款插件用途很简单,就是鼠标移过去, ...
- ORA-01031:insufficient privileges解决方法
今天刚创建的数据库,用sys身份登录的时候提示 ORA-01031:insufficient privileges !郁闷了,肯定是先百度一波···然后设置当前用户权限.用Administator用户 ...
- CocoaPods的一些略为高级一丁点的使用【转】
记得我刚开始做iOS开发的时候,是没有项目依赖管理工具.当需要引入第三方库的时候是相当麻烦的,不是直接拷贝库近来,就是添加依赖工程,直到CocoaPods出来才改变这个状况.项目依赖管理不是Cocoa ...
- 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复
开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...
- 6.linux下部署 web 项目
安装java 1.下载 linux 环境的jdk 2.上传该压缩包到 linux 系统中并且解压 tar -zxvf 压缩包名 3.配置环境变量并且刷新配置 export JAVA_HOME=/ali ...