¿Systemd no cierra MariaDB correctamente?

¿Systemd no cierra MariaDB correctamente?

Estamos ejecutando una pila LAMP en CentOS 7. Tenemos SCL habilitado pero solo PHP y Apache lo usan. No pudimos lograr que MariaDB realizara una transición exitosa en una máquina de prueba, por lo que nunca intentamos una transición en producción.

Últimamente hemos estado experimentando caídas de bases de datos más graves. Los bloqueos y la corrupción son un problema crónico, pero esta vez desconectaron nuestra wiki. Reparamos las tablas wiki y la base de datos MariaDB y pensamos que habíamos solucionado el problema (hasta la próxima vez). Sin embargo, noté lo siguiente en el archivo de registro después de reiniciar:

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 matchEs un problema bastante común y se ha discutido.hasta el hastío. Pero no deberíamos experimentarlo en un apagado/reinicio limpio. (correcciones por favor).

Como experimento realicé un sudo su -seguido de shutdown -r now. Los registros luego revelaron:

# 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'

Parece que systemd no cierra la base de datos correctamente. (correcciones por favor).

Busqué en los rastreadores de errores de CentOS y Systemd pero no encontré ningún problema relacionado. Espero que alguien más haya experimentado los problemas y pueda proporcionar los pasos para solucionarlos.

¿Cómo soluciono el problema de cierre de MariaDB?


Esto es todo lo que he llegado al descubrir qué sucede durante el cierre. No sé si esto es correcto (tal vez no) porque no soy un experto en sistemas.

[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

Y luego:

# 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

Respuesta1

"El número de secuencia de registro en los archivos ibdata no coincide" no debería ocurrir comúnmente. Es poco probable que se trate de un problema del sistema. Tomaría un mysqldump completo y lo restauraría en una instancia limpia y dejaría que eso aclarara las discrepancias de innodb.

nota: systemctl show mariadb.servicees una mejor manera de mostrar la configuración de systemd.

información relacionada