PostgreSQL pg_rewind实例--could not find previous WA
一、介绍
作为pg_rewind报错章节补充一个用例,说明其用法。 二、实例 1、history文件 --新主 $ cat 00000004.history 1 0/140000C8 no recovery target specified 2 0/19000060 no recovery target specified 3 0/1F000090 no recovery target specified --老主 $ cat 00000003.history 1 0/140000C8 no recovery target specified 2 0/19000060 no recovery target specified 2、查找分叉点 说明:findCommonAncestorTimeline: ? 1)比较sourceHistory[0]、targetHistory[0]的时间线和begin的值,可以得出两者相等,则转到第2个条目的比较 ? 2)比较sourceHistory[1]、targetHistory[1]的时间线和begin的值,可以得出两者相等,则转到第3个条目的比较 ? 3)比较sourceHistory[2]、targetHistory[2]的时间线和begin的值,可以得出两者相等,此时比较结束 ? 4)取第3个条目进行返回:MinXLogRecPtr(sourceHistory[i].end,targetHistory[i].end),此时返回的是sourceHistory[i].end的值作为分叉点,即 0/1F000090 3、此时ControlFile_target.checkPoint < divergerec && target的chkptendrec!=divergerec,所以可以进行pg_rewind 4、findLastCheckpoint查找分叉点divergerec之前最近的checkpoint作为rewind起点。 三、小结 这里pg_rewind执行时,判断不出来没有分叉的情景,即本文的场景。此时执行pg_rewind会报错,让用户还以为WAL文件由损坏导致执行pg_rewind失败。这个工具如果能够将这种场景识别出来,报不需要rewind是不是更好? 四、pg_rewind原理及报错流程分析参考 https://blog.51cto.com/yanzongshuai/2368285 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在swift 4中解码嵌套数组
- NAND FLASH之MLC 与SLC差异
- reactjs – React Native navigator.geolocation.watchPosi
- 构建过程 – Makefile生成器:premake vs bakefile?
- 配置Oracle透明网关用以连接 SQLServer经验总结
- 开源xml读写库CMarkup使用注意事项
- c# – 从数据库初始化的less.css变量
- c# – Nunit,NCrunch和NSubstitute – 使用UnexpectedArgum
- AJAX回调函数内部给全局变量赋值后,在外部调用居然没有被赋
- 在使用scanf读取的char变量中添加两个数字