Fedora

systemd 嘗試啟動 MariaDB 兩次(mariadb@multi-user.service vs mariadb.service)

  • August 4, 2018

我係統上的 systemd 似乎試圖啟動 MariaDB 兩次。第一次嘗試成功,所以我的系統沒有真正的問題,但第二次嘗試會產生虛假的錯誤消息,因為所有相關文件都已被第一個實例鎖定。

據我所知,它開始一次mariadb@multi-user.service又一次mariadb.service。結果systemctl list-units | grep -i maria是:

● mariadb.service
                       loaded failed     failed    MariaDB 10.2 database server
 mariadb@multi-user.service
                       loaded active     running   MariaDB 10.2 database server
 system-mariadb.slice
                       loaded active     active    system-mariadb.slice

如果我告訴 systemd 禁用,一切都會好起來的mariadb.service,但我不想猜測。

我的系統是 Fedora 28。安裝的 MairaDB 包是:

mariadb-config-10.2.16-1.fc28.x86_64
mariadb-rocksdb-engine-10.2.16-1.fc28.x86_64
mariadb-backup-10.2.16-1.fc28.x86_64
mariadb-10.2.16-1.fc28.x86_64
mariadb-cracklib-password-check-10.2.16-1.fc28.x86_64
mariadb-connector-c-3.0.5-1.fc28.x86_64
mariadb-server-10.2.16-1.fc28.x86_64
mariadb-common-10.2.16-1.fc28.x86_64
mariadb-server-utils-10.2.16-1.fc28.x86_64
mariadb-tokudb-engine-10.2.16-1.fc28.x86_64
mariadb-gssapi-server-10.2.16-1.fc28.x86_64
mariadb-errmsg-10.2.16-1.fc28.x86_64

可實例化的單元文件/usr/lib/systemd/system/mariadb@.service解釋了發生了什麼:

# Multi instance version of mariadb. For if you run mutiple verions at once.
# Also used for mariadb@bootstrap to bootstrap Galera.
#
# To use multi instance variant, use [mysqld.INSTANCENAME] as sections in my.cnf
# and start the service via:
#       systemctl start mariadb@{instancename}.server

所以,過去有人正是這樣做的,創建了一個名為multi-user. 這個名字向我暗示這可能是一個錯誤,而不是故意的。

您如何解決問題取決於您是否要保留實例化的服務。禁用一個或另一個服務,適當地編輯 my.cnf,然後重新啟動另一個服務。大多數人不需要實例化一次執行多個副本的 MariaDB,而您可能是大多數人。

引用自:https://serverfault.com/questions/924954