Лучший способ перенести огромную базу данных SQL Server с минимальным временем простоя по сети

22

Определение проблемы

Наш сервер базы данных должен быть перенесен в другой центр обработки данных. Он работает на Microsoft SQL Server 2012 Enterprise (64-разрядная версия) и содержит две базы данных объемом около 2 ТБ и 1 ТБ.

Было бы идеально, если бы у нас было простои или нет простоев.

Нагрузка

Эти базы данных используются для веб-сайта .NET и постоянно обновляются.

Хотя это не будет доступно в выходные, было бы приемлемо. Используемая в настоящее время БД останется единственной в использовании, пока не будет переключен на новую.

В идеале это переключение можно сделать, просто изменив DNS-записи так, чтобы они указывали на новый сервер БД, при этом следя за тем, чтобы БД не обновлялась.

Кроме того, время, затрачиваемое этой операцией, не имеет большого значения, пока поддерживается низкий уровень переключения с одного сервера на другой (время простоя).

Рассмотренные подходы

  • Резервное копирование и восстановление

    Это было сделано в прошлом, но было связано с большим временем простоя, даже если это было сделано через внутреннюю сеть, поэтому более эффективно, чем через Интернет.

  • Доставка журналов

    Насколько я понимаю, этот подход позволил бы минимизировать время простоя путем настройки главного / подчиненного устройства и передачи точной копии главной БД на ее ведомое устройство, доступное только для чтения. Как упомянуто выше, доступ к ведомому не нужен, и нам просто нужен способ получить копию главной БД без повреждения данных.

    Он также кажется довольно эффективным с точки зрения использования ресурсов и не сильно повлияет на производительность мастера.

    Я могу ошибаться в этом подходе, поэтому не стесняйтесь поправлять меня.

  • Зеркальное отображение базы данных

    Я не слишком осведомлен об этом подходе, но он кажется верным вариантом. Нет необходимости иметь синхронизацию в реальном времени, и производительность мастера очень важна, поэтому асинхронный вариант будет подходящим вариантом, если будет выбран этот подход.

  • Другие опции?

    Этот сервер работает непосредственно на железном железе, поэтому решения более низкого уровня, к сожалению, не подходят. Может быть, есть лучший способ сделать это?

Ограничения

Как описано, эти базы данных достаточно велики, и их трудно поддерживать, но это другая проблема.

Версии SQL Server будут одинаковыми (Microsoft SQL Server 2012 Enterprise, 64-разрядная версия).

Он должен быть передан по сети между двумя центрами обработки данных, поэтому, скорее всего, через Интернет. К сожалению, отправка дисков с одного сайта на другой для начальной синхронизации невозможна. Было бы идеально иметь какую-то безопасность для передачи, но мы постараемся сделать все возможное в этой ситуации.

Это должно дать довольно хороший обзор наших потребностей в этой задаче, и, надеюсь, некоторые из вас уже сталкивались с такой ситуацией раньше.

Валь Ф.
источник

Ответы:

20

Прямое резервное копирование и восстановление явно отсутствуют. Я также не буду рассматривать репликацию любого рода.

Зеркальное отображение базы данных относительно просто в настройке, но требует подключения в реальном времени между двумя серверами, настройки партнеров и конечных точек и т. Д. Группы доступности могут быть опцией, но помимо сетевых сложностей у вас также должны быть оба сервера как члены одного и того же WSFC - это означает, что они оба должны находиться в одном домене. Это не типичная установка (или даже временная работа) для перемещения центра обработки данных.

Мой голос будет за доставку журналов. Хорошая вещь в этом заключается в том, что вы можете использовать резервные копии и резервные копии журналов, которые вы уже делаете (верно?), И вам не обязательно иметь соединение в реальном времени между двумя базами данных - им не нужно знать о каждой из них. с другой стороны, вам не нужно настраивать конечные точки для зеркалирования, партнеров, безопасности и т. д. Вам просто нужен способ доставить файлы со старого сервера в место, где они могут быть восстановлены на новом сервере. Вы можете заблаговременно сделать полное резервное копирование, перенести его на новый сервер, восстановить его, а затем применить (возможно, разностные и) инкрементные резервные копии журнала с этого момента вплоть до момента обрезания. На самом деле этот процесс довольно прост, и есть много учебников по доставке журналов, доступных онлайн, если вы столкнетесь с какими-либо трудностями.

Если веб-приложение перемещается вместе с базой данных, так как DNS может распространяться через некоторое время, вам может потребоваться переключить строки подключения старого приложения, чтобы они указывали на IP-адрес нового сервера базы данных после его записи. , поскольку - даже после переключения и даже если ваши параметры TTL жесткие - клиенты могут продолжать использовать старые веб-серверы. Все зависит от того, насколько уважительно их провайдеры относятся к вашим TTL.

Аарон Бертран
источник
16

Недавно я перенес 15 ТБ в 6 баз данных, используя зеркалирование. Очень просто и отлично работает всего за пару секунд времени отработки отказа.

Редактирование:

У меня было два новых виртуализированных сервера SQL. Базы данных поступали с 3 серверов, которые они просто переросли, и влияли на производительность небольших баз данных, размещенных на них.

Процесс был очень прост.

  1. Ждите полных резервных копий на выходных для завершения
  2. Восстановление без восстановления на новые серверы
  3. После завершения восстановления приостановите резервное копирование.
  4. Запустите одно дополнительное восстановление до последней резервной копии журнала с оригиналов, не оставляя восстановления
  5. Начните зеркальное отображение всех шести
  6. Возобновить резервное копирование

Я решил оставить их в асинхронном режиме до тех пор, пока мы не будем готовы откатить их, чтобы уменьшить нагрузку на сеть и т. Д. Зеркальное отображение имеет определенную репутацию за задержку во время обслуживания (индекс / статистика) и других операций большого объема, но я не сделал найти это быть правдой. Они должны быть переведены в синхронный режим перед ручным переключением.

Во время следующего окна обслуживания я вручную отказал в работе с каждой базой данных, и после некоторого дымового тестирования отключил зеркалирование и в конечном итоге удалил старые файлы данных с исходных серверов. Одна из странностей в этом процессе заключается в том, что при сбое зеркальной базы данных прежний первичный сервер остается в восстановленном состоянии, поэтому, если вам неудобно просто отбрасывать их, вам нужно вернуть их в оперативный режим, а затем отключить или использовать любой другой предпочитаемый вами метод удаления. , Кроме того, я не настраивал свидетеля для этого, потому что я не хотел автоматического перехода на другой ресурс. Это было контролируемое событие.

Пожалуйста, дайте мне знать, если вы хотите получить дополнительную информацию. Я не учел спецификации сервера и сети, но могу предоставить, если хотите.

Благодарность

Эрик Дарлинг
источник