Sql перенос базы на другой диск: Перемещение пользовательских баз данных — SQL Server
Содержание
Перенос базы на другой жёсткий диск — документация Staffcop Enterprise 5.2
/.. _linux_faq_chande_db_hdd:
Жёсткий диск/раздел должен существовать в системе и быть подключен физически. Перенос базы данных выглядит так:
Внимание
Нельзя использовать одну и ту же точку монтирования для файлов и БД.
Если на диске есть требуемые разделы, переходим к п. 2.
Если разделов нет — размечаем диск своей любимой программой разметки, например так:
sudo cfdisk /dev/sdX
и создаём на нём файловую систему командой
sudo mkfs.ext4 /dev/sdX
где Х — это завершение имени диска.
Останавливаем сервисы командами:
sudo service postgresql stop sudo staffcop stop
Редактируем файл /etc/fstab
sudo nano -w /etc/fstab
Прописываем туда следующую строку:
/dev/sdX /var/lib/postgresql/ ext4 rw,noatime 0 2
Где /dev/sdX — ваш жёсткий диск, /var/lib/postgresql/ — каталог, в котором будет отображаться содержимое диска, ext4 — тип файловой системы (если вы используете другую фс — jfs/xfs/reiser и т. д. эта опция меняется.) rw — означает разрешение на чтение-запись на диск. Также можно прописывать диск по UUID. Получить UUID диска можно командой:
sudo blkid
В этом случае первая часть записи примет вид UUID= , где в кавычки нужно вписать резальтат вывод вышеуказанной команды.
Предупреждение
Разделы с GPT-форматированием можно примонтировать только по UUID-диска!
Создаём папку для резервного копирования, и перемещаем данные из каталога базы данных туда.
mkdir /home/user/rezerv && sudo mv /var/lib/postgresql/* /home/user/rezerv
Где user — это домашний каталог пользователя, скорее всего, у вас он отличается. Узнать домашний каталог пользователя можно командой
env | grep -E "home|HOME"
результатом выдачи данной команды будет домашний каталог пользователя, от имени которого эта команда выполнена.
Проверяем корректность монтирования командой
sudo mount -a
эта команда монтирует диск, который уже прописан в fstab, но еще не примонтирован.
Соответственно, если мы что-то вписали неверно либо ошиблись, то мы увидим ошибки монтирования, и, соответственно, получим возможность исправить допущенную ошибку.
Проверяем корректность монтирования диска командой типа
Также можно проверить, что данный раздел доступен на запись. Например, создадим текстовый файл и проверим его наличие командами
touch /var/lib/postgresql/11/main/test_write.txt && ls -l /var/lib/postgresql/11/main/
Либо просто выполнив команду mount без параметров: ее результатом станет вывод всех монтированных систем;
наше новое устройство должно быть монтировано rw.
Копируем всё на жд,
sudo cp -R /home/user/rezerv/* /var/lib/postgresql/
В случае, если вы перемещали данные в другой каталог, произведите изменения в соответствии с реальным расположением файлов.
Меняем владельца на postgres.
sudo chown -R postgres:postgres /var/lib/postgresql/11/main
Выставляем ему права доступа на 700.
sudo chmod -R 700 /var/lib/postgresql/11/main
Запускаем сервисы postgresql, staffcop и nginx.
sudo service postgresql start sudo staffcop start
Выполняем команду
sudo staffcop sql
в появившемся приглашении пишем analyze; ждём.
ошибки типа «ПРЕДУПРЕЖДЕНИЕ: «pg_shdescription» пропускается — только суперпользователь может анализировать этот объект» не критичны, т.к. говорят о том, что команда, запущенная с данными правами, не смогла проанализировать служебные таблицы БД. Это и не требуется.
Заходим в веб-интерфейс, проверяем что всё работает, все отчёты видны и тд. Если всё в порядке, можно удалять резервные файлы
rm -R /home/user/rezerv
Как и любой rm следует применять с осторожностью.
Перенос tempdb на другой диск
На чтение 3 мин Просмотров 1.6к. Опубликовано
Небольшая заметка как действовать в случае когда вам необходимо перенести базу tempdb на другой диск. Такая ситуация может случится в результате сбоя диска, на котором она была размещена в рабочем состоянии и вам потребуется перенос tempdb на другой диск для того, чтобы запустить SQL Server.
Запланированный перенос базы данных
В случае если вам просто необходимо перенести рабочую базу данных, то в manegement studio необходимо выполнить запрос:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'disk:\new_path\new_file_name' )
Где:
- database_name — имя базы данных, которую необходимо перенести;
- logical_name — логическое имя файла;
- disk:\new_path\new_file_name — новый путь к файлу данных.
Такую команду необходимо выполнить для каждого файла данных перемещаемой БД. После чего следует остановить службу MSSQL и переместить файлы данных в новое расположение. При перемещении не забудьте скопировать и права доступа на папку и файлы данных. Затем вновь запустите службы SQL Server.
Перемещение базы данных в случае сбоя
Такая ситуация может возникнуть, если восстановить базу данных в прежнее место невозможно, а без этой базы данных SQL сервер не запускается. Например, как я уже писал в начале, вышедший из строя диск с базой tempdb приведет к остановке MSSQL и невозможности его запуска.
Процедура действий в данном случае почти такая же как и при запланированном переносе. Все операции производим через командную строку cmd с правами администратора. Для начала необходимо запустить SQL сервер в режиме восстановления:
NET START MSSQLSERVER /f /T3608
Затем запустив консольную команду sqlcmd выполнить все те же команды по указанию нового пути к файлам данных для БД. Например для tempdb будут примерно такие команды:
ALTER DATABASE tempdb MODIFY FILE ( NAME = tempdev , FILENAME = 'c:\tempdb\tempdb. mdf' ) ALTER DATABASE tempdb MODIFY FILE ( NAME = templog , FILENAME = 'c:\tempdb\templog.ldf' )
После того как введены все SQL запросы в интерактивном режиме sqlcmd необходимо ввести команду GO, чтобы выполнить этим самые запросы, а затем EXIT, чтобы выйти из интерактивного режима sqlcmd. Папка c:\tempdb (или та куда вы переносите базу данных tempdb) должна быть заранее создана. Если вы восстанавливаете не tempdb, а любую другую БД, то необходимо в эту папку так же положить файлы БД из резервной копии с именами совпадающими с теми, что указаны в SQL запросах.
Теперь можно перезапускать MSSQL сервер в стандартном режиме:
net stop MSSQLSERVER net start MSSQLSERVER
Если используется не экземпляр по умолчанию, а именованый, то необходимо заменить MSSQLSERVER на MSSQL$instancename, где instancename — наименование экземпляра MSSQL.
Если все сделано верно, то службы MSSQL запустятся и продолжат работу в штатном режиме.
microsoft mssql sql базы данных резервное копирование
ssd — перемещение базы данных SQL Server на новый диск в режиме онлайн
спросил
Изменено
7 лет, 3 месяца назад
Просмотрено
3к раз
У меня есть база данных SQL Server объемом 1,4 ТБ, которая сильно борется с дисковым вводом-выводом. Мы установили на сервер новый массив SSD, который решит все наши проблемы, мы просто обсуждаем, как лучше всего перенести базу данных. В идеале, если мы можем сделать это без простоев, это лучше всего. Но если есть выбор между двумя днями низкой производительности (например, при копировании данных) и двумя часами простоя, последнее может быть предпочтительнее.
На данный момент мы нашли следующие решения:
Простая копия. Переведите базу данных в автономный режим, скопируйте файлы, измените расположение в SQL Server и верните ее в оперативный режим. По приблизительным подсчетам это займет до пяти часов, что не совсем приемлемо, но это самое простое решение.
Блочная копия. Используя утилиту, подобную rsync, мы копируем файлы в фоновом режиме, пока БД работает. Когда мы готовы к миграции, мы переводим БД в автономный режим, делаем разностную копию с помощью этой утилиты, затем указываем серверу SQL новые файлы и подключаем их к сети. Время здесь неизвестно. Мы не знаем, сколько времени потребуется, чтобы провести дифференциальный анализ 1,4 ТБ и скопировать его. Другая наша проблема заключается в том, что копия на уровне блоков оставит файлы в каком-то нечитаемом состоянии для SQL Server, и мы потратим впустую наше время.
Миграция SQL. Создайте новый файл данных SQL объемом 1,4 ТБ на новом диске и отключите автоматическое увеличение для всех остальных файлов. Затем запустите DBBC SHRINKFILE(-file_name-, EMPTYFILE) для всех остальных файлов данных по очереди. Как только все данные будут переданы, я в какой-то момент возьму запланированное окно, чтобы переместить файл MDF на SSD и удалить другие неиспользуемые файлы. Мне это нравится, потому что это сводит к минимуму время простоя. Но я понятия не имею, сколько времени это займет и не приведет ли это к снижению производительности.
У нас нет среды загрузки и производительности для проверки. Я могу убедиться, что стратегии будут работать в нашей тестовой среде, но не с точки зрения воздействия и производительности.
- sql-сервер
- твердотельный накопитель
3
Одним из способов перемещения всей базы данных является использование BACKUP
и RESTORE
. База данных будет недоступна во время окончательного переключения, но при планировании время простоя должно быть минимальным. Эта процедура предполагает ПОЛНАЯ
или BULK_LOGGED
модель восстановления:
1) Выполните ПОЛНУЮ резервную копию (или используйте существующую).
2) Восстановите последнюю полную резервную копию в базу данных с другим именем, указав параметр WITH MOVE
для перемещения файлов в хранилище SSD по желанию и параметр NORECOVERY
, чтобы можно было восстановить последующие дифференциальные резервные копии и резервные копии журналов.
3) Применять добавочные изменения к новой базе данных до момента окончательного переключения с резервными копиями журнала транзакций и ВОССТАНОВЛЕНИЕ...БЕЗ ВОССТАНОВЛЕНИЯ
. Это сведет к минимуму время простоя для окончательного перехода на новую базу данных.
4) Чтобы переключиться на новую базу данных, переведите приложение в автономный режим, выполните окончательное резервное копирование журнала транзакций и примените к новой базе данных С ВОССТАНОВЛЕНИЕМ
. Наконец, переименуйте исходную базу данных в другое имя и переименуйте перемещенную базу данных в исходное имя. Удалите старую базу данных, когда вам будет удобно.
В модели восстановления SIMPLE можно использовать аналогичный процесс, но без резервного копирования/восстановления журнала транзакций шага 3. Вместо этого на последнем шаге используйте разностное резервное копирование/восстановление базы данных. Это может потребовать больше времени простоя, в зависимости от количества изменений с момента первоначального ПОЛНАЯ резервная копия
.
2
Хорошим подходом является использование SQL REPLICATION между двумя серверами. как только все данные будут реплицированы на SSD-сервере, отключите текущий сервер и переключитесь на сервер SSD.
3
Зарегистрируйтесь или войдите
Зарегистрироваться через Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie
.
Миграция данных между разными версиями MS SQL
Сервер MS SQL имеет встроенные методы для миграции данных из одной версии в другую. Два из этих методов описаны ниже:
1. Миграция базы данных MS SQL с использованием метода отсоединения и присоединения 9.0103
Рекомендуется для: Полного резервного копирования БД, перемещения данных БД на другой диск, перемещения данных БД между разными версиями SQL-сервера (например, с SQL Server 2008 R2 на SQL Server 2012).
- Войдите в Microsoft SQL Server Management Studio.
- Щелкните правой кнопкой мыши базу данных, которую вы хотите переместить (например, adap). Выберите Задача —> Отсоединить.
- В мастере отсоединения БД —> Установите оба флажка (Отключить соединения и Обновить статистику) —> ОК.
- Перейдите к пути хранения БД (пример: C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA) —> Скопируйте файлы . mdf и .LDF (пример: adap.mdf и adap_log.LDF) .
- Сохраните оба вышеуказанных файла в нужном месте.
- Войдите в Microsoft SQL Server Management Studio.
- Щелкните правой кнопкой мыши целевую базу данных и выберите Задача —> Присоединить.
- В мастере подключения БД нажмите кнопку «Добавить».
- Выберите файл .mdf, откуда он был сохранен —> ОК (файл .LDF будет выбран автоматически).
- Перейдите в папку \conf —> Откройте параметры_базы данных —> Измените расположение сервера SQL и Имя базы данных, чтобы продукт указывал на новую БД.
2. Миграция БД MS SQL с использованием метода импорта данных
Рекомендуется для: Переноса определенных табличных данных из одной БД в другую.
- Войдите в Microsoft SQL Server Management Studio.
- Щелкните правой кнопкой мыши базу данных, в которую вы хотите переместить данные (например, adap_new). Выберите Задачи —> Импорт данных.
- Откроется мастер импорта и экспорта SQL Server —> нажмите «Далее»
- В открывшемся мастере источников данных укажите: (В раскрывающемся списке Источник данных выберите Собственный клиент SQL Server, если он еще не выбран.)
- Имя сервера.
- Аутентификация (используется для входа в SSMS).
- База данных.
- Щелкните Далее.
- В мастере назначения введите следующее: (В раскрывающемся списке Источник данных выберите Собственный клиент SQL Server, если он еще не выбран. )
- Имя сервера (будет определено автоматически, вы можете изменить место назначения, если хотите).
- Аутентификация.
- (будет обнаружена автоматически, вы можете изменить место назначения, если хотите).
- Щелкните Далее.
База данных
- В разделе «Указать копию таблицы или запрос» —> выберите «Копировать данные из одной или нескольких таблиц/представлений» —> «Далее».