Назад | Перейти на главную страницу

MariaDB не запускается после сбоя сервера. Нет журналов ошибок

Мой сервер CentOS 7 недавно вышел из строя из-за отключения жесткого диска во время его работы, и теперь MariaDB не запускается, и я не получаю никаких журналов ошибок.

Все остальное на сервере, кажется, работает нормально и работает xfs_repair (похожий на fsck для xfs) на диске не помогло. Вот какие именно ошибки я получаю:

$ sudo systemctl start mariadb
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

$ sudo systemctl -l status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2018-07-29 19:34:03 MDT; 1min 22s ago
  Process: 21579 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 21577 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
  Process: 27150 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=1/FAILURE)
 Main PID: 21577 (code=exited, status=0/SUCCESS)

Jul 29 19:34:03 giivaserver systemd[1]: Starting MariaDB database server...
Jul 29 19:34:03 giivaserver mariadb-prepare-db-dir[27150]: Database MariaDB is not initialized, but the directory /var/lib/mysql is not empty, so initialization cannot be done.
Jul 29 19:34:03 giivaserver mariadb-prepare-db-dir[27150]: Make sure the /var/lib/mysql is empty before running mariadb-prepare-db-dir.
Jul 29 19:34:03 giivaserver systemd[1]: mariadb.service: control process exited, code=exited status=1
Jul 29 19:34:03 giivaserver systemd[1]: Failed to start MariaDB database server.
Jul 29 19:34:03 giivaserver systemd[1]: Unit mariadb.service entered failed state.
Jul 29 19:34:03 giivaserver systemd[1]: mariadb.service failed.

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

Вот мой my.cnf:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

В моем /var/log/mariadb/ или /var/run/mariadb/ папки. У меня также нет имя хоста.err (в моем случае giivaserver.err) в любом /var/log/ или /var/log/mysql как описано в официальной статье Что делать, если MariaDB не запускается.

Я пробовал поставить innodb_force_recovery = 1 с увеличением от 1 до 5 ниже [mysqld] в моем my.cnf и это ни на что не повлияло.

Я также пробовал создать резервную копию и переименовать свой /var/lib/mysql папка и повторный запуск mysql_install_db как говорят некоторые в Интернете, удаление может помочь, но это не имело значения.

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

Редактировать:

Содержимое моей папки / var / lib / mysql после переименования оригинала:

drwx------.  6 mysql mysql   122 Jul 29 19:03 .
drwxr-xr-x. 61 root  root   4096 Jul 29 19:03 ..
-rw-rw----.  1 mysql mysql 16384 Jul 29 19:02 aria_log.00000001
-rw-rw----.  1 mysql mysql    52 Jul 29 19:02 aria_log_control
drwx------.  2 mysql mysql  4096 Jul 29 19:02 mysql
drwxr-xr-x.  8 mysql mysql   232 Jul 29 18:58 mysqlBAK
drwx------.  2 mysql mysql  4096 Jul 29 19:02 performance_schema
drwx------.  2 mysql mysql     6 Jul 29 19:02 test

Через несколько дней я смог исправить это без потери данных. Как я и подозревал, потери данных из-за отключения не произошло. Я сделал много вещей, чтобы попытаться решить эту проблему, но вот что, как мне кажется, исправило:

Я переименовал свой /var/lib/mysql папку, чтобы убедиться, что у меня есть резервная копия, затем я удалил свой /etc/my.cnf файл. Я переустановил mariadb и mariadb-server, а затем запустил его. Оттуда я скопировал резервную копию /var/lib/mysql папка обратно в мою /etc/my.cnf добавлены следующие строки (полученные из Вот):

port = 8881
innodb_force_recovery=3
innodb_purge_threads=0

(Я думаю, что на самом деле я использовал режим восстановления 4, но мне бы тоже подошел 3)

Оттуда я смог запустить MariaDB со всеми моими базами данных. Я тогда побежал mysqlcheck --all-databases -p чтобы обнаружить, что ни одна из моих баз данных не была повреждена. Отсюда мне не удалось заставить MariaDB успешно остановиться, а затем у меня возникли проблемы с его повторным запуском, поэтому я повторил процесс удаления /var/lib/mysql/ папку и запустил установку базы данных, чтобы я мог скопировать свою резервную копию обратно.

Оттуда я запустил MariaDB с принудительным восстановлением InnoDB, и как только он запустился, я сбросил все, используя команду mysqldump -u root -p --all-databases > alldb.sql. Затем я принудительно остановил MariaDB, поскольку он не остановился должным образом, а затем перезагрузился. Я удалил MariaDB, удалил свой /var/lib/mysql/и переименовал мой /etc/my.cnf, затем переустановил MariaDB. Как только я запустил его заново, я импортировал свои выгруженные базы данных, используя mysql -u root -p < alldb.sql и сбросить привилегии в оболочке MySQL, используя FLUSH PRIVILEGES; и теперь все работает отлично, без потери данных.

Поскольку я использую CentOS, мне приходилось делать кое-что, что касается SELinux. В основном я просто следил за тем, что говорит всплывающий диалог диагностики, а затем повторно запускал команды SELinux, которые я делал изначально при установке моего сервера Nextcloud, чтобы получить все разрешения правильно.

Похоже, что хранилище базы данных повреждено. Выполните восстановление из резервной копии и поставьте на жесткие диски большой знак «не отключайте от сети во время работы».