MyException - 我的异常网
当前位置:我的异常网» 操作系统 » postgresql怎么维护WAL日志/归档日志

postgresql怎么维护WAL日志/归档日志

www.MyException.Cn  网友分享于:2013-10-16  浏览:0次
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日志维护

1. 参数max_wal_size/min_wal_size
  9.5以前: (2 + checkpoint_completion_target) * checkpoint_segments + 1
  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可以循环使用。
2. 参数wal_keep_segments
   在流复制的环境中。使用流复制建好备库,如果备库由于某些原因接收日志较慢。导致备库还未接收到。就被覆盖了。导致主备无法同步。这个需要重建备库。
   避免这种情况提供了该参数。每个日志文件大小16M。如果参数设置64. 占用大概64×16=1GB的空间。根据实际环境设置。
3. pg_resetxlog
  在前面参数设置合理的话。是用不到pg_resetxlog命令。
  使用案例参考: https://my.oschina.net/Kenyon/blog/101432
[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>.      

归档日志维护

1. 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/ 000000010000000000000009
在归档目录/home/postgres/arch/ 把000000010000000000000009之前的日志都清理。

2. pg_rman备份
参考博客 http://www.cnblogs.com/lottu/p/7490615.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 = 10  
KEEP_ARCLOG_DAYS = 10   
在备份信息中会产生以下信息。
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10, keep days = 10)

 

文章评论

写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员和编码员之间的区别
程序员和编码员之间的区别
我是如何打败拖延症的
我是如何打败拖延症的
程序员必看的十大电影
程序员必看的十大电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
如何成为一名黑客
如何成为一名黑客
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
总结2014中国互联网十大段子
总结2014中国互联网十大段子
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
中美印日四国程序员比较
中美印日四国程序员比较
那些争议最大的编程观点
那些争议最大的编程观点
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
漫画:程序员的工作
漫画:程序员的工作
程序员都该阅读的书
程序员都该阅读的书
程序员应该关注的一些事儿
程序员应该关注的一些事儿
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我的丈夫是个程序员
我的丈夫是个程序员
老程序员的下场
老程序员的下场
每天工作4小时的程序员
每天工作4小时的程序员
编程语言是女人
编程语言是女人
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
一个程序员的时间管理
一个程序员的时间管理
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的鄙视链
程序员的鄙视链
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
为什么程序员都是夜猫子
为什么程序员都是夜猫子
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有