PostgreSQL WAL日志解析与应用日志一般存储在$PGDATA/pg_xlog内,他们一般以类似于 0000000100000002000000D4的文件存储。 00000001 00000002 000000D4 timeline LogId LogSeg • WAL 日志文件XLOG 文件是一个逻辑概念,每一个XLOG文件, 中国用户大会 Write Ahead Log Files Segment 3 2 1 256 00000001 00000002 000000D4 2048 XLOG XLogLongPageHeaderData XLogPageHeaderData Recode XlogRecord XLogRecData 2016Postgres中国用户大会 Header: len, xid, prev, XLOG_HEAP_INSERT, rmid, crc Data:tupleid, infos Id: 1 Name: jim Update test set name = ‘tom’ where id = 1; UPDATE Header: len, xid, prev, XLOG_HEAP_UPDATE, rmid, crc0 码力 | 16 页 | 705.31 KB | 1 年前3
Greenplum分布式事务和两阶段提交协议prepared事务的恢复过程: 当执行prepare时候,PG会把该事务的lock信息当做prepare日志记录的一部分记录在日志文件(xlog)里。当数 据库重新启动,会读这个日志文件(xlog)这条日志记录,把锁“还原”到pg_lock表里。 1. StartupXlog函数发现XLOG_XACT_PREPARE日志记录进行redo,调用函数recreateTwoPhaseFile将 该日志记录中的信息放到 用于判断分布式事务是否提交,作用和PG 的commit log类似,基于simple LRU实现 • 分布式死锁检测 • 本地事务的管理:创建、提交、状态迁移 等 • 加锁和MVCC • 本地事务的死锁检测 • xlog、commit log(CLOG) • 对PREPARE、COMMIT/ABORT PREPARED语句的处理 Greenplum在PG的基础上实现 Greenplum复用PG的实现 330 码力 | 42 页 | 2.12 MB | 1 年前3
Pivotal Greenplum 最佳实践分享进行诊断和维护 在某些极端情況下,数据库重启失敗,可能原因是Persistent或Xlog有数据不一致,此时,请在Support说明下进行修复,例如抑制错误、修复 xlog日志等,需要说明的是,未得到support同意,不要用pg_resetxlog去修復xlog,否则可能导致数据不一致; 故障机器隔离 当发现有机器本身有故障,例如经常性自动重启0 码力 | 41 页 | 1.42 MB | 1 年前3
Greenplum备份恢复浅析姓名:张文杰 邮箱:zhuodao.zwj@alibaba-inc.com 公司:阿里云 2017 年象行中国(杭州 站)第一期 Greenplum数据备份恢复: 1. 数据量较大 2. 不能完全使用Xlog日志备份 3. 需要保证数据完整性和一致性 2017 年象行中国(杭州 站)第一期 Greenplum提供了: 1. 非并行备份和恢复: --pg_dump和pg_dumpall(pg_restore)0 码力 | 17 页 | 1.29 MB | 1 年前3
PostgreSQL和Greenplum 数据库故障排查postgres 4096 Dec 8 11:22 base 11:22 PG_VERSION drwx------ 3 postgres postgres 4096 Dec 8 11:22 pg_xlog -rw------- 1 postgres postgres 88 Dec 8 11:22 postgresql.auto.conf -rw------- 1 postgres postgres0 码力 | 84 页 | 12.61 MB | 1 年前3
Scaling with PostgreSQL 9.6 and Postgres-XLprojects? Postgres Conference China 2016 中国用户大会 First, Quick Performance Ideas • Put WAL logs (pg_xlog directory) on a separate storage device • Hundreds of connections? – Use pgbouncer connection pooler0 码力 | 87 页 | 1.16 MB | 1 年前3
百度超级链 XuperChain 3.7 中文文档{ Type() string Version() int64 InitCurrent(block *pb.InternalBlock) error Configure(xlog log.Logger, cfg *config.NodeConfig, consCfg map[string]interface{}, extParams map[string]interface{}) --> 自己挖出块 // l.IsEnablePowMinning() == false --> 被中断 if !valid && !l.IsEnablePowMinning() { l.xlog.Debug("I have been interrupted from a remote node, because it has a higher block") return nil0 码力 | 270 页 | 24.86 MB | 1 年前3
百度超级链 XuperChain latest 中文文档{ Type() string Version() int64 InitCurrent(block *pb.InternalBlock) error Configure(xlog log.Logger, cfg *config.NodeConfig, consCfg map[string]interface{}, extParams map[string]interface{}) --> 自己挖出块 // l.IsEnablePowMinning() == false --> 被中断 if !valid && !l.IsEnablePowMinning() { l.xlog.Debug("I have been interrupted from a remote node, because it has a higher block") return nil0 码力 | 316 页 | 24.51 MB | 1 年前3
百度超级链 XuperChain 3.9-e 中文文档{ Type() string Version() int64 InitCurrent(block *pb.InternalBlock) error Configure(xlog log.Logger, cfg *config.NodeConfig, consCfg map[string]interface{}, extParams map[string]interface{}) --> 自己挖出块 // l.IsEnablePowMinning() == false --> 被中断 if !valid && !l.IsEnablePowMinning() { l.xlog.Debug("I have been interrupted from a remote node, because it has a higher block") return nil0 码力 | 317 页 | 27.80 MB | 1 年前3
百度超级链 XuperChain master 中文文档{ Type() string Version() int64 InitCurrent(block *pb.InternalBlock) error Configure(xlog log.Logger, cfg *config.NodeConfig, consCfg map[string]interface{}, extParams map[string]interface{}) --> 自己挖出块 // l.IsEnablePowMinning() == false --> 被中断 if !valid && !l.IsEnablePowMinning() { l.xlog.Debug("I have been interrupted from a remote node, because it has a higher block") return nil0 码力 | 316 页 | 24.51 MB | 1 年前3
共 18 条
- 1
- 2













