Таблицы MySQL на внешнем жестком диске

#mysql #database #mysql-management #hard-drive

#mysql #База данных #mysql-управление #жесткий диск

Вопрос:

У меня есть большой объем текстовых данных, которые мне нужно импортировать в MySQL. Я делаю это на MacBook, и для этого недостаточно места, поэтому я хочу сохранить его на внешнем жестком диске (на данный момент меня не очень беспокоит скорость — это просто для тестирования).

Каков наилучший способ сделать это?

  • Установите MySQL на внешний жесткий диск (возможно ли это на Mac?)
  • Установите MySQL на жесткий диск ноутбука и разместите таблицы на внешнем (как?)

Ответ №1:

Один простой способ — создать символическую ссылку, заменяющую текущее местоположение файла базы данных mysql, указывающую на внешний диск. Символическая ссылка Google.

пример использования: после завершения работы mysql измените старое имя папки базы данных mysql на что-то другое и создайте символическую ссылку, используя команду ln, как показано ниже

 ln -s [EXTERNAL DRIVE PATH] [MYSQL DB FOLDER PATH]
  

Затем переместите все предыдущее содержимое папки mysql db в новое местоположение.

Комментарии:

1. Это половина процедуры. Вам нужно будет добавить следующие строки в «/etc/apparmor.d/usr.sbin.mysqld»n /external/drive/path/ r, /external/drive /path/** rwk, n иначе вы получите: n 121210 8:36:18 [Предупреждение] Не удается создать тестовый файл /external/drive / path /hostname. нижний-тест 121210 8:36:18 [Предупреждение] Не удается создать тестовый файл / внешний / диск / путь / имя хоста. mysqld с нижним тестированием: не удается изменить каталог на ‘/external/drive / path /’ (код ошибки: 13) 121210 8:36:18 [ ОШИБКА] Прерывание

Ответ №2:

Откройте /etc/mysql/my.cnf и найдите значение datadir . В качестве альтернативы, вы можете узнать это в mysql monitor с помощью

 mysql>   select @@datadir;
  

Остановить mysql

 sudo systemctl stop mysql
  

Скопируйте данные оттуда на свой внешний диск

 sudo rsync -av /var/lib/mysql /mnt/myHDD/somedir/mysql
  

Измените расположение datadir в my.cnf .
Запустите mysql снова

 sudo systemctl start mysql
  

Убедитесь, что все по-прежнему в порядке, и удалите исходный каталог данных.

Эта страница содержит более подробное руководство но все дополнительные проблемы, о которых оно предупреждает, не были актуальны для меня на моем raspberry PI. Т.е. я пропустил их, и это сработало.

Ответ №3:

Для второго варианта табличное пространство может сработать:

http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html

Ответ №4:

Ответ пользователя user658991 находится на полпути.

После добавления программной ссылки вам нужно будет добавить следующую строку в /etc/apparmor.d/usr.sbin.mysqld под двумя строками в старую папку mysql.

 /path/to/mysql/folder/on/the/external/ r
/path/to/mysql/folder/on/the/external/ ** rwk
  

Без этих 2 строк MySQL не может начать жаловаться на:

 Can't create test file /path/to/mysql/folder/on/the/external/hostname.lower-test
Can't create test file /path/to/mysql/folder/on/the/external/hostname.lower-test
mysqld: Can't change dir to '/path/to/mysql/folder/on/the/external/' (Errcode: 13)
  

Перезапустите apparmor, чтобы изменения вступили в силу.

 sudo invoke-rc.d apparmor restart
  

При этом MySQL запускается нормально.

Комментарии:

1. Можно ли это сделать, сохраняя все мои базы данных на HD и добавляя новую на внешний HD?

2. @aresnelupin да, все ваши базы данных будут поддерживаться.

3. Это не требовалось для меня с MySQL версии 5.5.60-0 deb8u1.