Я думаю, вы говорите, что у вас есть одна машина, на ней у вас есть приложение, использующее Hibernate, и база данных MySql. Если вы потеряете эту машину, ваши пользователи не смогут работать. Вы спрашиваете, возможна ли дополнительная устойчивость, и считаете, что вы определили два решения.
Вы не дадите подробностей ни о каком решении, поэтому я не буду пытаться угадать, что вы имеете в виду.
Вы также мало говорите о характере приложения. Если (например) он был полностью доступен только для чтения, обновления баз отсутствуют, тогда репликация сравнительно проста. Если все записи аддитивны и не могут конфликтовать (например, какой-то опрос общественного мнения, проголосуйте «за» / «нет»), то повторная репликация с небольшим количеством очередей сравнительно проста.
Однако это традиционное приложение с пользователями, обновляющими общие данные, где согласованное представление
важно (например, мы не хотим продавать последний доступный номер в отеле дважды), тогда тиражирование становится сложным.
Один из подходов состоит в том, чтобы разделить базу данных на уровень высокой устойчивости, такие продукты, как Oracle RAC, обладают очень умными характеристиками устойчивости, и я полагаю, вы платите за интеллектуальность. Если у вас есть устойчивая база данных, кластеризация вашего приложения становится намного проще. Я часто вижу множество дешевых коробок, запускающих приложение параллельно, потому что БД управляет окончательной «истиной».
Однако даже это сложно, если приложение не было разработано заранее для репликации. Вы обнаружите, что на основе приложения делаются тонкие предположения, и в некотором смысле можно полагаться на его прежнее представление об истине. Такие продукты, как Terracotta, вполне могут (я никогда не пробовал, поэтому я не знаю) помочь реализовать отказоустойчивый дизайн, но, если дизайн не будет хорошо продуман, у него могут быть недостатки в бизнесе.
Я интерпретирую вашу идею как запуск нескольких параллельных копий приложения и db и решение проблем с синхронизацией. Только вы знаете, имеет ли это смысл для ваших бизнес-требований. Вы бы открыли возможность несогласованности, особенно в тех случаях, когда произошли сбои и повторная синхронизация еще не завершена.