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

Мой жесткий диск разделен на два раздела, так что я могу легко переустановить Ubuntu и попробовать разные версии, не теряя данные своего домашнего каталога. Это настроено так:

20GB  -> /     (root)
180GB -> /home 

Я много занимаюсь разработкой, поэтому моя папка /var/www имеет символическую ссылку на /home/valorin/workspace.

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

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

27
задан 30 December 2016 в 21:09

5 ответов

Это действительно не относится к Ubuntu. Тем не менее, вот что может помочь: http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location

0
ответ дан 30 December 2016 в 21:09

У суперпользователя есть хорошие пошаговые инструкции о том, как решить эту проблему

Вот другой набор инструкций о том же самом http: // www .ubuntugeek.com / how-to-change-the-mysql-data-default-directory.html

Здесь он размещен. Идите и проголосуйте за оригинал, если вы можете на супер пользователя.

После некоторой общей путаницы с разрешениями я понял, что проблема не в том, что у меня не были правильные права доступа и пути, а в том, что AppArmor препятствовал чтению и записи mysql в новое местоположение.

Это мое решение:

Сначала остановите MySQL, чтобы ничего странного не происходило, пока вы возитесь:

$ sudo stop mysql

Затем переместите все каталоги баз данных в их новый дом:

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

Не перемещайте файлы, они будут сгенерированы mysql, просто переместите папки (которые являются базами данных).

Затем вежливо попросите AppArmor разрешить mysql использовать новую папку:

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld

добавить строки:

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

Затем скажите mysql, что datadir переместился:

[ 114]

измените строку:

datadir=/var/lib/mysql

на:

datadir=/my-new-db-dir/

ПРИМЕЧАНИЕ. В зависимости от настроек вашей базы данных вам может потребоваться изменить innodb-data-home-dir и т. Д. а также.

Затем перезапустите AppArmor, чтобы прочитать новые настройки:

$ sudo /etc/init.d/apparmor restart

И снова запустите MySQL, используя новый каталог данных:

$ sudo start mysql

Надеюсь, это поможет!

0
ответ дан 30 December 2016 в 21:09

Для тех, кто, как я, работает с VirtualBox и нуждается в перемещении каталога данных MySQL в общую папку на хост-системе, следуйте простому учебнику по адресу http://vacilando.org/en/article/moving-mysql. -data-файлы-VirtualBox-разделяемой папке

0
ответ дан 30 December 2016 в 21:09

Ну, на самом деле есть потенциальный конкретный ответ Ubuntu на этот вопрос.

Как упомянул Джергоес Линк, речь идет в основном о модификации /etc/mysql/my.cnf и установке нового значения для datadir = в [mysqld] раздел. Пока что неопределенная часть ответа.

Предполагая, что вы работаете с несколько более современной версией Ubuntu, у вас вполне может быть установлен AppArmor по умолчанию с профилем для / usr / sbin / mysqld в принудительном режиме. Этот профиль по умолчанию, скорее всего, не примет ваш новый каталог данных.

Давайте предположим, что вашим новым датадиром будет / home / data / mysql .

Если вы откроете файл /etc/apparmor.d/usr.sbin.mysqld , вы среди правил найдете эти две строки.

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

Предполагая наш пример выше, они должны быть заменены или (вероятно, предпочтительнее) дополнены этими двумя строками.

/home/data/mysql/ r,
/home/data/mysql/** rwk,

Прежде чем мы сможем запустить наш сервер MySQL с новым каталогом данных, нам также придется явно перезагрузить наш новый профиль apparmor.

$ sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
0
ответ дан 30 December 2016 в 21:09

Это не сработает.

Пользователь mysql должен иметь право писать в новый каталог:

sudo chown -R mysql:mysql /newdatadir
sudo chmod -R 754 /newdatadir
sudo chmod 754 /newdatadir/..
0
ответ дан 30 December 2016 в 21:09

Другие вопросы по тегам:

Похожие вопросы: