PHP实战中知识总结 / PgSQL - pg_controldata(bin目录文件)
一、pg_controldata
pg_controldata用于显示一个PostgreSQL数据库集簇的控制信息。可以打印在initdb期间初始化的信息,例如目录版本。它也显示关于预写式日志和检查点处理的信息。这种信息是集簇范围的,并且不针对任何一个数据库。
这个工具只能由初始化集簇的用户运行,因为它要求对数据目录的读访问。你可以在命令行中指定数据目录,或者使用环境变量PGDATA。如果没有指定数据目录(DATADIR), 将使用环境变量PGDATA。
二、命令格式
pg_controldata [OPTION] [DATADIR]
1、option
参数 | 说明 |
---|---|
[-D, --pgdata=]DATADIR | 指定数据目录,或者使用环境变量PGDATA |
-V, --version | 打印pg_controldata版本并退出 |
-?, --help | 显示命令行参数的帮助信息并退出 |
[postgres@izwz91quxhnlkan8kjak5hz bin]$ pg_controldata
pg_control version number: 1300 // pg_control版本
Catalog version number: 202007201 // 系统表的版本号
Database system identifier: 6939478009092009017 // 数据库系统标识,这个标识串是一个64bit的整数,其中包含了创建数据库时的时间戳及initdb时初使化的进程号
Database cluster state: in production // 数据库簇状态,实例的状态是用一个枚举类型来表示的,具体见pg\_control.h
pg_control last modified: 2021年05月23日 星期日 22时03分09秒 // pg_control 最后修改
Latest checkpoint location: 0/5FC75268 // 最新检查点位置
Latest checkpoint's REDO location: 0/5FC75230 // 最新检查点的 REDO 位置
Latest checkpoint's REDO WAL file: 00000001000000000000005F // 最新检查点的重做WAL文件
Latest checkpoint's TimeLineID: 1 // 最新检查点的 TimeLineID
Latest checkpoint's PrevTimeLineID: 1 // 最新检查点的PrevTimeLineID
Latest checkpoint's full_page_writes: on // 最新检查点的full\_page\_writes
Latest checkpoint's NextXID: 0:4621 // 最新检查点的NextXID
Latest checkpoint's NextOID: 24757 // 最新检查点的 NextOID
Latest checkpoint's NextMultiXactId: 1 // 最新检查点的 NextMultiXactId
Latest checkpoint's NextMultiOffset: 0 // 最新检查点的 NextMultiOffset
Latest checkpoint's oldestXID: 478 // 最新检查点的 oldestXID
Latest checkpoint's oldestXID's DB: 1 // 最新检查点的oldestXID所在的数据库
Latest checkpoint's oldestActiveXID: 4621 // 最新检查点的 oldestActiveXID
Latest checkpoint's oldestMultiXid: 1 // 最新检查点的 oldestMultiXid
Latest checkpoint's oldestMulti's DB: 1 // 最新检查点的oldestMulti所在的数据库
Latest checkpoint's oldestCommitTsXid:0 // 最新检查点的 oldestCommitTsXid
Latest checkpoint's newestCommitTsXid:0 // 最新检查点的 newestCommitTsXid
Time of latest checkpoint: 2021年05月23日 星期日22时03分09秒 // 最新检查点的时间
Fake LSN counter for unlogged rels: 0/3E8 // 未标记REL的伪LSN计数器
Minimum recovery ending location: 0/0 // 最小恢复结束位置
Min recovery ending loc's timeline: 0 // 最小恢复结束位置时间表
Backup start location: 0/0 // 开始进行备份的点位置
Backup end location: 0/0 // 备份的最终位置
End-of-backup record required: no // 需要备份结束记录
wal_level setting: replica // wal_level设置
wal_log_hints setting: off // wal_log_hints设置
max_connections setting: 100 // 最大连接数设置
max_worker_processes setting: 8 // 设置系统能够支持的后台进程的最大数量。这个参数只能在服务器启动时设置。 默认值为 8。
max_wal_senders setting: 10 // 同时运行 WAL 发送进程 的最大数
max_prepared_xacts setting: 0
max_locks_per_xact setting: 64
track_commit_timestamp setting: off // 记录事务的提交时间。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是off
Maximum data alignment: 8 // 最大数据校准
Database block size: 8192 // 数据库块大小
Blocks per segment of large relation: 131072 // 每段大关系的块
WAL block size: 8192 // WAL的块大小
Bytes per WAL segment: 16777216 // 每一个 WAL 段字节数
Maximum length of identifiers: 64 // 标识符的最大长度
Maximum columns in an index: 32 // 在索引中可允许使用最大的列数
Maximum size of a TOAST chunk: 1996 // TOAST区块的最大长度
Size of a large-object chunk: 2048 // 大对象区块的大小
Date/time type storage: 64-bit integers // 日期/时间 类型存储
Float8 argument passing: by value // 正在传递Flloat8类型的参数
Data page checksum version: 0 // 数据页校验和版本
Mock authentication nonce: c6310f6e38fc3558c95fa1913be554a864fc22152adfc44d9471dd9d7ef6128e // 当前身份验证
2、Database cluster state
(1)starting up:表示数据库正在启动的状态,实际上目前没有使用此状态。
(2)shut down:数据库实例(非Standby)正常关闭后控制文件中就是此状态。
(3)shut down in recovery:Standby实例正常关闭后控制文件中就是此状态。
(4)shutting down:当正常停库时,会先做checkpoint,在开始做checkpoint时,会把状态设置为此状态,当做完后会把状态置为shut down。
(5)in crash recovery: 当数据库实例非异常停止后,重新启动后,会先进行实例的恢复,在实例恢复时的状态就是此状态。
(6)in archive recovery:Standby实例正常启动后,就是此状态。
(7)in production:数据库实例正常启动的后就是此状态。Standby数据库正常启动后不是此状态,而是“in archive recovery
2、wal_level解析
wal_level 决定多少信息写入到 WAL 中。默认值是replica。这个参数只能在服务器启动时设置。最小的wal_level不会包括足够的信息来从基础备份和 WAL 日志中重建数据,因此,要启用 WAL 归档(archive_mode)和流复制,必须使用replica或更高级别
(1)minimal:只写入从崩溃或立即关机中恢复的所需信息。在minimal级别中,对于创建或重写永久关系的事务的其余部分,不会记录任何信息。 这可以提升命令执行速度。
(2)replica:增加 wal 归档信息同时包括只读服务器需要的信息。(9.6 中新增,将之前版本的 archive 和 hot_standby合并)
(3)archive:是增加wal归档所需的日志(9.6之前的版本)。
(4)hot_standby:是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到(9.6之前的版本)。
(5)logical:会增加支持逻辑解码所需的信息。在logical层,与replica相同的信息会被记录,外加上 允许从 WAL 抽取逻辑修改集所需的信息。使用级别logical将增加 WAL 容量,特别是如果为了REPLICA IDENTITY FULL配置了很多表并且执行了很多UPDATE和DELETE语句时。
3、wal_log_hints
设置wal_log_hints这个参数使得能够记录特定提示位(hint-bit)的变化。这个参数只能在服务器启动的时候被设置
当这个参数设置为ON时,PostgreSQL数据库服务器在一个检查点之后第一次页面更改过程(即使是对提示位进行非关键性的修改)中,将每个磁盘页的全部内容写入到WAL中。即全页写(full page writes)
4、max_wal_senders
指定来自后备服务器或流式基础备份客户端的并发连接的最大数量(即同时运行 WAL 发送进程 的最大数)。默认值是10,0值意味着禁用复制。WAL 发送进程被计算在连接总数内,因此该参数 不能被设置为高于max_connections的值。这个参数只能在服务器启动时被设置。wal_level必须设置为archive或更高级别以允许来自后备服 务器的连接。