Мне нужно создать приложение, которое будет установлено на локальном хосте для использования локальными клиентами, даже если нет Интернета, но также необходимо гарантировать, что удаленные клиенты могут продолжать использовать приложение, хотя на локальном сервере нет Интернета.
Я подумал о том, чтобы иметь два экземпляра приложения, один из которых работает на локальном сервере, а другой — в облаке. Пока на локальном сервере есть интернет, все запросы идут к нему, а первичная база данных реплицируется потоком в облаке.
Когда Интернет отключается, удаленный клиент может продолжать использовать приложение для запроса, и разрешена только одна операция записи. Локальный экземпляр может продолжать работать без каких-либо проблем.
Когда подключение к Интернету восстанавливается на локальном сервере, обе базы данных должны синхронизироваться и перезапустить репликацию потока между двумя серверами.
Я обнаружил, что использование потоковой репликации postgres не поддерживает продолжение добавления информации в старую первичную базу данных. Например, с помощью pg_rewind вся новая информация в старом первичном хранилище удаляется перед синхронизацией со старым резервным db.
Мне нужен способ, с помощью которого я могу какое-то время независимо использовать обе базы данных, а затем синхронизировать их в основной БД. Как я мог это сделать?
Ниже приведены некоторые схемы, чтобы было немного понятно.
схемы