Обмен базами данных для повышения доступности во время обновления базы данных

У меня есть база данных SQL-сервера с данными, предоставленными сторонними организациями. Они предоставляют инструмент для обновления базы данных еженедельно. Инструмент довольно старый и использует ODBC. Обновление может занять несколько часов. Чтобы обеспечить высокую доступность, было предложено иметь 2 базы данных SQL и сохранить параметр "активная база данных" в другой базе данных, чтобы определить, какую из двух баз данных следует использовать приложениям (в то время как другую можно было бы обновить).

Одна проблема, с которой мы сталкиваемся: как ссылаться на активную базу данных в хранимых процедурах других баз данных?

Это правильный подход или есть лучший способ?

Примечания: Обновления могут быть инкрементными или могут удалить все данные базы данных, а затем воссоздать данные. Базы данных в настоящее время доступны только для чтения, кроме инструмента обновления.

1 ответ

Какое БЛАГОТВОРИТЕЛЬНОЕ решение они предлагают - Попробуйте следующее:

  • Есть два сервера базы данных, A & B
  • Иметь IP-адрес БД (в дополнение к базовым IP-адресам вашей системы)
    • Назначьте IP-адрес БД любому серверу БД, на который вы хотите отправлять запросы

Когда наступит время обновления:

  • Обновить неактивную машину ("Машина B")
  • Поменяйте IP-адрес БД на "Машину B"
  • Обновление "Машина А"

Обратите внимание, что это подвержено проблемам с кэшированием ARP. Вы также можете получить те же результаты с DNS и (очень) коротким TTL (при условии соблюдения ваших DNS TTL), пакетом высокой доступности, который использует виртуальный MAC, или с балансировка нагрузки переднего конца.

Другие вопросы по тегам