У меня есть база данных SQL Server 1,4 ТБ, которая очень сильно борется с дисковым вводом / выводом. Мы установили новый массив SSD на сервер, который решит все наши проблемы, мы просто обсуждаем лучший способ перемещения базы данных. В идеале, если мы можем сделать это без простоя, это лучше. Но если выбор между двумя днями низкой производительности (например, при копировании данных) или двумя часами простоя, последний может быть предпочтительнее.
Итак, решения, которые мы придумали:
Простая копия. Переведите БД в автономный режим, скопируйте файлы, измените расположение в SQL Server и верните его в оперативный режим. По приблизительным подсчетам, это займет до пяти часов, что не совсем приемлемо, но это самое простое решение.
Блок-копия. Используя утилиту, похожую на rsync, мы копируем файлы в фоновом режиме, пока работает БД. Когда мы будем готовы к миграции, мы переводим БД в автономный режим, делаем разностное копирование с помощью этой утилиты, затем указываем серверу SQL на новые файлы и переводим их в оперативный режим. Время здесь неизвестно. Мы не знаем, сколько времени потребуется, чтобы провести дифференциальный анализ в 1,4 ТБ и скопировать его. Другая наша проблема заключается в том, что при копировании на уровне блоков файлы в каком-то состоянии останутся нечитаемыми для SQL Server, и мы потратим впустую наше время.
Миграция SQL. Создайте новый файл данных 1.4TB SQL на новом диске и отключите авторазраст для всех остальных файлов. Затем запустите DBBC SHRINKFILE (-file_name-, EMPTYFILE) для всех остальных файлов данных по очереди. После того как все данные пройдены, я в определенный момент возьму запланированное окно, чтобы переместить файл MDF на SSD и удалить другие неиспользуемые файлы. Мне это нравится, потому что это минимизирует время простоя. Но я понятия не имею, сколько времени это займет и не приведет ли это к снижению производительности, пока это происходит.
У нас нет какой-либо среды загрузки и производительности, чтобы проверить это. Я могу убедиться, что стратегии будут работать в нашей промежуточной среде, но не влияние и не производительность.
don't know how long it will take to do a differential analysis of 1.4TB
по крайней мере, столько, сколько нужно, чтобы прочитать эти данные. Я не думаю, что идея rsync сильно экономит, если что-нибудь. rsync предназначен для работы в медленных сетях.