Patroni: инициализация базы данных Postgresql
Инициализация базы данных PostgreSQL с помощью Patroni — это важный процесс, который происходит, когда кластер Patroni создаёт новую базу данных для своих членов (нод) при первом запуске. Инициализация базы данных может происходить автоматически при первом запуске Patroni, если не существует данных в указанных директориях.
Основные шаги инициализации PostgreSQL в Patroni:
- Конфигурация Patroni:
- В файле конфигурации Patroni (
patroni.yml
) указываются ключевые параметры для PostgreSQL, такие как пути к каталогам данных, параметры подключения и конфигурации. - Например:
123456postgresql:data_dir: /var/lib/postgresql/dataparameters:listen_addresses: '0.0.0.0'port: 5432
- В файле конфигурации Patroni (
- Проверка состояния базы данных:
- Patroni проверяет, существует ли уже инициализированная база данных в директории, указанной в параметре
data_dir
. Если директория пуста или не существует, Patroni инициирует процесс инициализации.
- Patroni проверяет, существует ли уже инициализированная база данных в директории, указанной в параметре
- Процесс инициализации:
- Если база данных не инициализирована, Patroni использует команду
initdb
, встроенную в PostgreSQL, для создания структуры базы данных. - В этом процессе создаются необходимые системные каталоги PostgreSQL, файлы конфигурации, такие как
postgresql.conf
иpg_hba.conf
, а также базы данных по умолчанию, включаяpostgres
.
- Если база данных не инициализирована, Patroni использует команду
- Настройка конфигурации:
- Patroni применяет параметры, указанные в файле конфигурации (
patroni.yml
), к базе данных. Это включает настройки таких параметров, какlisten_addresses
,max_connections
,shared_buffers
и других. - Patroni также может управлять конфигурацией репликации и failover.
- Patroni применяет параметры, указанные в файле конфигурации (
- Создание суперпользователя:
- В процессе инициализации Patroni создаёт суперпользователя PostgreSQL, чьи учётные данные также могут быть заданы в конфигурации. Например:
12345678910bootstrap:initdb:- encoding: UTF8- locale: en_US.UTF-8users:admin:password: myadminpasswordoptions:- superuser
- В процессе инициализации Patroni создаёт суперпользователя PostgreSQL, чьи учётные данные также могут быть заданы в конфигурации. Например:
- Bootstrap кластера:
- После успешной инициализации Patroni продолжает процесс bootstrap, который включает создание основной (primary) ноды, которая станет лидером кластера. Если другие ноды настроены как реплики, Patroni настраивает их в режиме репликации.
Инициализация базы данных вручную (если требуется):
Если автоматическая инициализация не происходит, вы можете запустить её вручную через команду patronictl bootstrap
. Например:
1 2 |
patronictl -c /etc/patroni/patroni.yml bootstrap |
Пример секции инициализации базы данных в конфигурации Patroni:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 postgresql: use_pg_rewind: true use_slots: true initdb: - encoding: UTF8 - data-checksums users: admin: password: mysecurepassword options: - superuser - createdb |
Репликация и failover:
Когда кластер Patroni инициализирован, Patroni автоматически управляет репликацией данных между нодами и может переключить роль лидера (primary) на другую ноду в случае отказа текущего лидера.
Таким образом, Patroni автоматизирует процесс инициализации базы данных PostgreSQL и управление кластером, включая процессы репликации, failover, а также настройку и управление конфигурацией базы данных.
Recommended Posts
Пояснение конфига для Pgbouncer
12.02.2024
Конфигурационный шаблон jinja2 для Patroni
11.02.2024