[英]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.