5. Используя утилиту basebackup создать базовую резервную копию с правами владения postgres (либо любого пользователя с соответствующими разрешениями).
5. Поскольку enable_pool_hba указан в режиме on, это значит, что Pgpool-II будет использовать pool_hba.conf для аутентификации клиента. Поэтому открываем на редактирование pool_hba.conf
```
sudo nano /etc/pgpool2/pool_hba.conf
```
6. Добавить строку
```
host all all <ipподсети> md5
```
7. Pgpool-II извлекает пароль пользователя из файла pool_passwd
```
sudo nano /etc/pgpool2/pool_passwd
```
Файл паролей представляет собой текстовый файл следующего формата:
```
пользователь1:пароль1
пользователь2:пароль2
```
Файл может содержать 3 типа паролей. Pgpool-II идентифицирует тип формата пароля по его префиксу, поэтому каждая запись пароля в pool_passwd должна иметь префикс формата пароля.
- Обычный текст : пароль в текстовом формате с использованием префикса TEXT (например, TEXTmypassword ) .
- Зашифрованный пароль AES256 : зашифрованный пароль AES256, используя префикс AES (например, AESmzVzywsN1Z5GABhSAhwLSA== ) .
- Хешированный пароль MD5 : хешированный пароль MD5, используя префикс md5 (например, md5270e98c3db83dbc0e40f98d9bfe20972 ) .
8.В примере в качестве пароля используется обычный текст (пароль q)
```
postgres:TEXTq
```
9. Запустить pgpool
```
sudo pgpool -n
```
10. Убедиться, что процесс успешно запущен и подключены 2 ноды с разными индексами. В данном примере для primary node установлен индекс 0, а для standBy ноды установден индекс 1
```
2023-09-14 06:08:08.339: main pid 3941: LOG: find_primary_node: primary node is 0
2023-09-14 06:08:08.339: main pid 3941: LOG: find_primary_node: standby node is 1
2023-09-14 06:08:08.343: pcp_main pid 3977: LOG: PCP process: 3977 started
2023-09-14 06:08:08.343: sr_check_worker pid 3978: LOG: process started
2023-09-14 06:08:08.345: health_check pid 3979: LOG: process started
2023-09-14 06:08:08.349: health_check pid 3980: LOG: process started
2023-09-14 06:08:08.559: main pid 3941: LOG: pgpool-II successfully started. version 4.3.5 (tamahomeboshi)
2023-09-14 06:08:08.662: main pid 3941: LOG: node status[0]: 1
2023-09-14 06:08:08.662: main pid 3941: LOG: node status[1]: 2
```
11. При старте pgpool возможны следующие ошибки:
- файл pgpool_status не найден / нет прав
- pgpool стартует, но ноды имеют одинаковый индекс и балансировка идет только на первую ноду (как проверить балансировку указано ниже) <br/>
Проблема решилась удалением файла pgpool_status, откуда pgpool пытался считывать статусы для нод.
```
cd /var/log/postgresql
rm -rf pgpool_status
sudo systemctl restart postgresql
sudo pgpool -n
```
## 6. Тестирование балансировки PgPool-II
1. При запущенном pgpool (он должен выводить логи), открыть еще один терминал. Зайти в базу, используя Pgpool-II на 9999-порте, выполнив команду
4. Выполнить команды Insert / Update / Delete (в качесве примера была внесена запись в таблицу public.t_company). Убедиться, что запрос приходит на primary-сервер (нода с индексом 0).
```
2023-09-14 07:04:31.800: DBeaver 23.1.2 - Main <postgres> pid 4805: LOG: DB node id: 0 backend pid: 4814 statement: Execute: INSERT INTO public.t_company (id,caption,id_company_type)
VALUES ($1,$2,$3)
```
5. Выполинть команду Select. Убедиться, что запрос приходит на standBy-сервер (нода с индексом 1).
```
2023-09-14 07:53:19.275: DBeaver 23.1.2 - Main <postgres> pid 5069: LOG: DB node id: 1 backend pid: 2745 statement: Execute: SELECT x.* FROM public.t_company x