vb_controldata
功能描述
vb_controldata工具用来显示数据库目录下control文件的相关信息。主要分为以下三部分:
- 数据库初始化时的静态信息。
- 参数配置信息。
- WAL及检查点的动态信息。
具体可参考使用示例。
注意事项
该工具只能由数据库安装用户运行。
使用该工具需确保数据目录正确,并且相应数据目录下的pg_control文件存在。
语法格式
vb_controldata [OPTION] [DATADIR]
参数说明
DATADIR
实例对应的数据库目录。
OPTION取值如下:
-I, --instance-id=INSTANCE_ID 资源池化参数,打印指定实例的control文件信息,该参数不指定时打印全部实例的control文件和reformer页信息。当INSTANCE_ID指定为最大INSTANCE_ID+1时,只打印reformer页信息,当前最大INSTANCE_ID为63。
--enable-dss
资源池化参数,开启资源池化功能。
--socketpath=SOCKETPATH
资源池化参数,dss实例进程使用的socket文件路径,仅支持绝对路径。
-V, --version
显示版本信息。
-?,--help
打印帮助信息。
使用示例
非资源池化模式
vb_controldata $PGDATA
显示内容如下所示:
pg_control version number: 923
Catalog version number: 201611171
Database system identifier: 5932366688327085683
Database cluster state: in production
pg_control last modified: Tue 18 Apr 2023 02:24:31 PM CST
Latest checkpoint location: 0/D5BD6FC8
Prior checkpoint location: 0/D5BADC88
Latest checkpoint's REDO location: 0/D5BD6F48
Latest checkpoint's TimeLineID: 1
Latest checkpoint's full_page_writes: off
Latest checkpoint's NextXID: 1382379
Latest checkpoint's NextOID: 33955
Latest checkpoint's NextMultiXactId: 2
Latest checkpoint's NextMultiOffset: 0
Latest checkpoint's oldestXID: 11294
Latest checkpoint's oldestXID's DB: 16553
Latest checkpoint's oldestActiveXID: 1382379
Latest checkpoint's remove lsn: 0/C5
Time of latest checkpoint: Tue 18 Apr 2023 02:24:31 PM CST
Minimum recovery ending location: 0/0
Backup start location: 0/0
Backup end location: 0/0
End-of-backup record required: no
Current wal_level setting: hot_standby
Current max_connections setting: 250
Current max_prepared_xacts setting: 200
Current max_locks_per_xact setting: 255
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 128
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
Database system TimeLine: 18
以上控制信息的内容解释如下:
- pg_control version number:控制文件版本号。
- Catalog version number:系统表版本号,格式是yyyymmddN,N代表yyymmdd当天改变的次数。
- Database system identifier:数据库系统号,这个标识串是一个64bit的整数。
- Database cluster state:实例的状态。数据库包含的状态如下所示:
- starting up:数据库正在启动状态。
- shut down:数据库实例(非Standby)正常关闭后控制文件中就是此状态。
- shut down in recovery:Standby实例正常关闭后控制文件中就是此状态。
- shutting down:正常停库时,先做checkpoint,开始做checkpoint时,会把状态设置为此状态,做完后把状态设置为shut down。
- in crash recovery:数据库实例非异常停止后,重新启动后,会先进行实例的恢复,在实例恢复时的状态就是此状态。
- in archive recovery:Standby实例正常启动后,就是此状态。
- in production:数据库实例正常启动后就是此状态。
- pg_control last modified:控制文件最后更新的时间。
- Latest checkpoint location:数据库异常停止后再重新启动时,需要做实例恢复,实例恢复的过程是从WAL日志中,找到最后一次的checkpoint点,然后读取这个点之后的WAL日志,重新应用这些日志,最后一次的checkpoint点的信息记录在Latest checkpont项中。
- Latest checkpoint's REDO location:数据库日志文件上检查点。
- Latest checkpoint's NextXID:下一个事务ID。
- Latest checkpoint's NextOID:下一个OID。
- Latest checkpoint's TimeLineID:当前时间线。
- Latest checkpoint's full_page_writes:数据库参数full_page_writes是否启动。
- Latest checkpoint's NextMultiXactId:多事务ID。
- Latest checkpoint's NextMultiOffset: 多事务偏移量。
- Time of latest checkpoint:最后一次执行检查点时间。
- Backup start/end location:记录了一个WAL日志的位置,用于主备库同步。
- End-of-backup record required:记录了备库恢复过程中的一些中间状态。
- Database block size:数据块的大小。
- WAL block size::16384 WAL日志块的大小。
- Bytes per WAL segment:WAL日志文件的大小。
- Maximum length of identifiers:数据库对象名称的最大长度,如表名、索引名的最大长度,目前是128。
- Maximum columns in an index:一个索引最多多少列,目前为32个。
- Maximum size of a TOAST chunk:TOAST chunk的最大长度。TOAST是解决当列的内容太长,在一个数据块中存不下时的一种行外存储的方式。
- Date/time type storage:代表Date/time类型是用64bit的长整数表示。
- Float4/Float8 argument passing:Float4/Float8类型的参数是传值还是传引用。
- Data page checksum version:数据块checksum的版本,默认为0,数据块没有使用checksum。初始化数据库时加了
-k
参数,才会在数据块上启用checksum功能。
资源池化模式
vb_controldata --enable-dss -I instance_id --socketpath=SOCKETPATH VGDATA
在资源池化模式,-I后面的参数为要查看的控制文件对应节点的节点id,VGDATA为集群的共享数据目录(例如数据目录为+data)。
当输入包含VGDATA时,会自动开启--enable-dss。
可不指定--socketpath,默认为$DSS_HOME/.dss_unix_d_socket。
使用该工具时请保证dssserver启动,如果使用了cm组件,且本节点处于stop状态时,请先开启dss手动控制模式,再启动dssserver:
export DSS_MAINTAIN=TRUE //开启dss手动控制模式 dssserver -D $DSS_HOME & export DSS_MAINTAIN=FALSE //关闭dss手动控制模式