Хелперы для логической репликации между Postgres 9/10/11/12/Amazon RDS
Предполгаем что базы данных не меняют свои имена, а только переезжают с хоста на хост, из инстанса pg в другой инстанс.
Обозначения:
src
- источник, откуда производится репликацияdest
- приемник, куда происзводится репликация
Параметры:
--src-databases
- список баз для репликации через запятую--src-host
- хост источника--src-port
- порт источника--src-user
- юзер источника, должен уметь читать все базы иCREATE PUBLICATION
--src-password
- пароль пользователя--dest-host
- хост приемника--dest-port
- порт приемника--dest-user
- юзер приемника, должен уметьDROP DATABASE
,CREATE DATABASE
,CREATE SUBSCRIPTION
,UPDATE SEQUENCE
и тд--dest-password
- пароль пользователя
Все параметры одинаковы для всех команд
Удаляет все базы на приемнике, указанные в --src-databases
.
С каждой базы источника снимается дамп схемы, затем по ней разворачивается пустая база на приемнике с таким же именем и схемой.
docker run --rm -it a00s/pg_replicator resync \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
В каждой базе источника создаются публикация. В каждой базе приемника создаются подписки.
max_replication_slots
на источнике должно быть больше или равно количеству баз, указанных в --src-databases
!
docker run --rm -it a00s/pg_replicator start \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
Отражает состояние всех подписок на приемнике.
Так же показывает размер баз на источнике и приемнике.
Можно запустить под watch
.
docker run --rm -it a00s/pg_replicator status \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
На приемнике удаляются все подписки. На источнике удаляются все публикации.
docker run --rm -it a00s/pg_replicator stop \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
Переносит значения всех sequences из источника в приемник.
docker run --rm -it a00s/pg_replicator sequences \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
Запускает репликацию между Postgres 9.5+ и Postgres 10+.
docker run --rm -it a00s/pg_replicator start9 \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
Останавливает репликацию между Postgres 9.5+ и Postgres 10+.
docker run --rm -it a00s/pg_replicator stop9 \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2
Переносит значения всех sequences из источника в приемник.
docker run --rm -it a00s/pg_replicator sequences9 \
--src-host 192.168.1.10 --src-port 5432 --src-user superuser --src-password superuser \
--dest-host 192.168.1.11 --dest-port 5432 --dest-user superuser --dest-password superuser \
--src-databases db1,db2