FQDNs of PostgreSQL hosts
To connect to a host, you need its fully qualified domain name (FQDN). You can get it using one of the following methods:
-
In the management console
, copy the cluster connection command (it contains the host’s FQDN). To get the command, go to the cluster page and click Connect. -
Look up the FQDN in the management console:
- Navigate to the cluster page.
- Navigate to Hosts.
- Copy the Host FQDN column value.
In addition to regular FQDNs, you can use special FQDNs and aliases to connect to a cluster.
Special FQDNs
Managed Service for PostgreSQL provides the following special FQDNs:
In multiple-host clusters, special FQDNs may for some time (up to 10 minutes) point to the old host, even if it has changed its role (e.g., from a master to a replica). If using a special FQDN which points to the current master, some write requests may fail if routed to the replica. This is because it takes time to update DNS records for special FQDNs. If your write request returns an error, repeat it later.
Current master
An FQDN in c-<cluster_ID>.rw.mdb.yandexcloud.net format always points to the current master host in the cluster. You can get the cluster ID from the folder’s cluster list.
When connecting to this FQDN, you can perform read and write operations.
Warning
Use master host special FQDN-based connections only for processes that can cope with database being unavailable for writing for up to 10 minutes.
Most recent replica
An FQDN in c-<cluster_ID>.ro.mdb.yandexcloud.net format points to the replica that is most up-to-date with the current master. You can get the cluster ID with the list of clusters in the folder.
Specifics:
- When connecting to this FQDN, you can only perform read operations.
- If there are no active replicas in the cluster, this FQDN will point to the current master host.
- Replicas with a manually configured replication source cannot be selected as most up-to-date replicas when using this FQDN.
Aliases
With aliases, you can access the master, most recent replica, or each particular host of your Managed Service for PostgreSQL cluster using a stable, human-readable name no matter what their internal FQDNs are. Aliases are user-defined and can be used alongside regular and special FQDNs.
Cluster alias
A cluster alias always points to the current master host in the Managed Service for PostgreSQL cluster. It has the following format:
c-<short_name>-pg-<folder_ID>.rw.mdb.yandexcloud.net
Where <short_name> is a name set by the user when creating the alias.
A cluster alias must be unique within the folder. You can assign only one alias per cluster.
With cluster aliases, you can switch workloads from one cluster to another, e.g., after restoring from a backup. To do this, simply reassign the alias to the new cluster, no application-side updates required.
Warning
After a master failover, DNS records may take up to 10 minutes to update. During this time, the cluster alias may continue pointing to the old host, which has already become a replica. Use cluster aliases only for processes that allow up to 10 minutes of database write downtime.
Host aliases
An alias pointing to a specific cluster host has the following format:
h-<host_short_name>-pg-<folder_ID>.mdb.yandexcloud.net
Where <host_short_name> is a name set by the user when creating the host alias.
Each host alias must be unique within the folder. You can assign only one alias per host.
Selecting an FQDN and cluster connection method
To connect to a cluster, you can use the following:
If the cluster consists of several hosts, keep in mind that the current master can become a replica at any moment, and vice versa.
Warning
If automatic failover promotes a host without public access to master or most up-to-date replica, that host will be unreachable from the internet. To avoid this, enable public access for all cluster hosts.
Use one of the following methods to connect to the master host with read and write access:
-
Connect using the special FQDN pointing to the current master.
After a master failover, this FQDN may temporarily point to the previous master, now a replica, due to the time required for the DNS record to update.
Therefore, applications using this FQDN must be designed to handle temporary master unavailability. For example, they should retry write requests after a short delay.
Connection example
In this example, we use the
c9qash3nb1v9********cluster ID:psql "host=c-c9qash3nb1v9********.rw.mdb.yandexcloud.net \ port=6432 \ sslmode=verify-full \ dbname=<DB_name> \ user=<username>" -
Connect by listing all cluster hosts and specifying
target_session_attrs=read-write.Connection example
Here, we list all the cluster’s hosts.
The host IDs are
rc1a-be***.mdb.yandexcloud.net,rc1b-5r***.mdb.yandexcloud.net, andrc1d-t4***.mdb.yandexcloud.net:psql "host=rc1a-be***.mdb.yandexcloud.net,rc1b-5r***.mdb.yandexcloud.net,rc1d-t4***.mdb.yandexcloud.net \ port=6432 \ sslmode=verify-full \ dbname=<DB_name> \ user=<username> \ target_session_attrs=read-write"
Use one of the following methods to connect to the host with read access:
-
Connect using a special FQDN pointing to the most up-to-date replica.
Connection example
In this example, we use the
c9qash3nb1v9********cluster ID:psql "host=c-c9qash3nb1v9********.ro.mdb.yandexcloud.net \ port=6432 \ sslmode=verify-full \ dbname=<DB_name> \ user=<username>" -
Connect by listing all cluster hosts and specifying
target_session_attrs=any.Connection example
Here, we list all the cluster’s hosts.
The host IDs are
rc1a-be***.mdb.yandexcloud.net,rc1b-5r***.mdb.yandexcloud.net, andrc1d-t4***.mdb.yandexcloud.net:psql "host=rc1a-be***.mdb.yandexcloud.net,rc1b-5r***.mdb.yandexcloud.net,rc1d-t4***.mdb.yandexcloud.net \ port=6432 \ sslmode=verify-full \ dbname=<DB_name> \ user=<username> \ target_session_attrs=any"
Note
You can use the target_session_attrs setting when connecting via a client utilizing the libpq library.
Support for the read-write value in this setting was introduced in libpq version 10
How to update the library version used by psql
- For Debian-based Linux distributions, install the
postgresql-client-10package or a newer version from the official APT repository (or another source of your choice). - For RPM-based operating systems, use the PostgreSQL distribution from the yum repository
.