Question: How do you create a new PostgreSQL cluster?


In PostgreSQL, a "cluster" refers to a collection of databases that are managed by a single PostgreSQL server instance. Each cluster includes one or more databases and operates on a separate set of system catalog tables (the pg_catalog schema). Creating a new PostgreSQL cluster involves initializing a new data directory with its own configuration files.

To create a new PostgreSQL cluster, you typically use the initdb command. This command initializes a new database cluster by creating the necessary directory structure and setting up initial configuration files and system catalogs. Here's how you can create a new cluster:

  1. Choose a Data Directory: Decide where you want your cluster’s data directory to be located. This directory will contain all files and subdirectories related to the cluster.

  2. Run the initdb Command: Use the initdb command to initialize the cluster. You need to specify the data directory with the -D option.

initdb -D /path/to/your/new/data_directory
  1. Start the PostgreSQL Server: After initializing the cluster, you can start the PostgreSQL server using the pg_ctl command. Specify the data directory and the desired action (start).
pg_ctl -D /path/to/your/new/data_directory -l logfile start
  1. Connect to the New Cluster: Once the server is running, connect to your newly created cluster using psql or any other PostgreSQL client by specifying the appropriate port and host (if not default).
psql -h localhost -d postgres

Customizing the Cluster Initialization

You can also pass additional options to initdb to customize the initialization process:

  • Encoding and Locale: You can specify the default database encoding and locale for the new cluster.
initdb -D /path/to/your/new/data_directory --encoding=UTF8 --locale=en_US.UTF-8
  • Authentication: Set the default authentication method for local connections.
initdb -D /path/to/your/new/data_directory --auth-local=md5

Creating multiple clusters on a single machine is possible, but each must listen on a different port and have its own unique data directory.

Overall, managing multiple PostgreSQL clusters involves careful consideration of resource allocation, maintenance, and monitoring to ensure they do not adversely affect each other's performance.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.