Ich habe gerade einen neuen Satz von Ubuntu 16.04-Knoten installiert, der als Master-Master-Cluster von MariaDB 10.2 funktionieren sollte, wobei XtraBackup als SST-Methode verwendet wird.MariaDB 10,2 Xtrabackup./usr // bin/wsrep_sst_xtrabackup-v2 WSREP_SST_OPT_PORT: Nicht gebundene Variable
Der erste Knoten wird mit dem Befehl galera_new_cluster bis gut, aber der zweite Knoten nicht in der Lage der Cluster aufgrund der folgenden Fehler verbinden:
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [Warning] WSREP: Gap in state sequence. Need state transfer.
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [Note] WSREP: Running: 'wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/' --parent '15664' --binlog '/var/log/mysql/mariadb-bin' '
Nov 15 10:59:09 mariadb10 mysqld[15664]: /usr//bin/wsrep_sst_xtrabackup-v2: line 646: WSREP_SST_OPT_PORT: unbound variable
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/' --parent '15664' --binlog '/var/log/mysql/mariadb-bin'
Nov 15 10:59:09 mariadb10 mysqld[15664]: #011Read: '(null)'
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/' --parent '15664' --binlog '/var/log/mysql/mariadb-bin' : 1 (Operation not permitted)
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
Kernpunkt in diesem Stück der Protokollierung die WSREP_SST_OPT_PORT welche ist nicht eingestellt.
Mit Blick auf den Code /usr/bin/wsrep_sst_xtrabackup-v2
"es" die /usr/bin/wsrep_sst_common
in die Variable kann auf 2 Arten eingestellt werden.
- Verwenden Sie den Befehlszeilenparameter
--port
. - einen Port in dem Parameter
--address
Kommandozeilen verwenden (ip: port)
Da ich jetzt Ahnung, was MariaDB Parameter wird mit den Befehlszeilenparameter für die /usr/bin/wsrep_sst_xtrabackup-v2
zu füllen, ich weiß auch nicht, wie man lass es die --port
oder --address
mit dem richtigen Wert verwenden.
Ich habe bereits mit einigen Parametern in der my.cnf für Mariadb ohne irgendein Ergebnis gespielt. Die Dinge, die ich versuchte, waren:
- Parameter Hinzufügen
wsrep_sst_opt_port=4444
-my.cnf
. Dies führte zu einem Fehler, da der Parameter nicht unterstützt wird (aber hey .. die besten Lösungen waren das Ergebnis nur versuchen) - Ports zu den Adressen in
wsrep_cluster_adress
hinzugefügt. Dies wurde akzeptiert, führte jedoch nicht dazu, dass eine Portnummer Teil des--address
Parameters ist. - Port zu der Adresse in
wsrep_node_address
hinzugefügt. Dies wurde auch akzeptiert, aber auch nicht in einer Portnummer im Parameter--address
.
Als Abhilfe, die ich die /usr/bin/wsrep_sst_common
anzupassen tat und ich fügte den folgenden Code (nach dem Kommentar beginnend):
if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then
if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then
...
else
readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT"
fi
fi
# Start of the workaround
if [ -z "${WSREP_SST_OPT_PORT:-}" ]; then
readonly WSREP_SST_OPT_PORT="4444"
fi
# End of the workaround
Diese zumindest meinen Nicht-Start-Cluster gelöst, aber es wäre trotzdem schön sein zu wissen, wie ich es ohne diese Problemumgehung lassen kann ...