繁体   English   中英

PostgreSQL的initdb如何工作? 如何使用它进行测试?

[英]How does initdb of PostgreSQL work? How to use it for testing?

关于集成测试(包括Postgres数据库)的许多建议都说,我可以在RAM磁盘中initdb一个新的整个群集并在其中进行工作。

据我了解, initdb是一个新文件夹,类似于与数据库相关的东西。

根据Postgres的文档:

initdb创建一个新的PostgreSQL数据库集群。 数据库集群是由单个服务器实例管理的数据库的集合。

是否创建新服务器? 还是新的数据库?

数据库服务器

创建数据库集群包括以下步骤:创建数据库数据将在其中驻留的目录;生成共享目录表(属于整个集群而不是任何特定数据库的表);以及创建template1和Postgres数据库。 以后创建新数据库时,将复制template1数据库中的所有内容。 (因此,template1中安装的所有内容都会自动复制到以后创建的每个数据库中。)Postgres数据库是默认数据库,供用户,实用程序和第三方应用程序使用。

上面的句子是否意味着从现在开始在任何创建的数据库上将其存储在该新的“集群”中? 如果没有,如何在这样的RAM磁盘群集中创建表?


如何使用它进行测试?

在您的映像使用的术语(来自pgAdmin?)中, initdb将为新的“服务器”创建数据目录。

在PostgreSQL中,这不称为服务器,而是数据库集群 它具有一个数据目录,该数据目录是使用initdb创建的。 如果使用pg_ctl start集群,则会启动PostgreSQL服务器进程(称为postmaster ),该进程监听传入的连接并启动在数据目录上工作的后端进程

一台机器上可以有多个PostgreSQL数据库集群,您只需为其提供不同的端口号即可。

运行initdb为集成测试创建数据库集群应该没有问题。 initdb之后,您必须适当地编辑postgresql.conf (例如,设置port ),并使用pg_clt start -D <data directory>启动postmaster。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM