initdb 命令用于创建一个新的PostgreSQL数据库集簇
使用的代码版本为:9.6.10
先看一下命令的用法
initdb [option…] [–pgdata | -D] directory
通过-D参数可以指定数据库集簇的目录,其他参数包括字符集,区域等可以参考官方手册
http://www.postgres.cn/docs/9.6/app-initdb.html
initdb大概可以分为以下几个阶段:
1.初期准备
2. 参数解析
3. 环境设定
4. 初期化集簇
先看初期准备:
1.初期准备主要是相关列表的初期化,比如:
pgdata下的目录列表
static const char *const subdirs[] = {
"global",
"pg_xlog/archive_status",
"pg_clog",
"pg_commit_ts",
"pg_dynshmem",
"pg_notify",
"pg_serial",
"pg_snapshots",
"pg_subtrans",
"pg_twophase",
"pg_multixact",
"pg_multixact/members",
"pg_multixact/offsets",
"base",
"base/1",
"pg_replslot",
"pg_tblspc",
"pg_stat",
"pg