====== Änderungen in PXC 8.0 ====== __siehe auch: [[::Datenbanken:MySQL 8.0]]__ Ab Ubuntu 20.04 [[https://www.percona.com/blog/2020/05/18/percona-xtradb-cluster-8-0-behavior-change-for-pxc-encrypt-cluster-traffic/]] Percona hat in Percona XtraDB Cluster (PXC) 8 eine stärkere Sicherheit durchgesetzt. In PXC gibt es zwei verschiedene Arten von Datenverkehr: Client-Server-Austausch (dh Anwendungsdatenverkehr) und Replikationsdatenverkehr. Letzteres bezieht sich auf alle SST/IST-, Write-Set- und andere Dienstnachrichten, die die Knoten austauschen. In PXC 5.7 ist es möglich, die SSL-Verschlüsselung zu aktivieren, indem Sie die Variable ''pxc-encrypt-cluster-traffic'' aktivieren, indem Sie den Anweisungen folgen. **In PXC 8 haben wir uns dafür entschieden, die Verschlüsselung standardmäßig für den gesamten Replikationsdatenverkehr zu aktivieren**, um die höchste sofort einsatzbereite Sicherheit durchzusetzen. Obwohl dies eine offensichtliche Verbesserung ist, muss sich ''PXC 8'' anders verhalten als sein Vorgänger ''PXC 5.7''. ===== wsrep_sst_auth ===== Die Option ''wsrep_sst_auth'' gibt es ab der Version 8.0 nicht mehr: * [[https://www.percona.com/blog/2019/10/03/percona-xtradb-cluster-8-0-new-feature-wsrep_sst_auth-removal/]] In ''PXC 5.6'' und ''5.7'' muss der DBA bei Verwendung von ''xtrabackup-v2'' als SST-Methode einen Benutzer mit den entsprechenden Berechtigungen zur Verwendung durch Percona XtraBackup (PXB) erstellen. Der Benutzername und das Kennwort dieses Sicherungsbenutzers werden in der Variablen ''wsrep_sst_auth'' angegeben. Dies ist ein Problem, da dieser Benutzername und dieses Kennwort im Klartext gespeichert wurden und eine Sicherung der Konfigurationsdatei erforderlich war. Da ''wsrep_sst_auth'' nur auf der Geberseite benötigt wird, um ein Backup zu erstellen, verwendet ''PXC 8.0'' einen internen Benutzer (der speziell für die Verwendung durch PXC erstellt wurde) mit einem zufällig generierten Passwort. Da dieser Benutzer nur auf dem Spender benötigt wird, wird das Klartext-Passwort auf dem Joiner-Knoten nicht benötigt. Dieses Passwort besteht aus 32 zufällig generierten Zeichen. Für jede SST-Anfrage wird ein neues Passwort generiert. Der Klartext des Passworts wird nie gespeichert und verlässt den Knoten nie. Der Benutzername/das Passwort wird über unbenannte Pipes (stdin) an das SST-Skript gesendet. ===== wsrep_sst_method ===== * [[https://www.percona.com/blog/2019/10/04/percona-xtradb-cluster-8-0-experimental-release-sst-improvements/]] __''Mysqldump'' and ''rsync'' are no longer supported SST methods.__ Die Unterstützung für ''mysqldump'' war ab ''PXC 5.7'' veraltet und wurde nun vollständig entfernt. ''MySQL 8.0'' führte ein neues Redo-Log-Format ein, das die Verwendung von ''rsync'' beim Upgrade von ''PXC 5.7'' auf ''8.0'' einschränkte. Darüber hinaus wurden mit dem neuen Galera-4 auch Änderungen eingeführt, die die Verwendung von ''rsync'' weiter einschränken. Die einzige unterstützte SST-Methode ist ''xtrabackup-v2''. __A separate Percona XtraBackup installation is no longer required:__ Die erforderlichen Percona XtraBackup (PXB)-Binärdateien werden jetzt als Teil von PXC 8.0 ausgeliefert, sie werden nicht für die allgemeine Verwendung installiert. Wenn Sie also PXB außerhalb eines SST verwenden möchten, müssen Sie PXB separat installieren. __PXC SST auto-upgrade:__ Wenn PXC 8.0 erkennt, dass das SST von einer niedrigeren Version stammt, wird mysql_upgrade automatisch aufgerufen. Außerdem wird bei Bedarf „''RESET SLAVE ALL''“ auf dem neuen Knoten ausgeführt. Dies wird aufgerufen, wenn ein SST von ''PXC 5.7'' und ''PXC 8.0'' empfangen wird. ===== Percona XtraDB Cluster 8.0 Behavior Change for pxc-encrypt-cluster-traffic ===== * [[https://www.percona.com/blog/2020/05/18/percona-xtradb-cluster-8-0-behavior-change-for-pxc-encrypt-cluster-traffic/]] ===== MySQL 8.0 + SSL ===== //Da in ''MySQL 8.0'' die SSL-Verschlüsselung bereits voreingestellt ist, macht es Sinn, die SSL-Zertifikate nicht im MySQL-DataDir abzulegen. Denn wenn alles aus dem DataDir gelöscht wird, sollten die Daten per SST von einem laufenden Master bezogen werden. Wenn Galera jedoch seine SSL-Zertifikate nicht findet, funktioniert auch die SST-Übertragung nicht. Aus dem Grund ist es empfehlenswert, die SSL-Zertifikate im selben Verzeichnis abzulegen, wo sich auch die Konfigurationsdateien befinden und die Konfiguration entsprechend anzupassen.// > echo "SHOW VARIABLES LIKE '%ssl%';" | mysql -S /var/run/mysqld/mysqld.sock -t [mysqld] ssl = 1 # Leider funktioniert SST nicht, wenn "ssl_capath" gesetzt wurde und dafür die Pfade bei den PEM-Dateien weggelassen werden. # "ssl_capath" hat, laut meinen Tests mit der Version 8.0.36-28.1, keine Wirkung. # Quelle: https://docs.percona.com/percona-xtradb-cluster/8.0/encrypt-traffic.html#encrypt-client-server-communication ssl-ca = /etc/mysql/conf.d/ca.pem ssl-cert = /etc/mysql/conf.d/server-cert.pem ssl-key = /etc/mysql/conf.d/server-key.pem ssl-cipher = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA > service mysql stop > vim /etc/mysql/conf.d/ssl.cnf > mv /var/lib/mysql/ca.pem /etc/mysql/conf.d/ > mv /var/lib/mysql/server-cert.pem /etc/mysql/conf.d/ > mv /var/lib/mysql/server-key.pem /etc/mysql/conf.d/ > service mysql start