当前位置: gzslhs->优技培训 > PG技术大讲堂 - Part 11:PostgreSQL控制文件作用与管理

PG技术大讲堂 - Part 11:PostgreSQL控制文件作用与管理

2023-03-30作者:gzslhs来源:www.gzslhs.com

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

Part 11:PostgreSQL控制文件作用与管理

内容1:PostgreSQL控制文件位置

内容2:PostgreSQL控制文件内容

内容3:PostgreSQL控制文件维护

内容4:PostgreSQL控制文件备份

内容5:PostgreSQL控制文件恢复


11.1、控制文件位置

控制文件位置与大小

逻辑位置:存放在pg_global表空间中

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

控制文件的物理大小是8K

控制文件内容尽量保持小于512个字节


11.2、控制文件内容

· initdb时生成的静态信息

pg_control version number: 1201

Catalog version number: 201909212

Database system identifier: 6744130188358323871

Maximum data alignment: 8

Database block size: 8192

Blocks per segment of large relation: 131072

WAL block size: 16384

Bytes per WAL segment: 16777216

Maximum length of identifiers: 64

Maximum columns in an index: 32

Maximum size of a TOAST chunk: 1996

Date/time type storage: 64-bit integers

Float4 argument passing: by value

Float8 argument passing: by value

· postgresql.conf中的配置信息

wal_level setting: replica

wal_log_hints setting: on

max_connections setting: 1000

max_worker_processes setting: 8

max_wal_senders setting: 10

max_prepared_xacts setting: 0

max_locks_per_xact setting: 64

track_commit_timestamp setting: off

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

Latest checkpoint location: 2E/CD32D270

Latest checkpoint's REDO location: 2E/CD32D270

Latest checkpoint's REDO WAL file: 000000110000002E000000CD

Latest checkpoint's TimeLineID: 17

Latest checkpoint's PrevTimeLineID: 17

Latest checkpoint's full_page_writes: on

Latest checkpoint's NextXID: 0:538902

Latest checkpoint's NextOID: 385511

Latest checkpoint's NextMultiXactId: 5

……

Time of latest checkpoint: Sat 18 Jul 2020 10:11:14 PM EDT

Fake LSN counter for unlogged rels: 0/3E8

Backup start location: 0/0

Backup end location: 0/0

End-of-backup record required: no


11.3、控制文件维护

1、固定部分

 初始化数据库时产生,固定不变

2、有些信息随时更新

 如果发生检查点、备份、日志切换等操作,则自动更新

3、postgres.conf相关参数被更新

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

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

5、不能手动修改该文件

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


11.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


11.5、控制文件恢复

重建控制文件

Pg10版本以前版本使用pg_resetxlog工具

Pg10及以后版本使用pg_resetwal工具

pg_resetwal工具需要下面四个参数:

· 1、

-l XLOGFILE force minimum WAL starting location for new transaction log

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

定位办法:pg_wal下面创建的最大的日志文件,编号+1

cd /usr/local/pg12.2/data/pg_wal/

ll

-rw------- 1 postgres postgres 270 Mar 21 09:40 00000010.history

-rw------- 1 postgres postgres 16777216 Jul 19 06:19 0000001100000038000000C4

-rw------- 1 postgres postgres 16777216 Jul 19 06:16 0000001100000038000000C5

-rw------- 1 postgres postgres 16777216 Jul 19 06:17 0000001100000038000000C6

-rw------- 1 postgres postgres 16777216 Jul 19 06:17 0000001100000038000000C7

确定-l 的参数值为:

-l 0000001100000038000000C8

· 2、

-O OFFSET set next multitransaction offset

在pg_multixact/members下面,取最大值加1然后乘以65536.转换成16进制为100000,然后末尾添加4个0

-O=0x1000000000

步骤:

1、进入相应目录

cd $PGDATA/pg_multixact/members/

2、查看文件

ll-rwxr-x--- 1 postgres postgres 8192 Jul 18 22:11 0000

3、计算结果

-O=0x1000000000

· 3、

-m =MXID,MXID set next and oldest multitransaction ID

在pg_multixact/offsets下面,找到最大的文件编号,+1 后面跟上4个0

如:0000

-m =0x00010000,0x00010000

步骤:1、进入相应目录

cd $PGDATA/pg_multixact/offsets

2、查看文件

-rwxr-x--- 1 postgres postgres 8192 Jul 19 05:57 0000

3、计算结果

-m=0x00010000,0x00010000

· 4、

-x XID set next transaction ID

在pg_xact下面,找到最大的文件编号,+1 后面跟上5个0

如:0000

-x = 0x000100000

步骤:1、进入相应目录

cd $PGDATA/pg_xact/

2、查看当前文件

lltotal 140-rwxr-x--- 1 postgres postgres 139264 Jul 18 23:21 0000

3、计算-x值

-x=0x000100000


执行重建控制文件语句:

cd $PGDATA/global

touch pg_control

pg_resetwal -l 0000001100000038000000CC -O 0x1000000000 \

-m 0x00010000,0x00010000 -x 0x000100000 -f $PGDATA

pg_controldata

启动数据库:

pg_ctl start


以上就是Part 11 - PostgreSQL控制文件作用与管理 的内容,欢迎进群一起探讨交流QQ交流群:752027153

微信交流群:联系客服拉你进微信PG交流群

钉钉交流群:35822460,钉钉群有专门讲解公开课

往期课程及视频,联系cuug咨询老师

  • PostgreSQL技术大讲堂 - 第46讲:poc-tpch测试
  • PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
  • PostgreSQL技术大讲堂 - 第50讲:PG分区表管理
  • 2024-02-02,恭喜CUUG 刘同学通过Oracle考试获得OCP 19c证书
  • OCP认证能不能在家中考试,不去VUE考点考试吗?
  • 恭喜CUUG Guo同学以较高分数通过19c OCM认证考试!
  • 3月30日,工信部人才交流中心PostgreSQL认证考试顺利结束
  • 2024年4月8日,工信人才发布红头文件:PostgreSQL数据库管理人才研修与评测班
  • 恭喜CUUG入选2024年工业和信息化重点领域人才能力评价支撑机构
  • 天津职业技术师范大学《PolarDB开源数据库工作室》授牌仪式顺利完成
  • 温州大学国产开源数据库工作室成功举办PostgreSQL技能培训活动
  • PostgreSQL技术大讲堂 - 第51讲:老陈与德哥聊一聊数据库调优
  • 5月17日,PolarDB开源数据库沙龙(青岛站)成功举办-CUUG
  • PostgreSQL技术大讲堂 - 第56讲:老陈与德哥聊“数据库孤儿文件”
  • PostgreSQL技术大讲堂 - 第57讲:老陈与德哥聊“数据库安全”
  • PostgreSQL技术大讲堂 - 第58讲:老陈与德哥聊“txid从32位变成64位的影响与调整”
  • 报名啦!第13届PostgreSQL中国技术大会,”聚焦云端创新 汇聚智慧共享“
  • 汇华学院PG证书来了!工信人才&CUUG PostgreSQL管理员认证!
  • 温州大学PG证书来了!工信人才PostgreSQL管理员认证证书!
  • PostgreSQL PG夜话(第20期):数据库老陈、德哥、快立方华总,聊一聊数据库内存管理
  • PostgreSQL从入门到精通教程,这样学习postgres
  • PostgreSQL数据库,为什么会异军突起?
  • PostgreSQL中国技术大会 CUUG获得PostgreSQL数据库认证与培训合作伙伴
  • 不懂就问:什么是PostgreSQL数据库管理员认证
  • 是时候解锁一下“PostgreSQL数据库认证专家”了
  • ocm认证考试费用多少钱,Oracle OCM考几科
  • OCP认证没有含金量了?来看看Oracle OCP 证书的用处!
  • Oracle OCM证书还值得考吗?哪些人需要考OCM
  • Oracle 数据库认证,数据库领域的金字招牌
  • 今天(5月6日),CUUG 赵同学收到19c OCM认证考试证书!
  • Oracle数据库加入AI功能,Database 23c改名为Database 23ai
  • PostgreSQL技术大讲堂 - 第52讲:与德哥背后的男人们聊如何实现自动性能调优
  • oracle ocp证书有效期多长时间
  • 5月16日,开源驱动教育创新研讨会(青岛站)成功举办-CUUG
  • 7月8日,恭喜CUUG 张同学通过19c OCM认证考试,成绩公布!
  • Oracle OCP证书还有用吗 含金量有多高
  • 腾讯云认证级别名称TCA、TCP、TCE升级为TCCA、TCCP、TCCE
  • 怎么报考腾讯云TDSQL数据库工程师认证(TCCA、TCCP、TCCE)
  • 5月25日,温州大学49名学生参加工信人才PostgreSQL认证考试!
  • 5月30日,PG中级证书来了!工信人才PostgreSQL管理员认证证书!
  • 6月1日,汇华学院12名学生参加工信人才PostgreSQL认证考试!
  • PG技术大讲堂 - 第55讲:通义大模型+向量数据库实现AI的外脑
  • PostgreSQL技术大讲堂 - 第53讲:老陈与德哥开讲PostgreSQL 17新特性
  • PostgreSQL技术大讲堂 - 第54讲:如何在上线前精准评估PG SQL性能
  • 有大奖!第13届PostgreSQL中国技术大会:聚焦云端创新,汇聚智慧共享
  • PolarDB开源社区走进金蝶,开源数据库沙龙成功举办!
  • 阿里云PolarDB再获顶会SIGMOD最佳论文奖
  • 阿里云斩获国际数据库顶会ICDE 2024最佳论文
  • 腾讯云数据库TDSQL荣获深圳市科技进步奖一等奖
  • Oracle OCP认证还值得考吗 考OCP证书需要门槛吗