This section describes the process for converting a standalone PostgreSQL instance into a Patroni cluster.
To deploy a Patroni cluster without using a pre-existing PostgreSQL instance, see Running and Configuring instead.
Procedure
A Patroni cluster can be started with a data directory from a single-node PostgreSQL database. This is achieved by following closely these steps:
- Manually start PostgreSQL daemon
- Create Patroni superuser and replication users as defined in the authentication section of the Patroni configuration. If this user is created in SQL, the following queries achieve this:
-
Start Patroni (e.g.
patroni /etc/patroni/patroni.yml
). It automatically detects that PostgreSQL daemon is already running but its configuration might be out-of-date. -
Ask Patroni to restart the node with
patronictl restart cluster-name node-name
.
FAQ
- During Patroni startup, Patroni complains that it cannot bind to the PostgreSQL port.
You need to verify
listen_addresses
and
port
in
postgresql.conf
and
postgresql.listen
in
patroni.yml
. Don’t forget that
pg_hba.conf
should allow such access.
-
After asking Patroni to restart the node, PostgreSQL displays the error message
could not open configuration file "/etc/postgresql/10/main/pg_hba.conf": No such file or directory
It can mean various things depending on how you manage PostgreSQL configuration. If you specified
postgresql.config_dir
, Patroni generates the
pg_hba.conf
based on the settings in the
bootstrap
section only when it bootstraps a new cluster. In this scenario the
PGDATA
was not empty, therefore no bootstrap happened. This file must exist beforehand.