This commit is contained in:
parent
f7dd86f1d3
commit
4396237ac2
@ -453,3 +453,107 @@ fi
|
|||||||
- `SHOW shared_preload_libraries;` - список библиотек, которые были загружены при старте PostgreSQL с помощью параметра `shared_preload_libraries` в `postgresql.conf`
|
- `SHOW shared_preload_libraries;` - список библиотек, которые были загружены при старте PostgreSQL с помощью параметра `shared_preload_libraries` в `postgresql.conf`
|
||||||
- `pg_config --pkglibdir` - показывает путь к каталогу, где находятся библиотеки пг (shared libraries).
|
- `pg_config --pkglibdir` - показывает путь к каталогу, где находятся библиотеки пг (shared libraries).
|
||||||
|
|
||||||
|
### Настройка репликации Master-Slave
|
||||||
|
|
||||||
|
- `apt install postgresql postgresql-contrib -y` - устанавливаем СУБД на обе машины
|
||||||
|
- `systemctl status postgresql`
|
||||||
|
|
||||||
|
#### Настройка Master
|
||||||
|
```conf
|
||||||
|
# /etc/postgresql/16/main/postgresql.conf
|
||||||
|
listen_addresses = 'localhost,150.241.66.94' # 150.241.66.94 адрес ВМ, на которой slave
|
||||||
|
wal_level = replica # минимальный уровень необходимый для репликации
|
||||||
|
max_wal_senders = 5 # максимальное количество подключений для передачи WAL, максимум 5 слейвов
|
||||||
|
wal_keep_size = 1024MB
|
||||||
|
hot_standby = on # разрешаем селекты с реплики, по умолчанию нельзя
|
||||||
|
archive_mode = on # включаем архивирование WAL
|
||||||
|
archive_command = 'find /var/lib/postgresql/16/main/archive -type f -mtime +7 -delete; gzip < %p > /var/lib/postgresql/16/main/archive/%f.gz'
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
# /etc/postgresql/16/main/pg_hba.conf
|
||||||
|
# файл pg_hba.conf (Host-Based Authentication) управляет доступом к PostgreSQL, определяя, какие пользователи могут подключаться
|
||||||
|
# c каких IP-адресов и каким способом аутентификации
|
||||||
|
|
||||||
|
host replication replicator 192.168.1.2/32 scram-sha-256
|
||||||
|
```
|
||||||
|
|
||||||
|
Создадим роль для репликации, выполнить:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo -u postgres psql
|
||||||
|
```
|
||||||
|
```sql
|
||||||
|
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD '<password>';
|
||||||
|
```
|
||||||
|
```sql
|
||||||
|
\q
|
||||||
|
```
|
||||||
|
Открыть «MASTER» базу данных, выполнить скрипт на обновление информации о настройках доступа из файла `pg_hba.conf`:
|
||||||
|
SELECT pg_reload_conf();
|
||||||
|
|
||||||
|
??? info "Сжатый WAL"
|
||||||
|
PostgreSQL не умеет автоматически разархивировать сжатые WAL-файлы.
|
||||||
|
Если WAL-логи в сжатом формате (.gz), то перед восстановлением их нужно разархивировать вручную в `restore_command`.
|
||||||
|
|
||||||
|
Если archive_command на master сжимает WAL при архивации, например:
|
||||||
|
|
||||||
|
archive_command = 'gzip < %p > /var/lib/postgresql/archive/%f.gz'
|
||||||
|
|
||||||
|
То restore_command на slave должен разархивировать WAL перед восстановлением:
|
||||||
|
|
||||||
|
restore_command = 'gunzip -c /var/lib/postgresql/archive/%f.gz > %p'
|
||||||
|
|
||||||
|
Как это работает?
|
||||||
|
|
||||||
|
restore_command ищет запрашиваемый WAL-файл в архиве.
|
||||||
|
Если он найден в сжатом виде (.gz), команда gunzip -c разархивирует его в нужное место (%p).
|
||||||
|
|
||||||
|
slave применяет этот WAL-файл и продолжает репликацию.
|
||||||
|
|
||||||
|
#### Настройка Slave
|
||||||
|
|
||||||
|
По умолчанию реплику (slave) нельзя записывать данные, потому что она работает в режиме только для чтения (read-only), на то она и слейв реплика.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl stop postgresql
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
sudo -u postgres rm -rf /var/lib/postgresql/16/main/*
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
sudo -u postgres pg_basebackup -h 192.109.139.92 -U replicator -D /var/lib/postgresql/16/main -P -R --wal-method=stream` # 192.109.139.92 - ip мастера
|
||||||
|
```
|
||||||
|
|
||||||
|
Если файл standby.signal присутствует в директории данных ($PGDATA) при запуске PostgreSQL, сервер не будет принимать записи и будет получать данные с Master.
|
||||||
|
Он создаётся автоматически при запуске pg_basebackup с флагом -R или вручную.
|
||||||
|
Если удалить standby.signal и перезапустить PostgreSQL, сервер станет обычным Master (потеряет связь с репликой).
|
||||||
|
|
||||||
|
После выполнения pg_basebackup в `/var/lib/postgresql/16/main/` на Slave должен появиться файл standby.signal. Он сообщает PostgreSQL, что сервер работает как Standby (slave).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl start postgresql
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
sudo systemctl status postgresql
|
||||||
|
```
|
||||||
|
```sql
|
||||||
|
# проверить репликацию на мастере
|
||||||
|
SELECT * FROM pg_stat_replication;
|
||||||
|
```
|
||||||
|
```sql
|
||||||
|
# проверить репликацию на слейве
|
||||||
|
SELECT * FROM pg_stat_wal_receiver;
|
||||||
|
```
|
||||||
|
|
||||||
|
На slave после окончания загрузки бд и запуска postgres проверить наличие файла `/var/lib/pgsql/16/data/standby.signal`, а также наличие строки подключения к серверу master в файле `/var/lib/pgsql/16/data/postgresql.auto.conf`
|
||||||
|
|
||||||
|
Открыть master базу данных, выполнить скрипт на проверку состояния репликации (скрипт должен вернуть строку, в поле «state» должно быть значение «streaming»)
|
||||||
|
```sql
|
||||||
|
select * from pg_stat_replication;
|
||||||
|
```
|
||||||
|
|
||||||
|
Открыть slave базу данных, выполнить скрипт на проверку состояния репликации (скрипт должен вернуть строку, в поле «status» должно быть значение «streaming»)
|
||||||
|
```sql
|
||||||
|
select * from pg_stat_wal_receiver;
|
||||||
|
```
|
@ -4,6 +4,92 @@
|
|||||||
- [**Базовые команды docker-compose**](https://github.com/python-dev-blog/docker-compose-demo)
|
- [**Базовые команды docker-compose**](https://github.com/python-dev-blog/docker-compose-demo)
|
||||||
- [**Линтер для Docker**](https://github.com/hadolint/hadolint)
|
- [**Линтер для Docker**](https://github.com/hadolint/hadolint)
|
||||||
|
|
||||||
|
### Команды
|
||||||
|
|
||||||
|
- **`docker ps --format "{{.Names}}"`** - только имена контейнеров
|
||||||
|
|
||||||
|
- `docker ps -s` - показать размеры контейнеров (`-l` - последний запущенный контейнер)
|
||||||
|
- `docker history <image_name>` - история создания образа (`--no-trunc` - не обрезать вывод)
|
||||||
|
- `docker volume ls` - список всех Docker томов на хосте
|
||||||
|
- `docker volume inspect <volume_name>` - информацию о конкретном docker томе, например, его местоположение, размер и настройки и тп
|
||||||
|
- `docker inspect <container_name> | grep -i volumes` - ищет информацию о томах, которые примонтированы к контейнеру
|
||||||
|
- `docker port <container_name>` - показывает маппинг портов
|
||||||
|
- `docker inspect <container_name> | grep -i port` - подробности о проброшенных портах
|
||||||
|
- `docker inspect <container_name> | grep -i mount` - показывает информацию о монтированиях (volumes, bind mounts, tmpfs)
|
||||||
|
??? tip "Монтирования в Docker"
|
||||||
|
1. Named Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/`
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
volumes:
|
||||||
|
- db_data:/var/lib/postgresql/data
|
||||||
|
volumes:
|
||||||
|
db_data:
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Anonymous Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/`, но вместо имени хэш, например, `/var/lib/docker/volumes/2f4b7c3e8e1a7d9b8b12d34c7e4b1234/`
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: nginx
|
||||||
|
volumes:
|
||||||
|
- /usr/share/nginx/html
|
||||||
|
|
||||||
|
3. Bind Mount - привязка к директории или файлу на хосте. Если мы прокидываем файл и его не существует Docker создаст каталог.
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: nginx
|
||||||
|
volumes:
|
||||||
|
- ./html:/usr/share/nginx/html:ro
|
||||||
|
```
|
||||||
|
`:ro` - контейнеру том доступен только для чтения, по умолчанию доступен и на запись (`:rw`)
|
||||||
|
|
||||||
|
4. Tmpfs Mount - данные хранятся в оперативке (RAM), а не на диске, при перезапуске, удалении контейнера данные будут потеряны.
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
cache:
|
||||||
|
image: redis
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
```
|
||||||
|
|
||||||
|
5. External Volume - внешний том, например, NFS.
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: nginx
|
||||||
|
volumes:
|
||||||
|
- nfs_data:/usr/share/nginx/html
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
nfs_data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: nfs
|
||||||
|
o: addr=192.168.1.100,rw
|
||||||
|
device: :/exported/path
|
||||||
|
```
|
||||||
|
|
||||||
|
- `docker stats` - статистика по запущенным контейнерам
|
||||||
|
- CONTAINER ID - Уникальный идентификатор контейнера.
|
||||||
|
- NAME - Имя контейнера.
|
||||||
|
- CPU % - Использование CPU в процентах.
|
||||||
|
- MEM USAGE / LIMIT - Использование памяти / установленный лимит.
|
||||||
|
- MEM % - Доля использования памяти от лимита.
|
||||||
|
- NET I/O - Сетевой ввод/вывод данных.
|
||||||
|
- BLOCK I/O - Объем операций ввода/вывода на диске.
|
||||||
|
- PIDS - Количество процессов внутри контейнера.
|
||||||
|
|
||||||
|
- `docker info` - инфа о докер (docker info --format '{{json .}}' - в json)
|
||||||
|
|
||||||
|
- Параметры для `restart`
|
||||||
|
- `no` (или не указывать restart вовсе) — контейнер не будет перезапускаться автоматически. Это значение по умолчанию
|
||||||
|
- `always` — контейнер будет автоматически перезапущен при любом завершении работы (даже при ручной остановке через docker stop). Он также перезапустится после перезагрузки Docker или хоста
|
||||||
|
- `on-failure` — контейнер будет перезапущен только в случае выхода с ненулевым статусом (ошибкой). Вы можете также указать максимальное количество перезапусков, например,`on-failure:3`
|
||||||
|
- `unless-stopped` — контейнер будет автоматически перезапущен при сбоях и после перезагрузки Docker или системы, но не перезапустится, если его остановили вручную.
|
||||||
|
|
||||||
### Разное
|
### Разное
|
||||||
|
|
||||||
#### ARG
|
#### ARG
|
@ -1,92 +0,0 @@
|
|||||||
### Полезные источники
|
|
||||||
|
|
||||||
- [**Базовые команды Docker**](https://github.com/python-dev-blog/docker-demo)
|
|
||||||
- [**Базовые команды docker-compose**](https://github.com/python-dev-blog/docker-compose-demo)
|
|
||||||
- [**Линтер для Docker**](https://github.com/hadolint/hadolint)
|
|
||||||
|
|
||||||
### Команды
|
|
||||||
|
|
||||||
- **`docker ps --format "{{.Names}}"`** - только имена контейнеров
|
|
||||||
|
|
||||||
- `docker ps -s` - показать размеры контейнеров (`-l` - последний запущенный контейнер)
|
|
||||||
- `docker history <image_name>` - история создания образа (`--no-trunc` - не обрезать вывод)
|
|
||||||
- `docker volume ls` - список всех Docker томов на хосте
|
|
||||||
- `docker volume inspect <volume_name>` - информацию о конкретном docker томе, например, его местоположение, размер и настройки и тп
|
|
||||||
- `docker inspect <container_name> | grep -i volumes` - ищет информацию о томах, которые примонтированы к контейнеру
|
|
||||||
- `docker port <container_name>` - показывает маппинг портов
|
|
||||||
- `docker inspect <container_name> | grep -i port` - подробности о проброшенных портах
|
|
||||||
- `docker inspect <container_name> | grep -i mount` - показывает информацию о монтированиях (volumes, bind mounts, tmpfs)
|
|
||||||
??? tip "Монтирования в Docker"
|
|
||||||
1. Named Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/`
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
db:
|
|
||||||
image: postgres
|
|
||||||
volumes:
|
|
||||||
- db_data:/var/lib/postgresql/data
|
|
||||||
volumes:
|
|
||||||
db_data:
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Anonymous Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/`, но вместо имени хэш, например, `/var/lib/docker/volumes/2f4b7c3e8e1a7d9b8b12d34c7e4b1234/`
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
app:
|
|
||||||
image: nginx
|
|
||||||
volumes:
|
|
||||||
- /usr/share/nginx/html
|
|
||||||
|
|
||||||
3. Bind Mount - привязка к директории или файлу на хосте. Если мы прокидываем файл и его не существует Docker создаст каталог.
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
web:
|
|
||||||
image: nginx
|
|
||||||
volumes:
|
|
||||||
- ./html:/usr/share/nginx/html:ro
|
|
||||||
```
|
|
||||||
`:ro` - контейнеру том доступен только для чтения, по умолчанию доступен и на запись (`:rw`)
|
|
||||||
|
|
||||||
4. Tmpfs Mount - данные хранятся в оперативке (RAM), а не на диске, при перезапуске, удалении контейнера данные будут потеряны.
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
cache:
|
|
||||||
image: redis
|
|
||||||
tmpfs:
|
|
||||||
- /tmp
|
|
||||||
```
|
|
||||||
|
|
||||||
5. External Volume - внешний том, например, NFS.
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
app:
|
|
||||||
image: nginx
|
|
||||||
volumes:
|
|
||||||
- nfs_data:/usr/share/nginx/html
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
nfs_data:
|
|
||||||
driver: local
|
|
||||||
driver_opts:
|
|
||||||
type: nfs
|
|
||||||
o: addr=192.168.1.100,rw
|
|
||||||
device: :/exported/path
|
|
||||||
```
|
|
||||||
|
|
||||||
- `docker stats` - статистика по запущенным контейнерам
|
|
||||||
- CONTAINER ID - Уникальный идентификатор контейнера.
|
|
||||||
- NAME - Имя контейнера.
|
|
||||||
- CPU % - Использование CPU в процентах.
|
|
||||||
- MEM USAGE / LIMIT - Использование памяти / установленный лимит.
|
|
||||||
- MEM % - Доля использования памяти от лимита.
|
|
||||||
- NET I/O - Сетевой ввод/вывод данных.
|
|
||||||
- BLOCK I/O - Объем операций ввода/вывода на диске.
|
|
||||||
- PIDS - Количество процессов внутри контейнера.
|
|
||||||
|
|
||||||
- `docker info` - инфа о докер (docker info --format '{{json .}}' - в json)
|
|
||||||
|
|
||||||
- Параметры для `restart`
|
|
||||||
- `no` (или не указывать restart вовсе) — контейнер не будет перезапускаться автоматически. Это значение по умолчанию
|
|
||||||
- `always` — контейнер будет автоматически перезапущен при любом завершении работы (даже при ручной остановке через docker stop). Он также перезапустится после перезагрузки Docker или хоста
|
|
||||||
- `on-failure` — контейнер будет перезапущен только в случае выхода с ненулевым статусом (ошибкой). Вы можете также указать максимальное количество перезапусков, например,`on-failure:3`
|
|
||||||
- `unless-stopped` — контейнер будет автоматически перезапущен при сбоях и после перезагрузки Docker или системы, но не перезапустится, если его остановили вручную.
|
|
||||||
|
|
@ -529,7 +529,7 @@ resize2fs /dev/mapper/vg_local-root # или xfs_growfs
|
|||||||
- `grep -v '^ *#\|^ *$' /etc/squid/squid.conf` - вывести все незакомментированные строки
|
- `grep -v '^ *#\|^ *$' /etc/squid/squid.conf` - вывести все незакомментированные строки
|
||||||
|
|
||||||
- `grep -rI '150.241.66.94' /etc` - все вхождения в каталоге `/etc`, кроме бинарных
|
- `grep -rI '150.241.66.94' /etc` - все вхождения в каталоге `/etc`, кроме бинарных
|
||||||
|
- опция `--exclude-dir={sys,proc,dev}` - понятно
|
||||||
|
|
||||||
??? info "Флаги grep"
|
??? info "Флаги grep"
|
||||||
Если не работает корректная регулярка, добавить один из этих флагов
|
Если не работает корректная регулярка, добавить один из этих флагов
|
||||||
|
@ -1,104 +0,0 @@
|
|||||||
## Настройка репликации Master-Slave
|
|
||||||
|
|
||||||
- `apt install postgresql postgresql-contrib -y` - устанавливаем СУБД на обе машины
|
|
||||||
- `systemctl status postgresql`
|
|
||||||
|
|
||||||
### Настройка Master
|
|
||||||
```conf
|
|
||||||
# /etc/postgresql/16/main/postgresql.conf
|
|
||||||
listen_addresses = 'localhost,150.241.66.94' # 150.241.66.94 адрес ВМ, на которой slave
|
|
||||||
wal_level = replica # минимальный уровень необходимый для репликации
|
|
||||||
max_wal_senders = 5 # максимальное количество подключений для передачи WAL, максимум 5 слейвов
|
|
||||||
wal_keep_size = 1024MB
|
|
||||||
hot_standby = on # разрешаем селекты с реплики, по умолчанию нельзя
|
|
||||||
archive_mode = on # включаем архивирование WAL
|
|
||||||
archive_command = 'find /var/lib/postgresql/16/main/archive -type f -mtime +7 -delete; gzip < %p > /var/lib/postgresql/16/main/archive/%f.gz'
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
# /etc/postgresql/16/main/pg_hba.conf
|
|
||||||
# файл pg_hba.conf (Host-Based Authentication) управляет доступом к PostgreSQL, определяя, какие пользователи могут подключаться
|
|
||||||
# c каких IP-адресов и каким способом аутентификации
|
|
||||||
|
|
||||||
host replication replicator 192.168.1.2/32 scram-sha-256
|
|
||||||
```
|
|
||||||
|
|
||||||
Создадим роль для репликации, выполнить:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -u postgres psql
|
|
||||||
```
|
|
||||||
```sql
|
|
||||||
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD '<password>';
|
|
||||||
```
|
|
||||||
```sql
|
|
||||||
\q
|
|
||||||
```
|
|
||||||
Открыть «MASTER» базу данных, выполнить скрипт на обновление информации о настройках доступа из файла `pg_hba.conf`:
|
|
||||||
SELECT pg_reload_conf();
|
|
||||||
|
|
||||||
??? info "Сжатый WAL"
|
|
||||||
PostgreSQL не умеет автоматически разархивировать сжатые WAL-файлы.
|
|
||||||
Если WAL-логи в сжатом формате (.gz), то перед восстановлением их нужно разархивировать вручную в `restore_command`.
|
|
||||||
|
|
||||||
Если archive_command на master сжимает WAL при архивации, например:
|
|
||||||
|
|
||||||
archive_command = 'gzip < %p > /var/lib/postgresql/archive/%f.gz'
|
|
||||||
|
|
||||||
То restore_command на slave должен разархивировать WAL перед восстановлением:
|
|
||||||
|
|
||||||
restore_command = 'gunzip -c /var/lib/postgresql/archive/%f.gz > %p'
|
|
||||||
|
|
||||||
Как это работает?
|
|
||||||
|
|
||||||
restore_command ищет запрашиваемый WAL-файл в архиве.
|
|
||||||
Если он найден в сжатом виде (.gz), команда gunzip -c разархивирует его в нужное место (%p).
|
|
||||||
|
|
||||||
slave применяет этот WAL-файл и продолжает репликацию.
|
|
||||||
|
|
||||||
### Настройка Slave
|
|
||||||
|
|
||||||
По умолчанию реплику (slave) нельзя записывать данные, потому что она работает в режиме только для чтения (read-only), на то она и слейв реплика.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl stop postgresql
|
|
||||||
```
|
|
||||||
```bash
|
|
||||||
sudo -u postgres rm -rf /var/lib/postgresql/16/main/*
|
|
||||||
```
|
|
||||||
```bash
|
|
||||||
sudo -u postgres pg_basebackup -h 192.109.139.92 -U replicator -D /var/lib/postgresql/16/main -P -R --wal-method=stream` # 192.109.139.92 - ip мастера
|
|
||||||
```
|
|
||||||
|
|
||||||
Если файл standby.signal присутствует в директории данных ($PGDATA) при запуске PostgreSQL, сервер не будет принимать записи и будет получать данные с Master.
|
|
||||||
Он создаётся автоматически при запуске pg_basebackup с флагом -R или вручную.
|
|
||||||
Если удалить standby.signal и перезапустить PostgreSQL, сервер станет обычным Master (потеряет связь с репликой).
|
|
||||||
|
|
||||||
После выполнения pg_basebackup в `/var/lib/postgresql/16/main/` на Slave должен появиться файл standby.signal. Он сообщает PostgreSQL, что сервер работает как Standby (slave).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl start postgresql
|
|
||||||
```
|
|
||||||
```bash
|
|
||||||
sudo systemctl status postgresql
|
|
||||||
```
|
|
||||||
```sql
|
|
||||||
# проверить репликацию на мастере
|
|
||||||
SELECT * FROM pg_stat_replication;
|
|
||||||
```
|
|
||||||
```sql
|
|
||||||
# проверить репликацию на слейве
|
|
||||||
SELECT * FROM pg_stat_wal_receiver;
|
|
||||||
```
|
|
||||||
|
|
||||||
На slave после окончания загрузки бд и запуска postgres проверить наличие файла `/var/lib/pgsql/16/data/standby.signal`, а также наличие строки подключения к серверу master в файле `/var/lib/pgsql/16/data/postgresql.auto.conf`
|
|
||||||
|
|
||||||
Открыть master базу данных, выполнить скрипт на проверку состояния репликации (скрипт должен вернуть строку, в поле «state» должно быть значение «streaming»)
|
|
||||||
```sql
|
|
||||||
select * from pg_stat_replication;
|
|
||||||
```
|
|
||||||
|
|
||||||
Открыть slave базу данных, выполнить скрипт на проверку состояния репликации (скрипт должен вернуть строку, в поле «status» должно быть значение «streaming»)
|
|
||||||
```sql
|
|
||||||
select * from pg_stat_wal_receiver;
|
|
||||||
```
|
|
Loading…
x
Reference in New Issue
Block a user