摘要:
pg采用的是常见的C/S架构,服务器端叫做postgres(服务器端的主程序和进程都叫这个名字,启动pg之后在服务器上至少可以看到6个postgres进程,对应于pg的几个主要的模块,并且每增加一个客户端连接,服务器段就会增加一个postgres进程来和客户端交互),管理所有的数据文件、接受客户端的连接、执行客户端提交的操作。客户端则可以是JDBC/ODBC、psql命令行客户端、嵌入式SQL客户端等等。
pg的目录结构很清晰,一个是安装目录,默认在/usr/local/pgsql下。另外一个就是存放数据文件和配置文件的目录,文档中叫做cluster's data directory,内核分析中译作数据集簇。数据集簇通常叫做PGDATA。每个数据库实例都会有一个PGDATA,每台机器上可以并存多个不同的实例
1.根目录:
bin include lib share
2.各个目录的整体内容:
(1)bin: 二进制可执行文件目录,此目录下有postgres,psql等可执行程序.
(2)include: 头文件目录.
(3)lib 动态库目录,PG程序运行需要的动态库都在此目录下,如libpg.so.
(4) share: 此目录下存放有文档和配置模板文件,一些扩展包的sql文件,在此目录的子目录extension下.
3.bin目录下,主要包括:服务端应用程序,客户端应用程序,扩展模块程序,其他四个部分.
(1)服务端应用程序: 指用于控制和管理服务相关的应用程序,这些程序智能用于在数据库服务器所在主机上使用,常见的为 initdb,pg_ctl,createdb,createuser,dropdb,dropuser等。initdb用于创建新的postgresql数据集簇(实例),pg_ctl用于启动、停止或者重启postgresql服务,查看服务状态。
语法:
./initdb -D ../PGDATA [-W]
./pg_ctl -D ../PGDATA start\stop\restart
./crestedb\createuser mydb
./dropdb\dropuser mydb
(2)客户端应用程序:指用于连接数据库,设置运行参数,操作数据的应用程序。这些应用一般可以在任何主机上运行,与数据库服务器所处位置无关。其中四个常用工具:psql,pg_dump,pg_restore等.
./psql mydb #连接数据库
pg_dump [connection-option...] [option...] [dbname] #备份数据库
pg_restore [connection-option...] [option...] [dbname] #恢复数据库
(3)扩展数据库:
扩展模块位于源码包中的contrib目录下,里面有些扩展模块编译后生成一个应用程序放在bin目录下,如pg bench(压力测试工具),pg_test_fsync(pg_test_fsync为 wal_sync_method报告以微秒计的平均文件同步操作时间, 也能被用来提示用于优化commit_delay值的方法),oid2name(解析一个PostgreSQL数据目录中的 OID 和文件结点)
这些扩展模块程序默认在编译时是没有加载的,需要时进入相应目录编译和安装
4.share 目录:包括doc,locale,postgresql文件.
doc:保存文档模板文件.
locale:储存语言包.
postgresql:配置模板文件
(1)extension:扩展包的sql文件.
(2)timezone:时区文件.
(3)timezonesets:时区设置文件
(4)tsearch_data: 全局索引.
以及pg_hba.conf ,pg_ident.conf,pg_service.conf 等配置模板文件.
5.PGDATA:数据目录.
一般使用PGDATA指向数据目录的根目录,在安装时指定,所以,安装时选择一个目录作为数据目录的根目录,而且,每个数据库实录都需要有这个一个目录,目录初始化用initdb来完成。完成后根目录下就会生成3个配置文件
postgresql.conf : 数据库实例的主配置文件,基本上所有的配置参数都在此文件中;
pg_hba.conf: 认证配置文件,配置了允许哪些ip访问数据库,认证的方法是什么等信息;