systemd fährt MariaDB nicht ordnungsgemäß herunter?

systemd fährt MariaDB nicht ordnungsgemäß herunter?

Wir betreiben einen LAMP-Stack auf CentOS 7. Wir haben SCL aktiviert, aber nur PHP und Apache verwenden es. Wir konnten MariaDB auf einer Testmaschine nicht erfolgreich umstellen, daher haben wir nie versucht, in der Produktion umzustellen.

In letzter Zeit kam es häufiger zu schweren Datenbankabstürzen. Die Abstürze und Beschädigungen sind ein chronisches Problem, aber dieses Mal war unser Wiki offline. Wir reparierten die Wiki-Tabellen und die MariaDB-Datenbank und dachten, wir hätten das Problem behoben (bis zum nächsten Mal). Nach einem Neustart bemerkte ich jedoch Folgendes in der Protokolldatei:

InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
InnoDB: Database was not shut down normally! 

The log sequence number in ibdata files does not matchist ein ziemlich häufiges Problem und wurde diskutiertbis zum Erbrechen. Aber bei einem sauberen Herunterfahren/Neustart sollte dies nicht der Fall sein. (bitte Korrekturen vornehmen).

Als Experiment führte ich ein durch, sudo su -gefolgt von shutdown -r now. Die Protokolle zeigten dann:

# tail /var/log/mariadb/mariadb.log
180901 23:01:26 Percona XtraDB (http://www.percona.com) 5.5.59-MariaDB-38.11 started; log sequence number 1478830786
180901 23:01:26 [Note] Plugin 'FEEDBACK' is disabled.
180901 23:01:26 [Note] Server socket created on IP: '0.0.0.0'.
180901 23:01:26 [Note] Event Scheduler: Loaded 0 events
180901 23:01:26 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.60-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
180901 23:01:30 [ERROR] mysqld: Table './my_wiki/wikicryptopp_objectcache' is marked as crashed and should be repaired
180901 23:01:30 [Warning] Checking table:   './my_wiki/wikicryptopp_objectcache'
180901 23:05:01 [ERROR] mysqld: Table './my_wiki/wikicryptopp_module_deps' is marked as crashed and should be repaired
180901 23:05:01 [Warning] Checking table:   './my_wiki/wikicryptopp_module_deps'

Es scheint, dass systemd die Datenbank nicht ordnungsgemäß herunterfährt. (bitte Korrekturen).

Ich habe die Bugtracker von CentOS und Systemd durchsucht, aber kein entsprechendes Problem gefunden. Ich hoffe, dass jemand anderes die Probleme schon einmal hatte und die Schritte zur Behebung angeben kann.

Wie behebe ich das MariaDB-Shutdown-Problem?


So weit bin ich gekommen, um herauszufinden, was beim Herunterfahren passiert. Ich weiß nicht, ob das richtig ist (vielleicht auch nicht), weil ich kein Systemd-Typ bin.

[root@ftpit ~]# find /etc -name mariadb.service
/etc/systemd/system/multi-user.target.wants/mariadb.service
[root@ftpit ~]# find /etc -name mysql.service
[root@ftpit ~]# find /opt/rh -name mariadb.service
[root@ftpit ~]# find /opt/rh -name mysql.service

Und dann:

# cat /etc/systemd/system/multi-user.target.wants/mariadb.service
# It's not recommended to modify this file in-place, because it will be
# overwritten during package upgrades.  If you want to customize, the
# best way is to create a file "/etc/systemd/system/mariadb.service",
# containing
#       .include /lib/systemd/system/mariadb.service
#       ...make your changes here...
# or create a file "/etc/systemd/system/mariadb.service.d/foo.conf",
# which doesn't need to include ".include" call and which will be parsed
# after the file mariadb.service itself is parsed.
#
# For more info about custom unit files, see systemd.unit(5) or
# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F

# For example, if you want to increase mariadb's open-files-limit to 10000,
# you need to increase systemd's LimitNOFILE setting, so create a file named
# "/etc/systemd/system/mariadb.service.d/limits.conf" containing:
#       [Service]
#       LimitNOFILE=10000

# Note: /usr/lib/... is recommended in the .include line though /lib/...
# still works.
# Don't forget to reload systemd daemon after you change unit configuration:
# root> systemctl --system daemon-reload

[Unit]
Description=MariaDB database server
After=syslog.target
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql

ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n
# Note: we set --basedir to prevent probes that might trigger SELinux alarms,
# per bug #547485
ExecStart=/usr/bin/mysqld_safe --basedir=/usr
ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

# Place temp files in a secure directory, not /tmp
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Antwort1

„Die Protokollsequenznummer in den IBData-Dateien stimmt nicht überein“ sollte nicht häufig vorkommen. Es ist unwahrscheinlich, dass dies ein Systemd-Problem ist. Ich würde einen vollständigen MySQL-Dump durchführen und diesen in einer sauberen Instanz wiederherstellen und die InnoDB-Diskrepanzen dadurch beheben lassen.

Hinweis: systemctl show mariadb.serviceist eine bessere Möglichkeit, die systemd-Konfiguration anzuzeigen.

verwandte Informationen