Перенос базы sql на другой диск: Перемещение пользовательских баз данных — SQL Server

Attach и Detach базы в MS SQL

Богдан Кухар | 19 февраля 2020 | Статьи, Статьи по 1С | Комментариев нет

Как присоединить или отсоединить базу данных в MS SQL, другими словами выполнить Attach и Detach.

Если Вы уже какое-то время администрируете MS SQL, то скорее всего слышали такой термин как «Приаттачить» базу или сделать ее «Деттач» / «Аттач»

Конечно, данная тема также подымается и на курсе: Администратор 1С!

Операция действительно используется довольно часто для переноса базы, к примеру, на другой сервер или экземпляр MS SQL.

И действительно, ведь чтоб перенести базу, достаточно ее просто отсоединить (выполнить Detach) и затем на новом сервере СУБД присоединить (выполнив Attach). Быстро и удобно!

Конечно, Attach и Detach базы можно использовать и в ряде других случаев, к примеру,  мы хотим просто перенести лог (*ldf файл журнала транзакций) на другой диск, или вместе с базой, и здесь нам также поможет команда «Деттач» и «Аттач». Иногда даже для бэкапа файлов *ldf и *mdf ее используют, конечно, это не есть  хорошо, но также верный способ позволяющий скопировать файлы.

К слову если сервер СУБД работает, плюс  база «Онлайн» тогда если предварительно не сделать Detach, или не перевести базу в offline (так называемый автономный режим), скопировать лог или базу мы не сможем, получим ошибку что файл используется!

В теории разобрались, приступим к практике.

Давайте представим ситуацию, что место на диске, где у нас лежит лог файл *ldf закончилось, и возникла задача по его переносу на другой диск.

Собственно чем мы сейчас и займемся!

И так все действия мы будем проводить в Management Studio.

Находим интересующую базу, затем правый клик мышкой – «Задачи» — «Отсоединить»

(В eng версии вместо  «Отсоединить» будет «Detach»).

Затем в окне отсоединения базы следует поставить птичку «Удалить соединения».

ВАЖНО! Если с базой работают пользователи (к примеру в 1С Предприятии), есть активные соединения, тогда Вы без их завершения не сможете выполнить отсоединение базы!

Как видно на скрине выше, активных соединений нет, но птичку тем не менее поставить нужно, вдруг в момент отсоединения кто-то вздумает запустить 1С Предприятие.

Конечно в любом случаи при выполнении «Detach» базы, пользователей предварительно нужно уведомить о том что база будет недоступна кокой-то промежуток времени (Если с ней работают).

 

Ставить птичку возле «Обновить статистику» не рекомендую, иначе могут возникнуть на этом этапе различные ошибки, такие как перевод базы в «single user», бывает что даже зависает Management Studio (.

После успешного отсоединения базы она исчезает из списка «Обозревателя объектов» (Но не из диска, там все файлы будут на месте и mdf и ldf) как на рисунке ниже.

Вот мы и смогли выполнить первую часть работы, отсоединили базу, сделали ее «Detach».

Теперь мы уже можем скопировать наш лог файл на другой диск (Рис. ниже):

 

И приступаем ко второму шагу по присоединению базы или как его еще называют «Приаттачим» базу используя все тот же Managmant Studio.

На «базах» правый клик мышкой и выбираем «Присоединить» / Attach.

Затем в окне «Присоединения базы» клик по кнопке «Добавить»

Сперва укажем расположение файла mdf (база). У меня это диск E:\DATA\BUHG1C.mdf

После того как мы кликнем по кнопке «ОК» увидим в окне ниже что MS SQL предполагает, что расположение файла лога соответствует расположению базы mdf, но конечно, лога по указанному месту уже нет, мы его переместили на другой диск, и теперь его следует указать вручную!

 

Укажем новое расположение лога кликнув по кнопке «…»

Диск H:\LOGSSD\BUHG1C_log.ldf

Убедившись что новое расположение лога указанно верно, можно кликнуть по кнопке «ОК».

ВНИМАНИЕ! Если получили ошибку (рис. ниже)

Тогда скорее всего Вы пытаетесь выполнить данную операцию под пользователем (рутом) «SA».

Все что нужно сделать, так это выполнить данную операцию от Администратора Windows (Если установили смешанный режим проверки подлинности, еще на этапе установки самого MS SQL). 

Просто выбираем «Проверка подлинности Windows» при старте Managmant Studio.

И повторим действия с присоединением базы.

В случаи успеха, база вновь появится в списке баз обозревателя объектов! (Как на рисунке ниже).

 

 

 

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С >>>

Успехов Коллега!

С уважением, Богдан.

Метки:MS SQL и 1С, Windows server 2016, Администрирование, Администрирование в 1С, Базы в 1С Предприятии, информационные базы в 1С, Настройка 1С, Оптимизация в 1С

Перенос MySQL баз на отдельный жесткий диск

Иногда возникает ситуация когда нужно перенести базы mysql в другое место.
Например, на отдельный жесткий диск или просто в другое место (какие-то
причины безопасности). Это может быть необходимо, если не хватает места на
диске или для увеличения быстродействия, например ssd винт или raid массив.

Способ 1

Если вы хотите выделить под БД полностью весь жеский диск, то нужно просто
примонтировать устройство в mysql директорию по умолчанию. Обычно это
/var/lib/mysql Останавливаем сервер

/etc/init.d/mysqld stop

Копируем базы в какую-то временную директорию

mkdir /var/lib/mysql_temp
cp -r /var/lib/mysql/* /var/lib/mysql_temp/

удаляем базы со старой директории

rm /var/lib/mysql/* -Rf

Предполагается что у вас уже есть подготовленный жесткий диск. Если же нет, то
его нужно предварительно разбить и создать файловую систему. Это можно сделать
например при помощи cfdisk. И так примонтируем устройство:

mount /dev/sda3 /var/lib/mysql

нужно не забыть прописать в файле /etc/fstab примонтированный раздел, для того
что бы при следующей загрузке системы он автоматически монтировался. Более
подробнее смотрите мануалы по fstab и
mount. В fstab должна быть запись вида:

/dev/sda3 /var/lib/mysql ext4 defaults 0 0

далее переносим назад наши базы

cp -r /var/lib/mysql_temp/* /var/lib/mysql/

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

rm /var/lib/mysql_temp/ -Rf

далее нужно правильно выставить права доступа к /var/lib/mysql. Владелец папки
должен быть mysql c правом на запись

chown mysql:mysql /var/lib/mysql/ -R
chmod 755 /var/lib/mysql

а так же еще один важный момент, выставляем
SELinux права доступа

chcon -R system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/

проверить SELinux права можно командой ls -Z, должно быть что-то вроде этого:

ls -Z /var/lib/mysql/
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql

теперь запускаем mysql демон

/etc/init.d/mysqld start

Способ 2

Если нужно использовать для хранилища не весь раздел, а только директорию на
нем или переместить базы в другую директорию, то делаем следующее

останавливаем сервер

/etc/init.d/mysqld stop

копируем базы в новое место. Например, если мы хотим, что бы базы лежали в
/media/sda3/mysql/

mkdir /media/sda3/mysql/
cp -r /var/lib/mysql/* /media/sda3/mysql/

ставим права доступа к /media/sda3/mysql/

chown mysql:mysql /var/lib/mysql/ -R
chmod 755 /var/lib/mysql

а так же SELinux права доступа

chcon -R system_u:object_r:mysqld_db_t:s0 /media/sda3/mysql/

правим конфиг my. cnf. Обычно он находится в /etc/my.cnf либо /etc/mysql/my.cnf

[mysqld]
datadir=/media/sda3/mysql
socket=/media/sda3/mysql/mysql.sock
log-bin=/media/sda3/mysql/mysql-bin
[mysqld_safe]
datadir=/media/sda3/mysql

теперь запускаем mysql демон

/etc/init.d/mysqld start

На этом всё. Если что-то не получается, смотрим лог в /var/log/mysql.log

Напишите мне

Последнее обновление 9 мая 2021 г.

Development
mysql
linux
administration
database

Как изменить расположение всего SQL-сервера из файла программы C:\ на другой диск?

спросил

Изменено
4 года, 3 месяца назад

Просмотрено
20 тысяч раз

сценарий:

одному из моих клиентов было предложено переместить всю папку с программными файлами с диска C:\ на диск E:\ и изменить расположение всех баз данных на диск E:\. Они скопировали всю папку с программным файлом с помощью стороннего инструмента и вставили его на диск E: \, и они попросили меня изменить путь к базам данных и установке SQL на диск E: \. Теперь, как изменить все пути к базам данных и как это сделать? я знаю, как вручную перемещать системные и пользовательские базы данных с одного диска на другой, но я не сталкивался с этим королем сценария. Пожалуйста, подскажите, как выполнить это задание без ошибок.

  • SQL-сервер

2

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

Лучшим подходом было бы:

  1. Обратите внимание на то, какой именно пакет обновления и уровень CU запущен, а также любые элементы конфигурации не по умолчанию в диспетчере конфигурации SQL Server
  2. Резервное копирование всех системных и пользовательских баз данных
  3. Если вам нужно переместить файлы базы данных пользователей, отсоедините базы данных пользователей и переместите файлы
  4. Удаление SQL Server
  5. Установите SQL Server с новой конфигурацией диска
  6. Установите пакеты обновления и/или накопительные обновления, чтобы получить версию, указанную на шаге 1
  7. Восстановить базы данных master и msdb
  8. Применить конфигурации не по умолчанию в диспетчере конфигурации SQL Server
  9. Если файлы базы данных пользователей были перемещены, прикрепите их

Обратите внимание, что это общие шаги, и они не учитывают особенности вашей среды, такие как отключение серверов приложений и т. д.

1

Это не нужно. Диск C — это диск, на котором установлена ​​Windows, и здесь хранятся бинарные файлы всех программ. Пожалуйста, не путайте двоичные файлы SQL Server Instance с программным обеспечением для SQL Server. Большая часть хранилища связана с экземпляром, и в любом случае изменение места установки программного обеспечения может вызвать проблемы на последующих этапах. Вы не являетесь архитектором ОС, и ваших клиентов может интересовать только хранилище?

Вместо этого удовлетворите требования заинтересованных сторон, переместив экземпляр SQL Server на новый диск и предоставив Майкрософт конфигурацию операционной системы ОС.

Процесс потребует простоя с некоторыми шагами, но вы можете ограничить его, если у вас все подготовлено ( используйте тестовую среду! Не нужно быть слишком причудливым, чтобы просто имитировать шаги ). Следующие ссылки/шаги должны быть полезными:

  1. системная база данных

    • Перемещение системных баз данных — Microsoft Docs
  2. пользовательские базы данных и все файлы журналов

    • См. статью Дейва Пинала «Как переместить файлы mdf и ldf SQL Server» -blog.sqlauthority
    • или Документы: перемещение баз данных пользователей — Microsoft Docs
  3. Расположение журнала ошибок

    • См. Как изменить местоположение SQL Server ERRORLOG — Sqlandme
  4. Местоположение журнала агента

    • см. Как изменить путь к файлу журнала агента сервера sql — mssqltips

Обратите внимание, что для перемещения основных файлов журнала и всех основных файлов данных (mdf) требуется время простоя.

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

групп доступности — перемещение файлов базы данных SQL Server

спросил

Изменено
1 год, 1 месяц назад

Просмотрено
671 раз

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

  • sql-сервер
  • группы доступности

2

EDITED

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

Не вдаваясь в подробности, вот краткое изложение того, что они предлагают.

  1. Подключитесь к вторичной реплике.
  2. Удалите базу данных из группы доступности на вторичной реплике. Теперь он должен отображаться как «Восстановление».
  3. Выполните команду перемещения файлов из базы данных master.
  4. Остановите службу SQL на вторичной реплике.
  5. переместите файлы в новое место.
  6. Запустить службу SQL
  7. Проверьте расположение файла в sys.master_files
  8. Присоедините базу данных обратно к группе доступности.