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

В долгосрочной перспективе это может быть немного тяжело, но вы можете попробовать Zentyal (ранее eBox).

У меня есть ящик Zentyal, и обработка трафика отлично работает. Но, это автономная коробка с 2 сетевыми картами, и это мой маршрутизатор. Я сделал установщик Zentyal, который просто прокладывает вашу машину и делает ее коробкой Zentyal.

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

Теперь я запускал Zentyal в качестве виртуальной машины в VMWare Player перед тем, как внедрить мой рабочий роутер. Я хотел удостовериться, что я был достаточно знаком, чтобы не долго терпеть мое интернет-соединение, поэтому я использовал виртуальную машину для практики. Потребовалось некоторое финиширование, чтобы подтолкнуть подключение к Интернету моей рабочей станции через два виртуальных сетевых адаптера на виртуальной машине в одной коробке, но как только я получил ее работу, она сделала то, что вы просите. Это было быстро, стабильно и бежало в течение нескольких недель на заднем плане, и я почти не заметил этого. Я дал только один процессор и 1 ГБ оперативной памяти, и это было очень быстро и т. Д. Опять-таки, возможно, довольно сложное и перегруженное решение того, что вы действительно ищете.

Я видел сообщения о том, что модули Zentyal получают установленный по частям на существующем ящике и бегущий в фоновом режиме и выполняющий то, что вам нужно. Я не знаком с этим методом, поэтому вам нужно немного поработать над Google.

Но могу ли я убедить вас обновить ваши намерения? Не могли бы вы подумать о появлении пары хороших гигабитных ников в старом ПК, укладывающемся вокруг и запускающем Zentyal, pfSense, Untangle или любой другой из многих свободно распространяемых полнофункциональных брандмауэров / UTM с открытым исходным кодом? Это даст вам QoS / Traffic shaping для всей вашей сети, и это хороший опыт обучения. Делая это таким образом, я могу наблюдать за использованием всей моей сети по протоколу, наблюдать за необычной деятельностью, отбрасывать пинг в большинстве моих игр вниз и следить за тем, чтобы моя жена загружала фильм по требованию, чтобы мой xBox не отставание настолько плохое, что я выстрелил 3 раза, прежде чем новый кадр загрузится.

1
задан 18 February 2017 в 02:50

6 ответов

Я обнаружил, что AppArmor был виновником, изучив syslog и смог успешно изменить местоположение данных mysql, выполнив этот процесс.

Обратите внимание, что в файлах, линии, начинающиеся с +, и линии, начинающиеся с -, были удалены. Вы не должны набирать / вставлять знаки + при добавлении строк в эти файлы.

Я клонировал каталог mysql в новое место:

sudo rsync -av /var/lib/mysql /new_dir

Тогда я отредактировал строку datadir в /etc/mysql/my.cnf:

sudo vi /etc/mysql/my.cnf
-datadir     = /var/lib/mysql
+datadir     = /new_dir/mysql

Затем я редактировал /etc/apparmor.d/usr.sbin.mysqld:

sudo vi /etc/apparmor.d/usr.sbin.mysqld
-  /var/lib/mysql/ r,
-  /var/lib/mysql/** rwk,
+  /new_dir/mysql/ r,
+  /new_dir/mysql/** rwk,

Затем я перезапустил mysql .

20
ответ дан 25 May 2018 в 11:23

Знайте.

Если у вас есть таблицы InnoDB, вы ДОЛЖНЫ копировать файлы ibdata* и ib_logfile* или вы не сможете использовать таблицы. Вы получите:

«Таблица» databaseName.tableName «не существует»

.

Запустите эту команду копирования, чтобы скопировать файл ibdata* и ib_logfile*.

sudo cp -p /var/lib/mysql/ib* /array2/mysql/
13
ответ дан 25 May 2018 в 11:23
  • 1
    это должен быть комментарий, это не полный ответ – Postadelmaga 2 December 2016 в 07:57

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

копировать с разрешениями нетронутыми:

rsync -avzh /var/lib/mysql /path/to/new/place

создать резервную копию (в случае, если что-то пойдет не так): [!d2 ]

mv /var/lib/mysql /var/lib/_mysql

создать новый пустой каталог вместо старого:

mkdir /var/lib/mysql

bind привязать новое местоположение к старому:

mount -B /path/to/new/place /var/lib/mysql

Надеюсь, что это поможет кому-то , потому что symlinking не работал для меня, и это был самый простой способ

4
ответ дан 25 May 2018 в 11:23

Если вы перемещаете свой datadir, вам нужно не только предоставить новые разрешения datadir, но вам нужно обеспечить, чтобы все родительские каталоги имели разрешение.

Я переместил свой datadir на жесткий диск, установленный в Ubuntu как:

/media/*user*/Data/

, а мой datadir - это базы данных.

Мне нужно было установить разрешения для 771 для каждого из носителей, базы данных и каталогов данных:

sudo chmod 771 *DIR*

Если это не сработает, другой способ заставить mysql работать - это изменить пользователя в /etc/mysql/my.cnf на root; хотя, несомненно, есть некоторые проблемы с этим с точки зрения безопасности.

3
ответ дан 25 May 2018 в 11:23

Я предпочитаю использовать параметр mount with bind, поэтому я избегаю дальнейших изменений конфигурации Apparmor и Mysql.

Например:

Предположим, что я хочу переместить все в /var/www. Предположим, что этот каталог является моей средой dev, и он монтируется в другой раздел

. Сначала нам нужно остановить mysql:
sudo systemctl stop mysql.service
Мы перемещаем файлы (сохраняем разрешение)
sudo rsync -av /var/lib/mysql /var/www
. Это приведет к созданию каталога со всем содержимым. Мы удаляем все в старом каталоге:
sudo rm -r /var/lib/mysql/*
Мы монтируем новый каталог с опцией bind в старой. отредактируйте /etc/fstab и добавьте эту строку:
/var/www/mysql /var/lib/mysql  none  bind 0 0
Это установит /var/www/mysql в нашем пустом каталоге /var/lib/mysql. Параметр bind здесь делает магию, он заполняет /var/lib/mysql содержимым /var/www/mysql, поэтому для mysql и apparmor это будет похоже на то, что ничего не изменилось. Теперь мы монтируем:
sudo mount -a
и перезапускаем mysql.
1
ответ дан 25 May 2018 в 11:23

Вы понимаете, что если вы будете следовать командам дословно из принятого ответа, это не удастся?

cp -R / var / lib / mysql / array2 / mysql

Скопирует / var / lib / mysql to /array2/mysql/mysql.

Когда вы устанавливаете свой файл конфигурации, вам лучше вставлять / array2 / mysql / mysql в качестве каталога, иначе ваш mysqld не запустится.

Лучшими командами копирования будут:

cp -R / var / lib / mysql / array2 / cp -R / var / lib / mysql / users / array2 / mysql

Только мои 2 цента стоит.

0
ответ дан 25 May 2018 в 11:23

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

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