Как упомянуто "a_horse_with_no_name", логическая репликация является очень хорошим выбором в вашей ситуации.
Единственная проблема в том, что 9.6 еще не имеет внутренней реализации, поэтому вам придется использовать расширение "pglogical" для обеих БД - здесь я нашел описание - https://rosenfeld.herokuapp.com/en/articles/infrastructure/2017-11-10-upgrading-postgresql-from-9-6-to-10-with-minimal-downtime-using-pglogical - пропустите части о Docker и посмотрите, какПлагологические работы.
Единственная небольшая проблема заключается в том, что pglogical должен быть добавлен в параметр shared_preload_libraries, а служба postgresql должна быть перезапущена, что иногда может быть затруднено при работе ...
Я провел довольно много тестов сpglogical (вот некоторые заметки - http://postgresql.freeideas.cz/pglogical-postgresql-9-6-small-hints-debian/), хотя в конце я никогда не использовал pglogical на производстве. Поэтому у меня нет опыта длительного использования.
Но я предполагаю, что некоторые проблемы могут быть похожи навнутренняя реализация логической репликации в PG 10 и 11. Итак, вот мои заметки из моего текущего использования внутренней логической репликации в PG 11 - http://postgresql.freeideas.cz/setting-logical-replication-is-not-entirely-straight-forward/ - возможно, что-то из этого поможет вам.
Мойдля вас рекомендуется:
- сделать горячую резервную копию вашей базы данных PG 9.6 на другом компьютере в облачной виртуальной машине с точно такой же ОС и, если возможно, с типами дисков и конфигурацией, используя pg_basebackup - вы можете найтивдохновение здесь:
- или если вы уже используете pg_basebackup для резервных копий tar вашей базы данных, восстановите последнюю резервную копию на другой машине или виртуальной машине (http://postgresql.freeideas.cz/pg_basebackup-pgbarman-restore-tar-backup/)
- , запуск как обычный сервер (не как горячий резерв) и тестирование pglogical на этой копии вашей БДв сравнении с какой-либо тестовой установкой PG 10 - протестируйте ее как можно ближе к производственной среде, включая, по крайней мере, смоделированные операции DML аналогичной интенсивности - это покажет вам различия в нагрузке на машину / виртуальную машину.
- Я настоятельно рекомендую установить мониторинг, например, с помощью telegraf + influenxdb + Grafana (самая простая реализация, на мой взгляд), чтобы иметь возможность анализировать использование ЦП и памяти позже - это может быть очень важной частью для использования на производстве!
- после, надеюсь, коротких и успешных тестов, внедрите его и отметьте ваш успех :-) и, пожалуйста, напишите о своем опыте.Потому что я верю, что многие люди приветствовали бы это.