Как я могу переместить базу данных MySQL на другой диск?


34

Я использую MySQL 5.5 на локальной машине для анализа большого количества правительственных данных. Я создал локальную базу данных, которая находится на моем диске по умолчанию (диск Win7 C:). Я хотел бы сохранить данные на моем диске E: большом внешнем диске eSATA.

Какие шаги я должен предпринять?

mysql 

Вы не можете экспортировать дБ в виде файла sql, затем сохранить файл и сделать e: затем в будущем, если вы хотите восстановить дБ, вы можете импортировать этот файл

@tq - Это не сработает. Он хочет изменить каталог данных сервера MySQL. Если он экспортирует и импортирует его, он все равно будет на том же диске!

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

Ответы:


35
  1. Отключение mysql.
  2. Переместите все файлы в текущем каталоге данных в новое место (проверьте расположение в шаге 3 - datadirпараметр).
  3. Найдите my.iniфайл (он находится в установочном каталоге mysql). Измените datadirзначение параметра, чтобы оно указывало на новое местоположение.
  4. Запустите MySQL.

Это дало мне ошибки при попытке запустить MySQL (проблемы с разрешениями). Я остановился на решении , которое я публикую здесь , которое, я надеюсь, поможет сэкономить время.
snapfractalpop

1
@snapfractalpop вопрос для Windows
Адам

@adam windows упоминается в основной части вопроса, но он не помечен как вопрос только для окон, и окна не упоминаются в заголовке. Я разместил ссылку в комментариях, потому что другие пользователи, не работающие в Windows, могут также наткнуться на этот вопрос.
snapfractalpop

Я обнаружил, что должен был использовать, /а не \ как разделитель каталогов в пути к каталогу datadir. Я использую WAMPserver на Windows 10.
Стив

Каталог ProgramData может быть скрыт в вашем файловом менеджере. Я думал, что он не существует, пока я не изменил настройку для отображения скрытых файлов.
WestAce

6

Несмотря на то, что вы запрашиваете окна, вот несколько хороших указаний для тех, кто заканчивает здесь и ищет направления linux / ubuntu:

Предположения:

  • У вас есть данные MySQL на внешнем / USB / альтернативном диске /mountpoint/var/lib/mysql, возможно, с компьютера, который умер или старой установки
  • Вы хотите переместить его в новую версию Ubuntu локально /var/lib/mysql
  • Остановить MySQL с:
    sudo /etc/init.d/mysql stop.
  • Сделайте резервную копию текущего (чистый) MySQL каталога данных с:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Затем скопируйте старый каталог данных со старого диска с помощью:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    где mountpointнаходится путь к монтированию.
  • Теперь перезапустите MySQL с помощью:
    sudo /etc/init.d/mysql start

Если повезет, MySQL должен перезагрузиться, и вы должны вернуть свои старые базы данных.

Источник mb_webguy@ubuntuforums.org


3
(!) это не будет работать, потому что
конфиг

4

Решение 1:

  1. Прежде всего, сделайте резервную копию ваших данных, используя mysqldump.
  2. Если вы устанавливаете Mysql Server из официального пакета, вы можете сделать это, запустив программу MySQLINstanceConfig.exe из каталога bin вашего сервера.
  3. Импорт данных

MySQLINstanceConfig.exe

Второе решение (не рекомендуется, но работает на той же машине)

  1. Остановите Mysql сервер.
  2. Скопируйте данные из вашего каталога данных в новый каталог
  3. Откройте файл my.cnf (в моем случае «C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini»)
  4. найдите строку как datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" и измените путь к вашему новому местоположению
  5. Запустите свой сервер

Начиная с версии 5.6 MySQLInstanceConfig.exe больше не распространяется. Эта функциональность заменяется установщиком. http://bugs.mysql.com/bug.php?id=66306


Существует ли эквивалентная программа Linux для перемещения данных
Рон Пигготт,

После перемещения данных со вторым подходом я не смог запустить MariaDB (версия 5.5). После предоставления пользователю службы доступа к новому датадиру, служба запускается, и я готов подключиться к БД. Однако доступ к любой таблице по- прежнему не удается: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Как я могу убедиться, что разрешения установлены правильно?
Брэм

2

Для Windows, начиная с MySQL Installer 1.4.6 (2015-04-07) , местоположение данных может быть указано в разделе реестра, который указывает местоположение my.iniфайла, поэтому, если данные были первоначально установлены в расположении , отличном от заданного по умолчанию my.iniфайл не будет C:\ProgramData\MySQL\MySQL Server x.x\.

Расположение значений реестра (по крайней мере, начиная с MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationэто то, REG_SZчто указывает на папку, в которой находятся файлы приложения MySQL; по умолчанию:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationэто то, REG_SZчто указывает на папку, где my.iniнаходится; по умолчанию также:C:\Program Files\MySQL\MySQL Server x.x\

Кроме того, my.iniпуть к файлу включен в команду службы в этом разделе реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXв ImagePath REG_EXPAND_SZзначение.

Значение по умолчанию этой строки: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Итак, суть в том, что для перемещения файлов данных в этом сценарии вы должны выполнить шаги, опубликованные @ITCuties с некоторыми дополнениями.

Вот полные шаги:

  1. Отключение mysql.
  2. Посмотрите приведенное выше DataLocationзначение реестра, чтобы найти текущее my.iniместоположение файла, и, если вы хотите также переместить my.iniфайл, обновите DataLocationпуть и переместите my.iniфайл по этому новому пути.
  3. Если вы меняете расположение my.iniфайла, вам необходимо обновить путь в разделе реестра служебных команд, указанном выше.
  4. Откройте my.iniфайл, найдите datadirпараметр. Переместите файлы с этого datadirпути на путь, по которому вы хотите разместить данные, а затем также обновите datadirпараметр с этим новым путем.
  5. Запустите MySQL.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.