Перенос tempdb на другой диск. Перенос базы sql на другой диск


Перенос файлов баз данных (*mdf и *ldf) на другой диск

В некоторых случаях, возникает необходимость перенести файлы баз данных на другой диск. Например, базы лежат в каталоге по умолчанию на системном диске С:, который:

  • Имеет маленький размер
  • Сильно нагружен ОС и системными запросами
  • Довольно медленный
  • Помирает

Все эти факторы влияют как на отказоустойчивость, так и на скорость обработки запросов SQl-сервером, а следовательно и на работоспособность комплекса в целом! Теперь, когда вы прониклись важностью момента, можно приступить к практическим действиям. Итак:

Перенос пользовательской базы данных¶

1. Договариваемся с творческой частью коллектива, что в определенное время все перестают работать с базой. А именно, прекращают что-то туда добавлять и/или изменять.

2. Останавливаем сервисы, которые работают с МБД в автоматическом режиме, например:

  • DB Import - импорт новостных лент
  • DDB - распределенная база данных
  • Sch_to_DB - репликация расписаний иначе, есть вероятность потерять часть информации.

3. Запускаем Microsoft SQL Server Management Studio.

4. Самым первым делом всегда делаем бэкап базы!

5. Далее, смотрим, где лежат файлы нужной нам базы данных (в нашем примере это будет МБД под названием "RADIO-DB"). Для этого, нажимаем на ней ПКМ и открываем Properties (Свойства). Заходим в раздел Files (Файлы) и смотрим раздел Path (Путь):

6. Далее, нажимаем ПКМ на целевой базе и выбираем пункт Tasks\Detach (Задачи\Отсоединить):

7. В открывшемся окне ставим обе галочки и нажимаем ОК. После чего, МБД пропадет из списка:

8. Через обычный проводник заходим в каталог, где лежат нужные нам файлы. В нашем примере, это C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS2012\MSSQL\DATA.

9. Копируем эти файлы в новый каталог на новый диск и снова открываем Microsoft SQL Server Management Studio.

10. Нажимаем ПКМ на разделе Databases (Базы данных), выбираем пункт Attach (Присоединить) и в открывшемся окне нажимаем кнопку Add (Добавить) и выбираем нужный нам файл RADIO-DB.mdf уже из нового каталога:

Убеждаемся, что пути у нас теперь новые и нажимаем ОК.

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

 

Перенос системных баз данных¶

Но, остались еще системные базы данных (спрятаны в разделе System Databases). Это msdb, model и tempdb, которые в общем-то тоже будет неплохо перенести на быстрый и отказоустойчивый диск. Тем более, что среди них есть одна, очень для нас важная база - tempdb. Именно через нее проходят все запросы, прежде чем попасть в пользовательскую МБД. Перенести системные базы ничуть не сложнее, чем пользовательские. И для этого надо:

1. Используя Microsoft SQL Server Management Studio, выполнить следующий скрипт:

Его также можно скачать из этого описания и запустить непосредственно на SQl-сервере.

2. Останавливаем службу SQL.

3. Копируем из старого каталога (помним наш пример: C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS2012\MSSQL\DATA) все файлы, указанные в скрипте выше, в новый каталог, который мы прописали в том же скрипте.

4. Обязательно добавляем учетную запись группы безопасности. Подробно о том, как это сделать, читайте в конце данной статьи, в разделе "Предоставление разрешения на доступ к файловой системе идентификатору безопасности службы".

5. Запускаем службу SQL.

6. Убедиться, что мы все сделали правильно, можно, посмотрев в свойствах каждой системной БД раздел Files (Файлы). Там должны быть новые пути к обоим файлам (самой БД и логу).

 

Перенос самой системной базы данных master¶

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

Итак, master:

1. Для изменения пути к БД master, нам понадобится оснастка SQL Server Configuration Manager (Диспетчер конфигурации SQL Server). Запускаем ее и открываем свойства SQL Server:

2. В свойствах SQL Server`а открываем вкладку Startup Parameters (Параметры запуска):

и по очереди меняем все указанные пути на новые. - каждая строка начинается со своего символа -d, -e или -l. Ни в коем случае не меняйте их и не удаляйте!

3. Каждое изменение пути подтверждаем нажатием кнопки Update.

4. Теперь останавливаем сервис, копируем файлы master.mdf и mastlog.ldf из старого каталога в новый. После чего запускам сервис. ERRORLOG можно не копировать. Он создастся заново.

 

Предоставление разрешения на доступ к файловой системе идентификатору безопасности службы¶

  1. С помощью проводника Windows перейдите в папку файловой системы, в которой находятся файлы базы данных. Правой кнопкой мыши щелкните эту папку и выберите пункт Свойства.

  2. На вкладке Безопасность щелкните Изменитьи затем ― Добавить.

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

  4. В поле Введите имена объектов для выбора введите имя идентификатора безопасности службы. В качестве идентификатора безопасности службы компонента Компонент Database Engine используйте NT SERVICE\MSSQLSERVER для экземпляра по умолчанию или NT SERVICE\MSSQL$InstanceName — для именованного экземпляра.

  5. Щелкните Проверить имена , чтобы проверить введенные данные. Проверка зачастую выявляет ошибки, по ее окончании может появиться сообщение о том, что имя не найдено. При нажатии кнопки ОК открывается диалоговое окно Обнаружено несколько имен .Теперь выберите идентификатор безопасности службы MSSQLSERVER или NT SERVICE\MSSQL$InstanceName и нажмите кнопку ОК. Снова нажмите кнопку ОК , чтобы вернуться в диалоговое окно Разрешения.

  6. В поле имен Группа или пользователь выберите имя идентификатора безопасности службы, а затем в поле Разрешения для <имя> установите флажок Разрешить для параметра Полный доступ.

  7. Нажмите кнопку Применить, а затем дважды кнопку ОК , чтобы выполнить выход.

 

 

Вот теперь, точно всё. Спасибо за внимание!

P.S. В зависимости от конкретной ОС, конкретной версии SQL сервера, вашей кармы и наличия солнечных вспышек, что-то может пойти не так. Прежде чем приступать к вышеописанным действиям, убедитесь, что: а) оно вам действительно надо б) вы морально готовы ц) вы понимаете, что вы делаете д) у вас вся ночь впереди, чтобы переустановить SQL заново и развернуть бэкап.

;)

detach_db2.PNG View (31.7 KB) Станислав Середницкий (Москва), 03/22/2018 05:27 PM

detach_db.PNG View (62.9 KB) Станислав Середницкий (Москва), 03/22/2018 05:28 PM

detach_db3.PNG View (87.3 KB) Станислав Середницкий (Москва), 03/22/2018 05:56 PM

attach_db.PNG View (84.4 KB) Станислав Середницкий (Москва), 03/22/2018 06:05 PM

System_DB_files_moving.sql View (993 Bytes) Станислав Середницкий (Москва), 03/22/2018 06:49 PM

sql_conf_man.PNG View (31.7 KB) Станислав Середницкий (Москва), 03/22/2018 07:14 PM

start_param.PNG View (15.3 KB) Станислав Середницкий (Москва), 03/22/2018 07:18 PM

redmine.digispot.ru

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

Видео по созданию резервных копий БД и переносу БД на другой ПК:

Самый простой способ сделать это:

1. Необходимо скачать и установить «SQL Server Management Studio». Ссылки на дистрибутивы:

Microsoft SQL Server 2005 Management Studio Express

Microsoft SQL Server 2008 Management Studio Express

2. Открыть Management Studio и подключиться к своему серверу.

3. Развернуть слева список баз данных и выбрать ту Базу, которую нужно перенести. Кликните по ней правой кнопкой мыши и в контекстном меню выберите команду «Task (Задачи) -> Detach(Отсоединить)».

Откроется окно «Detach Database». В нем нужно нажать кнопку «OK».

Наша база отсоединена от сервера. Теперь ее можно перенести на любой логический диск. После переноса файлом в окне Management Studio в дереве объектов выберите папку «Databases» и правой кнопкой мыши нажмите по ней. Откроется контекстное меню, в котором Вам нужно будет выбрать команду «Attach… (Присоединить…)».

Откроется окно «Attach Databases», в котором нужно будет добавить файл базы данных (mdf), который был перемещен на другой локальный диск. Для этого нужно нажать кнопку «Add» и в появившемся окне выбрать файл (DBEtlPro.mdf) и нажать кнопку «ОК».

И еще раз нажать кнопку «ОК».

Все! Операция по переносу БД завершена.

Posted in: ДНД ЭТЛ Профессионал .Нет

www.etlpro.ru

MSSQL перенос системных баз / Хабр

MSSQL и базы 1с 8.2

Здесь я опишу свои наблюдения, а также собранные с помощью гугла маленькие полезности для эффективной работы этих двух программных продуктов. Всем известно, что хранить пользовательские базы нужно на отдельном диске, например вот здесь D:\Base. А так же желательно перенести на отдельный диск и файлы транзакций, например E:\Logs. Ну и раз уж мы говорим о переносе баз и логов на разные диски, то для увеличения производительности, нужно разнести их на разные физические диски. Дорого, скажете Вы, не совсем, в рамках предприятия это копейки, а головной боли будет меньше, хотя бы со свободным местом будет уже проще. После всего этого будет целесообразно перенести и системные базы. Раньше я не задумывался об этом, но вот прижало. А дело было так. Доблестной бухгалтерии, накатили новую версию желтой программы, и все было замечательно до тех пор, пока не потребовалось им «закрыть месяц». Процедура длительная и поэтому оставляли ее на ночь. А с утра видели симпатичное сообщение об ошибке базы MSSQL. Расследование привело меня к тому, что на диске С:\ не оставалось свободного места. А именно, разрослись логии системных баз выше всякой меры. Было принято решение о переносе. Если перенос пользовательских баз не составит труда, то системные переносились с помощью гугла и админской смекалки. Так как в интернете не было обнаружено точной статьи, решил описать это здесь.

И не лишним будет напомнить, не забывайте про резервное копирование!

И сейчас, я расскажу, как перенести системные базы MSSQL. Для примера, я перенесу их из папки C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ в 1. D:\System (базы) 2. E:\System (логи)

Останавливаем службу MSSQL.

Запускаем MSSQL в монопольном режиме и переносим базу mssqlsystemresource Для этого в cmd, запущенного от администратора, набираем команду

net start MSSQLSERVER /c /m /T3608

затем вводимsqlcmd -A

затем последовательно набиваем три команды для изменения пути к mssqlsystemresource.mdf.

1> ALTER DATABASE mssqlsystemresource

2> MODIFY FILE (name = 'data', filename = 'D:\System\mssqlsystemresource.mdf')

3> GO

Если видим ответ:The file «data» has been modified in the system catalog. The new path will be used the next time the database is started. Значит все в порядке.

Вбиваем еще 3 команды для изменения пути к mssqlsystemresource.ldf

1> ALTER DATABASE mssqlsystemresource

2> MODIFY FILE (name = 'log', filename = 'E:\System\mssqlsystemresource.ldf')

3> GO

Опять же, если видим ответ:The file «data» has been modified in the system catalog. The new path will be used the next time the database is started. Значит все в порядке, и мы не ошиблись.

Выходим из sqlcmd командой QUIT.

Останавливаем службу MSSQL командой: net stop mssqlserver Вот как это должно выглядеть:

Копируем файлы .mdf и .ldf от баз mssqlsystemresource и master в положенные для них места, в «D:\System» кладем базы (.mdf) а в «E:\System» соответственно логии (.ldf).

Запускаем SQL Server Configuration Manager.

Переходим: Пуск-> Все программы-> Microsoft SQL Server 2005-> Configuration Tools-> SQL Server Configuration Manager В открывшемся окне переходим: SQL Server 2005 Services -> SQL Server (MSSQLSERVER) -> Properties Вкладка: Advanced Строка: Startup Parameters Изменяем пути, из стандартного: -dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf на -dD:\System\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lE:\System\mastlog.ldf Жмем кнопку «Применить» Илюстрация:

Стартуем SQL как обычно.

Далее переносим базы msdb, model, tempdb.

В MSSQL Server Management Studio выполним вот такой запрос:ALTER DATABASE msdb

MODIFY FILE (name = 'MSDBDATA', filename = 'D:\System\MSDBDATA.mdf')

ALTER DATABASE msdb

MODIFY FILE (name = 'MSDBLOG', filename = 'E:\System\MSDBLOG.ldf')

ALTER DATABASE model

MODIFY FILE (name = 'modeldev', filename = 'D:\System\model.mdf')

ALTER DATABASE model

MODIFY FILE (name = 'modellog', filename = 'E:\System\modellog.ldf')

ALTER DATABASE tempdb

MODIFY FILE (name = 'tempdev', filename = 'D:\System\tempdb.mdf')

ALTER DATABASE tempdb

MODIFY FILE (name = 'templog', filename = 'E:\System\templog.ldf')

Выглядит так:

Стопим MSSQL. Раскладываем файлы .mdf и .ldf по необходимым местам. Запускаем службу MSSQL. На этом, перенос системных баз данных закончен.

Также хочу упомянуть о резервном копировании. Мои наблюдения привели меня к тому, что я отказался от бэкапа файлов транзакций. В моем конкретном случае они не нужны, в Вашем не могу утверждать, но возможно тоже. Поэтому я копирую только базы данных, то есть файлы с расширением .bak. Но восстановить базу средствами Management Studio простым щелчком мыши нельзя, так как MSSQL обижается на отсутствие фалов .ldf, но можно использовать простой скрипт, для наших корыстных целей.

RESTORE DATABASE basename

FILE = 'basename'

FROM DISK = 'X:\mssql_backup\folder_ basename\basename_backup_xxxxxxxxxxx.bak'

WITH MOVE 'basename' TO 'E:\MSSQL_DATA\ basename' Где: «basename» имя базы «X:\mssql_backup\folder_ basename\» путь к бэкапу базы данных.

И на всякий случай скрипт монтирования mdf без ldf. Это на тот случай когда есть вручную скопированные файлы но отсутствуют файлы транзакций к ним.USE [master] GO CREATE DATABASE [имя базы] ON ( FILENAME = N'путь к file.mdf' ) FOR ATTACH _REBUILD_LOG

habr.com

Перенос tempdb на другой диск

Главная » IT

Небольшая заметка как действовать в случае когда вам необходимо перенести базу 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 запустятся и продолжат работу в штатном режиме.

www.k7d.ru

Перенос каталога MySQL на другой диск

Шаг 1. Перемещение данных на другой диск

Смотрим, где находится каталог MySQL:

Выполняем команду:

Видим:

+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+

+-----------------+

| @@datadir       |

+-----------------+

| /var/lib/mysql/ |

+-----------------+

Останавливаем MySQL:

sudo systemctl stop mysql

sudo systemctl stop mysql

Смотрим статус MySQL:

sudo systemctl status mysql

sudo systemctl status mysql

Должны увидеть нечто подобное:

. . . Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

. . .

Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Переносим папку MySQL на другой диск:

sudo rsync -av /var/lib/mysql /mnt/k2bigdata

sudo rsync -av /var/lib/mysql /mnt/k2bigdata

Переименуем каталог с базами MySQL (позже, можно его будет удалить вручную):

sudo mv /var/lib/mysql /var/lib/mysql.bak

sudo mv /var/lib/mysql /var/lib/mysql.bak

Шаг 2. Указываем в настройках MySQL новый каталог.

Редактируем файл: /etc/mysql/mysql.conf.d/mysqld.cnf

Исправляем строку:

. . . datadir=/mnt/volume-nyc1-01/mysql . . .

. . .

datadir=/mnt/volume-nyc1-01/mysql

. . .

Шаг 3. Настройка прав доступа.

Редактируем файл: /etc/apparmor.d/tunables/alias

Вставляем строку:

. . . alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/, . . .

. . .

alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,

. . .

Перезагружаем:

sudo systemctl restart apparmor

sudo systemctl restart apparmor

Шаг 4. Запускаем MySQL.

sudo systemctl start mysql

sudo systemctl start mysql

 

Первоисточник: https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16-04

corp2.info