Подключение к базе данных в кластере PostgreSQL

К кластерам облачных баз данных PostgreSQL (Managed Databases) можно подключиться двумя способами:

  • через интернет, если для подключения к кластеру используется публичная сеть;
  • из виртуальных машин облачной платформы Selectel, если для подключения используется локальная сеть.

В обоих случаях доступна возможность подключения по IP или DNS-имени с использованием SSL протокола.

Способы подключения

Подключиться к кластеру баз данных можно несколькими способами:

  • запустив терминальную программу PostgreSQL psql, в которой можно интерактивно выполнять команды SQL;
  • используя графические инструменты, например, pgAdmin или офисный пакет с поддержкой ODBC или JDBC, позволяющий создавать базы данных и управлять ими;
  • из вашего приложения, используя один из доступных языковых интерфейсов.

Порты для подключения

  • 6432 – порт для подключения к мастер-ноде вне зависимости от выбранного адреса подключения;
  • 5433 – порт для подключения к выбранной ноде через пулер соединений;
  • 5432 – порт для подключения к выбранной ноде напрямую.

Скачивание SSL-сертификата

Linux

Введите команду:

mkdir ~/.postgresql
wget "https://storage.dbaas.selcloud.ru/CA.pem" -O ~/.postgresql/root.crt 
chmod 0600 ~/.postgresql/root.crt

Windows

Скачайте CA-сертификат из настроек кластера базы данных и поместите его в папку %APPDATA%\postgresql\

Подключение через утилиту psql

Без SSL

Подключиться к базе данных <имя базы данных> можно, введя команду:

psql "host=IPАдресСервера1, IPАдресСервера2, IPАдресСервера3 \
      port=6432 \
      dbname=ИмяБазыДанных \
      user=ИмяПользователяБазыДанных" 

С использованием SSL

Подключиться к базе данных <имя базы данных> можно, введя команду:

psql "host=IPАдресСервера1,IPАдресСервера2,IPАдресСервера3 \
port=6432 \
user=<database user name> \
dbname=<database name> \
sslmode=verify-ca"

Подключение из программного кода

Подключиться к кластеру PostgreSQL, включающему в себя дополнительные реплики, из программного кода можно несколькими способами:

  • используя адрес балансировщика нагрузки, подключенного к хостам кластера;
  • путем реализации выбора хоста в коде своего приложения;
  • используя драйвер, поддерживающий подключение к нескольким хостам.

Пример подключения для Python библиотеки psycopg2 без использования SSL

psycopg2.connect('user=user1 password=secret'
 	             'host=ip_address1,ip_address2,ip_address3'
 	             'port=6432 dbname=db1')

Пример подключения для Python библиотеки psycopg2 c использованием SSL

psycopg2.connect('user=user1 password=secret'
                 'host=ip_address1,ip_address2,ip_address3'
                 'port=6432 dbname=db1'
                 'sslmode=verify-ca')