Многие базы данных имеют возможность кластеризации как готовое решение для набросанного вами требования.Я настоятельно рекомендую использовать готовое решение вместо того, чтобы использовать свое собственное решение - есть некоторые неприятные проблемы с этим видом решения, которые вы не хотите решать самостоятельно.
Классическим примером являются первичные ключи - если у вас есть 3 внутренних сервера, которые могут получать инструкцию «создать новую запись в таблице x» от серверов промежуточного программного обеспечения, и вы хотите реплицировать данные, вы должны убедиться, что в них нет столкновений.первичный ключ.Если вы используете целые числа в качестве типа данных первичного ключа, вы должны убедиться, что db server 1 не создает запись клиента с идентификатором 1, если этот идентификатор уже используется для записи на сервере 2. Это не трудная задача, но выможет легко потратить несколько недель на сборку и тестирование решения.
Еще одна вещь, которую вам необходимо учитывать, это то, как долго ваше приложение может оставаться в автономном режиме в случае сбоя базы данных - вообще никаких простоев, минут,часы или дни.Чем короче окно отключения, тем более дорогим и сложным должно быть кластерное решение.