Поскольку размер раздела /
составляет всего 50 ГБ, а мои данные больше этого. А в / home
есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home
.
Поскольку размер раздела /
составляет всего 50 ГБ, и мои данные больше этого. А в / home
есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home
.
Поскольку размер раздела /
составляет всего 50 ГБ, и мои данные больше этого. А в / home
есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home
.
Вот мои шаги (под учетной записью root
):
выключайте MySQL
# mysql -u root -p shutdown
make каталог данных
.
# cd / home / && mkdir data
переместить каталог / var / lib / mysql
в / home / data
# mv / var / lib / mysql / home / data /
edit my.cnf
и / usr / lib64 / mysql / mysql_config
изменить socket = / var / lib / mysql / mysql.sock
на socket = / home / data / mysql / mysql.sock
add datadir = / home / data / mysql
только в my.cnf
в [mysqldb ]
раздел
ln -s
сначала я создал каталог с именем mysql
в / var / lib /
. И chown mysql: mysql / var / lib / mysql
сделать ссылку: ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock
сменить владельца / home / data / mysql
chown -R mysql: mysql / home / data / mysql /
запуск службы MySQL
# systemctl start mariadb.service
Но запуск не удался.
[root@localhost]~# systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
Подробное сообщение:
[root@localhost]~# systemctl status mariadb.service
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2016-04-21 19:51:13 HKT; 39s ago
Process: 7144 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
Process: 7143 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
Process: 7090 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 7143 (code=exited, status=0/SUCCESS)
Apr 21 19:51:12 localhost.localdomain systemd[1]: Starting MariaDB database server...
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe Logging to '/home/data/mysql/localhost.localdomain.err'.
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe Starting mysqld daemon with databases from /home/data/mysql
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe mysqld from pid file /home/data/mysql/localhost.localdomain.pid ended
Apr 21 19:51:13 localhost.localdomain systemd[1]: mariadb.service: control process exited, code=exited status=1
Apr 21 19:51:13 localhost.localdomain systemd[1]: Failed to start MariaDB database server.
Apr 21 19:51:13 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
Apr 21 19:51:13 localhost.localdomain systemd[1]: mariadb.service failed.
[root@localhost]~# journalctl -xe
-- The start-up result is done.
Apr 21 19:50:01 localhost.localdomain systemd[1]: Starting Session 7 of user root.
-- Subject: Unit session-7.scope has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-7.scope has begun starting up.
Apr 21 19:50:01 localhost.localdomain CROND[6971]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 21 19:51:12 localhost.localdomain polkitd[900]: Registered Authentication Agent for unix-process:7084:268964 (system bus name :1.80 [/usr/bin/pkttyagent
Apr 21 19:51:12 localhost.localdomain systemd[1]: Starting MariaDB database server...
-- Subject: Unit mariadb.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has begun starting up.
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe Logging to '/home/data/mysql/localhost.localdomain.err'.
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe Starting mysqld daemon with databases from /home/data/mysql
Apr 21 19:51:12 localhost.localdomain mysqld_safe[7143]: 160421 19:51:12 mysqld_safe mysqld from pid file /home/data/mysql/localhost.localdomain.pid ended
Apr 21 19:51:13 localhost.localdomain systemd[1]: mariadb.service: control process exited, code=exited status=1
Apr 21 19:51:13 localhost.localdomain systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has failed.
--
-- The result is failed.
Apr 21 19:51:13 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
Apr 21 19:51:13 localhost.localdomain systemd[1]: mariadb.service failed.
Apr 21 19:51:13 localhost.localdomain polkitd[900]: Unregistered Authentication Agent for unix-process:7084:268964 (system bus name :1.80, object path /org/f
lines 3132-3161/3161 (END)
Моя ОС - CentOS 7
, MySQL - MariaDB
.
Как это исправить? Спасибо!
Следите за своим / var / log / messages, пока вы пытаетесь его запустить. Вы можете обнаружить, что SELinux мешает:
tail -f /var/log/messages
Попробуйте оставить MariaDB в ожидаемом месте / var / lib / mysql. Варианты включают:
1) Если производительность имеет значение: сожмите файловую систему и раздел (или логический том) в / home, затем создайте новый раздел и смонтируйте его в / var / lib / mysql
2) Если производительность менее критична : Создайте большой файл на /home/mysql.img и используйте этот файл через losetup как / dev / loop0 и смонтируйте в /var/lib/mysql.
3) Если производительность действительно не имеет значения: выполните losetup на большой разреженный файл и передайте "discard" вашей файловой системе ext4, чтобы файл оставался разреженным.
У меня была точно такая же проблема при попытке переместить файлы базы данных MariaDB в общий ресурс ISCSI. Когда мой общий ресурс был смонтирован и правильно отформатирован, SELinux помечает каталог как system_u: object_r: unlabeled_t
. Вы можете проверить метку своего каталога, выполнив следующую команду ... ls -Zd
SELinux не любит сюрпризов. Итак, чтобы запустить MariaDB после изменения каталога данных, вам нужно изменить метку нового каталога. Используйте следующую команду: semanage fcontext -a -e / var / lib / mysql / <ваш новый каталог>
. Эта команда отображает теги старого каталога mysql на новый. Перепроверьте, запустив ls -Zd
для только что отмеченного каталога.
Наконец, распространите изменения во вновь измененном каталоге с помощью следующей команды: restorecon -R <ваш новый каталог>
.
Все это предполагает, что вы скопировали все файлы mysql без каких-либо изменений и что у вас есть резервная копия оригинала на случай, если вам понадобится вернуться.
Ссылки на это решение можно найти в следующих статьях:
https://www.unixmen.com/selinux-and-non-default-home-directory-locations/