2017-11-15 1 views
2

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.

  1. Verwenden Sie den Befehlszeilenparameter --port.
  2. 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 ...

Antwort

1

Das Verhalten, das Sie erfahren, ist tatsächlich ein Fehler in MariaDB 10.2.10 und das MariaDB-Team ist mit einer Reparatur gekommen, die höchstwahrscheinlich in der Nähe veröffentlicht wird Zukunft

Diese

ist der Link zu dem Thema auf dem MariaDB Bug-Tracker:

https://jira.mariadb.org/browse/MDEV-14256