Перемещение базы данных MySQL InnoDB на отдельный диск
в моей установке MySQL у меня есть одна база данных InnoDB, которая, как я знаю, вырастет очень большой, поэтому я решил переместить ее на свой собственный диск. Я надеялся сделать это, переместив файлы на другой диск, а затем создать символическую ссылку, но я столкнулся с ошибками!
вот что я сделал:
1) в моем.cnf я установил
[mysqld] innodb_file_per_table
(это работает, у меня есть один .ibd per .FRM в папке базы данных.)
2)у меня есть проверено, если символические ссылки в порядке с SHOW VARIABLES LIKE "have_symlink";
(Я знаю, что в документации написано:
символические ссылки полностью поддерживаются только для таблицы MyISAM. Для файлов, используемых таблицы для других механизмов хранения, вы могут возникнуть странные проблемы, если вы попытаетесь используйте символические ссылки.
но мне нужны внешние ключи...)
3) я переместил папку базы данных и создал символическую ссылку.
4) перезапустил mysql и попробовал:
mysql> USE db_name
Database changed
mysql> SHOW TABLES;
ERROR 1018 (HY000): Can't read dir of './db_name/' (errno: 13)
mysql> exit
user@comp# perror 13
OS error code 13: Permission denied
символическая ссылка (как и ожидалось)lrwxrwxrwx mysql mysql db_name -> /path-to/db_name/
разрешения папки базы данных являются drwx------ mysql mysql
Все права доступа к файлам -rw-rw---- mysql mysql
я использую сервер Ubuntu 10.04 с MySQL 5.1.41 (по умолчанию от apt).
кто-нибудь из вас сделал это успешно?
4 ответов
Я не уверен, что ваше решение является лучшей идеей. Смотрите мой пост здесь:
здесь также есть другая нить:
оказывается, это работает, но мой старый враг appArmor заблокировал MySQL от чтения перемещенного каталога.
sudo nano /etc/apparmor.d/usr.sbin.mysqld
добавить строки:
/new-db-path/ r,
/new-db-path/** rwk,
Спасибо за помощь!
Норлинг-младший спас мой день в AppArmor совет, но поскольку у меня были некоторые проблемы с настройкой, я пишу более подробный ответ. Я использую Ubuntu 12.04.
начните становиться root, чтобы сохранить необходимость ввести все, что sudos:
sudo su -
после MySQL docs, вы сначала переместите свой уже создан путь к базе данных на другой путь:
mv /var/lib/mysql/yourdatabase /new/path/
вот моя первая ловушка. Проверьте, имеет ли пользователь mysql доступ к этому новому путь:
sudo -u mysql ls /new/path/yourdatabase
Если вам отказали в доступе, вы, вероятно, должны дать разрешение на выполнение каждому родительскому директору:
chmod a+x /new /new/path/
должно быть возможно использовать локальные монтирования (привязки) с соответствующими разрешениями и монтировать оприоны (включая контексты selinux или apparmor):
/dev/sdc on /var/lib/mysql/my-db/
/dev/sdd on /var/lib/mysql/her-db/
fs.example.com:/path/to/wherever on /var/lib/mysql/my-other-db/
хотя Я не тестировал это решение так что используйте на свой страх и риск.