Обмен базами данных для повышения доступности во время обновления базы данных
У меня есть база данных SQL-сервера с данными, предоставленными сторонними организациями. Они предоставляют инструмент для обновления базы данных еженедельно. Инструмент довольно старый и использует ODBC. Обновление может занять несколько часов. Чтобы обеспечить высокую доступность, было предложено иметь 2 базы данных SQL и сохранить параметр "активная база данных" в другой базе данных, чтобы определить, какую из двух баз данных следует использовать приложениям (в то время как другую можно было бы обновить).
Одна проблема, с которой мы сталкиваемся: как ссылаться на активную базу данных в хранимых процедурах других баз данных?
Это правильный подход или есть лучший способ?
Примечания: Обновления могут быть инкрементными или могут удалить все данные базы данных, а затем воссоздать данные. Базы данных в настоящее время доступны только для чтения, кроме инструмента обновления.
1 ответ
Какое БЛАГОТВОРИТЕЛЬНОЕ решение они предлагают - Попробуйте следующее:
- Есть два сервера базы данных, A & B
- Иметь IP-адрес БД (в дополнение к базовым IP-адресам вашей системы)
- Назначьте IP-адрес БД любому серверу БД, на который вы хотите отправлять запросы
Когда наступит время обновления:
- Обновить неактивную машину ("Машина B")
- Поменяйте IP-адрес БД на "Машину B"
- Обновление "Машина А"
Обратите внимание, что это подвержено проблемам с кэшированием ARP. Вы также можете получить те же результаты с DNS и (очень) коротким TTL (при условии соблюдения ваших DNS TTL), пакетом высокой доступности, который использует виртуальный MAC, или с балансировка нагрузки переднего конца.