Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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