MySQL이 다른 인수로 무작위로 다시 시작됩니까?

MySQL이 다른 인수로 무작위로 다시 시작됩니까?

나는 다소 이상한 문제에 직면하고 있으며 그것을 이해하는 방법을 잘 모르겠습니다. mysql systemd 서비스가 이미 실행된 후 mysqld 프로세스가 systemd가 아닌 다른 인수로 다른 인수로 시작된 것 같습니다. 이로 인해 mysql 서버가 다운되고 새 프로세스가 응답하지 않게 됩니다.

systemd를 통해 시작하는 경우: /usr/sbin/mysqld

언제 시작되었나요? mysqld --user=mysql --init-file=/var/lib/mysql-files/tmp.Ld6xyAe3qb --socket=/tmp/tmp.obBArlPCj2/mysqld.sock --pid-file=/tmp/tmp.obBArlPCj2/mysqld.pid

mysql이 왜 다시 시작되는지, 누가, 어디서 새 인수가 나오는지는 확실하지 않습니다.

/var/lib/mysql-files/tmp.Ld6xyAe3qb(위에 제공된 init 파일)에는 다음 텍스트가 포함되어 있습니다.

USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';
SHUTDOWN;

로그에서 볼 수 있는 유일한 내용은 다음과 같습니다.

2020-08-08T06:57:31.123013Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user <via user signal>. Shutting down mysqld (Version: 8.0.21-0ubuntu0.20.04.4).
... [group replication, InnoDB, normal logs] ...
2020-08-08T06:57:49.954754Z 8 [System] [MY-013172] [Server] Received SHUTDOWN from user boot. Shutting down mysqld (Version: 8.0.21-0ubuntu0.20.04.4).

첫 번째 로그는 무작위로 발생합니다. 그 앞에는 기억이나 다른 종류의 오류(내가 볼 수 있는)를 나타내는 것이 없습니다. 두 번째 종료는 init-file에서 발생한 것 같습니다. 그러나 더 혼란스러운 점은 boot시스템이나 mysql에 사용자가 없다는 것입니다.

mysql을 사용하는 유일한 서비스는 Swift 개체 저장소를 위한 OpenStack Keystone이며 다른 OpenStack 서비스는 없습니다.

내가 알 수 있는 한, mysql을 참조하는 다른 cron 또는 systemd 서비스는 없지만 해당 테스트에 대해서는 긍정적이지 않습니다. 명령은 systemctl list-units --all --no-legend | awk '{print $1}' | xargs -n1 systemctl cat 2>/dev/null | grep mysql 다음과 같습니다.

After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service network-online.target local-fs.target remote-fs.target 
# /lib/systemd/system/mysql.service
User=mysql
Group=mysql
PIDFile=/run/mysqld/mysqld.pid
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
RuntimeDirectory=mysqld

첫 번째 줄은 /lib/systemd/system/cinder-volume.service제거해야 하는 의 줄입니다. 하지만 이 문제는 cinder가 설치되지 않은 서버에서 발생하므로 이 문제와 관련이 있을 것으로 생각되지 않습니다.

이 문제는 그룹 복제를 위해 설정된 4개의 서버에서 발생합니다.

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04 LTS
Release:    20.04
Codename:   focal
# mysql --version
mysql  Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64 ((Ubuntu))
# cat /etc/mysql/mysql.conf.d/mysqld.cnf 
#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
log-error-verbosity = 5
#
# * Basic Settings
#
user        = mysql
# pid-file  = /var/run/mysqld/mysqld.pid
# socket    = /var/run/mysqld/mysqld.sock
# port      = 3306
# datadir   = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir        = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 0.0.0.0
#
# * Fine Tuning
#
key_buffer_size     = 16M
# max_allowed_packet    = 64M
# thread_stack      = 256K
# thread_cache_size       = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options  = BACKUP
# max_connections        = 151
# table_open_cache       = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file        = /var/log/mysql/query.log
# general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log        = 1
# slow_query_log_file   = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
# server-id     = 1
# log_bin           = /var/log/mysql/mysql-bin.log
# binlog_expire_logs_seconds    = 2592000
max_binlog_size   = 100M
# binlog_do_db      = include_database_name
# binlog_ignore_db  = include_database_name
# disable non innodb storage engines for group replication
# https://dev.mysql.com/doc/refman/8.0/en/group-replication-configuring-instances.html
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
# use native password auth
default_authentication_plugin=mysql_native_password
# replication framework settings
server_id = 1
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = binlog
log_slave_updates = ON
binlog_format = ROW
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
# group replication settings
plugin_load_add = 'group_replication.so'
plugin-load-add = 'mysql_clone.so'
group_replication_group_name = "xxx"
group_replication_start_on_boot = on
group_replication_local_address = "xxx:33061"
group_replication_ip_whitelist="xxx"
group_replication_group_seeds = "xxx:33061"
group_replication_bootstrap_group = off
group_replication_enforce_update_everywhere_checks = off
group_replication_single_primary_mode = off
## tls
# required encrypted remote connections
# require_secure_transport = ON
tls_version=TLSv1.3
ssl_ca = "/etc/mysql/certs/eons.dev.pem"
ssl_cert = "/etc/mysql/certs/skyrim-mysql.pem"
ssl_key = "/etc/mysql/certs/skyrim-mysql.key"
ssl_cipher = "DHE-RSA-AES256-SHA"
##ssl_crl = "crl-server-revoked.crl"
##ssl_crlpath = "/.../crl_directory"
mysqlx_ssl_ca = "/etc/mysql/certs/eons.dev.pem"
mysqlx_ssl_cert = "/etc/mysql/certs/skyrim-mysql.pem"
mysqlx_ssl_key = "/etc/mysql/certs/skyrim-mysql.key"
mysqlx_ssl_cipher = "DHE-RSA-AES256-SHA"
# group replication tls
group_replication_ssl_mode = REQUIRED
group_replication_recovery_use_ssl = on
group_replication_recovery_ssl_ca = "/etc/mysql/certs/eons.dev.pem"
group_replication_recovery_ssl_cert = "/etc/mysql/certs/skyrim-mysql.pem"
group_replication_recovery_ssl_key = "/etc/mysql/certs/skyrim-mysql.key"
group_replication_recovery_ssl_cipher = "DHE-RSA-AES256-SHA"

관련 정보