2.2.3 initdb的执行过程

执行initdb程序时,将从initdb.c文件中的main函数开始执行,main函数的执行流程如图2-3所示。initdb执行时将按照顺序执行下列工作:

1)根据用户输入的命令行参数获取输入的命令名。

2)设置系统编码为LC_ALL,查找执行命令的绝对路径并设置该路径。

3)设置环境变量(pg_data等),获取系统配置文件的源文件路径(postgres.bki、postgresql.conf.sample等文件),并检查该路径下各文件的可用性。

4)设置中断信号处理函数,对终端命令行SIGHUP、程序中断SIGINT、程序退出SIGQUIT、软件中断SIGTERM和管道中断SIGPIPE等信号进行屏蔽,保证初始化工作顺利进行。

5)创建数据目录,以及该目录下一些必要的子目录,如base、global、base/1等。

6)测试当前服务器系统性能,由测试结果创建配置文件postgresql.conf、pg_hba.conf、pg_ident.conf,并对其中定义的参数做一些设置。

7)在bootstrap模式下创建数据库template1,存储在数据目录的子目录base/1/中。

8)创建系统视图、系统表TOAST表等,复制template1来创建template0和postgres,这些操作都用普通的SQL命令来完成。

9)打印操作成功等相关信息,退出。

initdb是PostgreSQL中一个独立的程序,它的主要工作就是对数据集簇进行初始化,创建模板数据库和系统表,并向系统表中插入初始元组。在这以后,用户创建各种数据库、表、视图、索引等数据库对象和进行其他操作时,都是在模板数据库和系统表的基础上进行的。

图2-3 initdb的运行流程

【责任编辑:云霞 TEL:(010)68476606】

results matching ""

    No results matching ""