#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.