Вы можете сделать это, но по сути вы разрабатываете свой собственный механизм репликации.Эти вещи могут быть немного сложными, чтобы получить право (что произойдет, если m1 и m3 выполняются на реплике r1, но m2 нет?) Я бы не хотел разрабатывать что-то подобное, если вы не уверены, что у вас есть ресурсы, чтобы сделатьэто работает.
Я бы посмотрел на существующее готовое решение для репликации.Если вы уже используете базу данных SQL, она, вероятно, имеет некоторую поддержку.Посмотрите здесь для получения более подробной информации, если вы используете MySQL
В качестве альтернативы, если вы хотите изучить другие бэкэнды, я слышал, что CouchDB имеет отличную поддержку репликации.Я также слышал о людях, использующих библиотеки git для таких вещей.
Обновление : После вашего комментария я понимаю, что вы уже используете репликацию MySql и ищете решение для повторной синхронизациибазы данных после того, как в автономном режиме.
Даже в этом случае RabbitMQ вам совсем не помогает, поскольку для работы требуется постоянное соединение, поэтому вы вернулись к исходной точке.Простейшим решением было бы просто записать все изменения (команды SQL) в текстовый файл в удаленном месте, а затем, когда вы получите соединение, скопировать этот файл (scp, ftp, emaill или любой другой) на главный сервер и запустить все команды тами затем просто повторно синхронизируйте все реплики.
В зависимости от вашего конкретного проекта вам также может потребоваться убедиться, что нет конфликтов при запуске команд из другого удаленного местоположения, но нет общего технического решения для этого.Опять же, в зависимости от проекта, вы можете отменить одну из транзакций, уведомить пользователей о том, что это произошло, и т. Д.