PostgreSQL(十)控制文件管理

目录

一、控制文件的结构

1、控制文件的位置与大小

2、静态参数

​编辑

3、postgresql.conf中的配置信息

4、write-ahead logging以及checkpoint的动态信息

二、控制文件的维护与备份

三、重建控制文件(无备份时)

1、重建执行过程:

2、pg_resetwal参数获取说明:

(1)-l

(2)-O 

(3)-m

(4)-x


一、控制文件的结构

1、控制文件的位置与大小

逻辑位置:pg_global表空间中

物理位置与名字:$PGDATA/global/pg_control

物理大小:8k(控制文件内容尽量保持小于512个字节)

2、静态参数

初始化数据库时生成的,除非重新初始化数据库,否则不可更改

3、postgresql.conf中的配置信息

参数配置文件内配置的参数举例如下:

4、write-ahead logging以及checkpoint的动态信息

动态信息会在数据库启动期间 随时更新,举例如下:

二、控制文件的维护与备份

1、固定部分:初始化数据库时产生,固定不变

2、有些信息随时更新:如果发生检査点、备份、日志切换等操作,则自动更新

3、postgres.conf相关参数被更新:如果配置文件中重要的相关参数被修改,则也会自动更新

4、数据库备份时会一起备份

#必须与数据库备份一起备份、一起恢复,不能单独备份。

备份的三种方式如下:

(1)tar命令
tar -jcv -f baseline.tar.bz2 $PGDATA

(2)pg_basebackup命令
pg_basebackup -D bk1 -Ft -z -P

(3)pg_rman命令
pg_rman backup --backup-mode=full -B /home/postgres/pg_rman_bk/ -C -P

5、不能手动修改该文件

6、启动和恢复数据库时需要,当前没有避免发生单一故障点而设计的保护策略

三、重建控制文件(无备份时)

PG10版本以前使用pg_resetxlog工具;10及以后版本使用pg_resetwal工具

本文主讲pg_resetwal

1、重建执行过程:

#创建空文件
cd $PGDATA/global
touch pg_control

#执行重建操作
pg_resetwal -l 000000010000000200000095 -O 0x1000000000 -m 0x00010000, 0x00010000 -x 0x000100000 -f $PGDATA

#查看控制文件内容
pg_crontroldata
#重新启动数据库,或用pg_ctl start
systemctl start postgresql

2、pg_resetwal参数获取说明:

(1)-l

XLOGFILE   force minimun WAL starting location for new transaction log

                       (XLOGFILE强制新事务日志的最小wal起始位置)

参数值获取方法:$PGDATA/pg_wal下 找到创建的最大的日志文件编号+1

(2)-O 

OFFSET     set next multitransaction offset

参数值获取方法:在$PGDATA/pg_multixact/members下面,找到文件编号中最大的数字,+1,然后乘以65536.转换成16进制为100000,然后末尾添加4个0             (-O 0x1000000000)

例:

0000中最大的数字为0;+1=1;*100000=100000;末尾添加0000=1000000000(9个0);0x表示16进制;得到结果:0x1000000000

(3)-m

MXID       set next and oldest multitransaction ID

参数值获取方法:在pg_multixact/offsets下面,找到最大的文件编号,+1,然后末尾添加4个0

(-m 0x00010000, 0x00010000)

例:

0000+1=0001;+4个0=00010000;0x表示16进制;重复一遍;得到:0x00010000, 0x00010000

(4)-x

XID        set next transaction ID

参数值获取方法:在pg_xact下面,找到最大的文件编号,+1,后面跟上5个0(-x 0x000100000)

例:

0000+1=0001;+5个0=00010000;0x表示16进制;得到:0x000100000

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值