Не удалось запустить сервер базы данных MariaDB

Поскольку размер раздела / составляет всего 50 ГБ, а мои данные больше этого. А в / home есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home .

Поскольку размер раздела / составляет всего 50 ГБ, и мои данные больше этого. А в / home есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home .

Поскольку размер раздела / составляет всего 50 ГБ, и мои данные больше этого. А в / home есть 500 ГБ места. Итак, я перемещаю все данные MySQL в / home . Вот мои шаги (под учетной записью root ):

  1. выключайте MySQL

    # mysql -u root -p shutdown

  2. make каталог данных .

    # cd / home / && mkdir data

  3. переместить каталог / var / lib / mysql в / home / data

    # mv / var / lib / mysql / home / data /

  4. 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 ] раздел

  5. ln -s

    сначала я создал каталог с именем mysql в / var / lib / . И chown mysql: mysql / var / lib / mysql сделать ссылку: ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock

  6. сменить владельца / home / data / mysql

    chown -R mysql: mysql / home / data / mysql /

  7. запуск службы 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 .

Как это исправить? Спасибо!

2
задан 21 April 2016 в 14:54
2 ответа

Следите за своим / 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, чтобы файл оставался разреженным.

2
ответ дан 3 December 2019 в 10:38

У меня была точно такая же проблема при попытке переместить файлы базы данных 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.digitalocean.com/community/tutorials/how-to-change-a-mariadb-data-directory-to-a-new -location-on-centos-7

https://www.unixmen.com/selinux-and-non-default-home-directory-locations/

1
ответ дан 3 December 2019 в 10:38

Теги

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