Mariadb

Galera 集群節點失敗並出現錯誤。全新集群+主/節點。訪問被拒絕或無法連接

  • February 22, 2022

我有問題。

以前的集群致命地崩潰了,所以我創建了一個具有幾乎相同設置的新集群(僅更改了集群名稱)。

這是一個節點的 galera.cnf:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="cluster"
wsrep_cluster_address="gcomm://y.y.y.139, x.x.x.25, 10.5.2.1"

# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="x.x.x.25"
wsrep_node_name="xxx002"

用於 master 的 Galera.cnf 僅在 wsrep_node_address (yyy139) 和 wsrep_node_name (yyy001) 方面有所不同。

我已經添加了 debian-sys-maint 的權限,但是一旦我連接到主節點,我將得到:

Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 0 [Note] WSREP: 1.0 (xxx002): State transfer from 0.0 (yyy001) complete.
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 0 [Note] WSREP: Shifting JOINER -> JOINED (TO: 926)
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 0 [Note] WSREP: Member 1.0 (xxx002) synced with group.
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 0 [Note] WSREP: Shifting JOINED -> SYNCED (TO: 926)
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 2 [Note] WSREP: Synchronized with group, ready for connections
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 2 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 11 [Warning] Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 12 [Warning] Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
Jan 09 13:44:31 xxx002 mysqld[2609]: 2019-01-09 13:44:31 13 [Warning] Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

當然我將無法登錄到mysql,因為我會得到:

錯誤 1524 (HY000): 外掛 ‘unix_socket’ 未載入

我不知道發生了什麼。它工作正常(我不得不重新安裝所有伺服器,但我使用的是相同的模板)。

我現在無法創建集群 4 天 :(

我在節點上安裝 MariaDB 後就添加了這些:

GRANT ALL PRIVILEGES on *.* TO debian-sys-maint@localhost IDENTIFIED BY  'your password' WITH GRANT OPTION; 
FLUSH PRIVILEGES;

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'PASS';
CREATE USER 'admin'@'10.%' IDENTIFIED BY 'PASSS';

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';

主數據是從 .sql 恢復的(從以前的集群備份)。

不確定是什麼原因造成的?

聽起來這個問題與 Galera 無關。也許在您為它做之前,debian-sys-maint@localhost使用者已經使用unix_socket定義的身份驗證外掛創建了GRANT?並且錯誤消息非常清楚地說明了問題所在:ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded.

因此,您可以使用debian-sys-maint@localhost預設身份驗證外掛重新創建使用者 - mysql_native_password(選項 1),也可以安裝unix_socket外掛(選項 2):

選項1

DROP USER debian-sys-maint@localhost; 
CREATE USER debian-sys-maint@localhost IDENTIFIED BY 'your password'; `
GRANT ALL PRIVILEGES on *.* TO debian-sys-maint@localhost WITH GRANT OPTION; 

選項 2

INSTALL PLUGIN unix_socket SONAME 'auth_socket';

選項 2 的優點是您不需要使用者密碼,假設debian-sys-maint是您的作業系統使用者的名稱。MariaDB 將使用該作業系統使用者名作為 MariaDB 使用者名。

我在設置中遇到了同樣的錯誤。我正在試驗 docker、mariadb 和 galera 集群。Ubuntu 18.04、docker 20.10.2、mariadb 10.5(mariadb 官方 docker 鏡像)。

似乎您可以在第一次執行時加入一個新創建的容器。容器或 de mariadb 伺服器在加入集群之前是否需要執行一些初始化。所以首先使用 wsrep_on=off 啟動非“master/bootstraped”伺服器。然後在下次啟動時使其加入集群。否則,您將看到此錯誤,並且 node2 將無法加入,並且 node1 將處於失敗模式。

引用自:https://dba.stackexchange.com/questions/226692