2 PG源码分析 2.1 删除逻辑 触发删除动作 代码语言:javascript 代码运行次数:0 运行 AI代码解释 RemoveOldXlogFiles>CreateCheckPoint>CreateRestartPoint wal_keep_segments判断(调用这个函数修改_logSegNo,然后再传入RemoveOldXlogFiles) 代码语言:javascript
postgresql 9.x 叫做 xlog、location 在实际应用中经常需要根据 lsn/location 获取 wal/xlog 文件名 postgresql 10.x postgres=# select pg_current_wal_lsn(); pg_current_wal_lsn --- 0/1656FE0(1row)postgres=# select pg_current_wal_lsn(), pg_walfile_name(pg_current_wal_lsn()), pg_walfile_...
select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)/1024/1024 as MB from pg_stat_replication; select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)/1024/1024/1024 as GB from pg_stat_replication; 级联复制 select pg_xlog_location_diff(pg_last_xlog_repl...
pg_xlog_location_diff('','') 这个函数还是比较有用的,在安装9.1时,没有创建,需要手动创建,最好创建在 postgres 数据库下的 public 下。 CREATE OR REPLACE FUNCTION public.pg_xlog_location_diff(text, text) RETURNS numeric LANGUAGE plpgsql AS $function$ DECLARE offset1 text; offset2 text; xlog1 t...
postgres=# select pg_current_xlog_location(); pg_current_xlog_location--- 5/285C6080(1 row) 1. 首先说下lsn的位数,因为lsn标识着xlog的位置,这个位置在数据库启动后就是在不断增加的,因为32bit最大的日志只能支撑4GB的日志,这肯定是不够用的,所以要考虑设计64位lsn,这就是现在的lsn格式,lsn由斜杠左...
select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());--获取实例中当前进行的备份select pg_is_in_backup(),pg_backup_start_time();--获取当前实例的角色状态(primary or standby)select pg_is_in_recovery();--获取数据库大小select pg_database_size('mydb')...
pg_basebackup -U <用户名> -D <目标目录> -Ft -Xs -P -R 启动数据库并进行恢复 pg_ctl -D <目标目录> start 进入恢复的数据库,执行如下命令 pg_resetxlog -f <目标目录> l利用WAL日志文件恢复数据 前提条件时WAL开启的条件下才可以进行。WAL 的中心思想是先写日志,再写数据,数据文件的修改必须发生...
(XLogArchiveCheckDone(xlde->d_name)){//如果没有开启归档:总是TRUE;否则,归档完成后才为TRUE /* Update the last removed location in shared memory first */ //XLogCtl->lastRemovedSegNo = segno; UpdateLastRemovedPtr(xlde->d_name); RemoveXlogFile(xlde->d_name, PriorRedoPtr, endptr); } ...
cp-r/usr/local/pgsql/data/media/ 但需要注意的是,此种方式由于比较直接,不管是否数据库有无IO情况,因此,备份的时候需要先停止数据库,恢复的时候要删除原数据库文件,重新覆盖回去后,才可以在启动数据库,如果在数据库启动的时候备份,那么,可能会造成数据备份不全,也可以理解为冷备方式。
1)xlog数据注册 2)xlog记录组装 3)xlog记录插入xlog buffer,其中xlog记录组装比较复杂,由函数XLogRecordAssemble负责实现。具体详述如下: xlog记录组装概览 函数XLogRecordAssemble分别组装xlog record头部、blockData 头部、mainData头部、blockData、mainData,代码实现如下: ...