Die MySQL-Multi-Master-Replikation ist eine hervorragende Funktion in MySQL. Es gibt jedoch nur ein Problem. Die Standard-Multi-Master-Replikation scheint niemals so stabil zu sein wie die Master-Slave-Replikation. Es braucht immer Aufmerksamkeit. Hier kommt Percona ins Spiel. Das Percona-Team hat ein erstaunliches Produkt namens Percona XtraDB-Cluster entwickelt. XtraDB bietet eine erstklassige Multi-Master-Replikation mit Galera. Also, worauf warten wir noch? Lass uns anfangen.
Voraussetzungen
- Eine Linux-Distribution Ihrer Wahl. In diesem Handbuch verwenden wir Debian 7. Sie können eine andere Distribution verwenden, wenn Sie möchten. ( Beachten Sie, dass Sie diesen Leitfaden möglicherweise anpassen müssen, um mit der Distribution Ihrer Wahl zu arbeiten. )
- Zwei Knoten mit demselben Betriebssystem.
- Grundkenntnisse der Kommandozeile und SSH.
Fertig machen
SSH in Ihre virtuellen Maschinen.
VM 1:
ssh [email protected]
VM 2:
ssh [email protected]
Fügen Sie Perconas Repositorys hinzu.
Führen Sie auf beiden Knoten den folgenden Befehl aus:
echo -e "deb http://repo.percona.com/apt wheezy main\ndeb-src http://repo.percona.com/apt wheezy main" >> /etc/apt/sources.list.d/percona.list && apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
Jetzt müssen wir die Quellen aktualisieren:
apt-get update
Installieren Sie den Percona-XtraDB-Cluster.
Die Installation ist unkompliziert:
apt-get install percona-xtradb-cluster-56
Wenn Sie mit MySQL vertraut sind, sollte dieser nächste Bildschirm vertraut aussehen. Folgen Sie einfach den Anweisungen auf dem Bildschirm, um ein Passwort einzugeben.
Konfigurieren Sie den ersten Knoten.
Die Konfiguration ist recht einfach. Sie müssen der MySQL-Konfigurationsdatei lediglich einige Zeilen hinzufügen. In diesem Fall werde ich Nano verwenden, aber Sie können den Texteditor Ihrer Wahl verwenden.
Verwenden Sie diese Option, um die Datei auf beiden Computern zu öffnen:
nano /etc/mysql/my.cnf
Gehen Sie zu bind-address = 127.0.0.1und fügen Sie ein # davor hinzu. Fügen Sie unmittelbar nach der (auskommentierten) bind-addressZeile die folgenden Zeilen hinzu:
### Galera library.
wsrep_provider=/usr/lib/libgalera_smm.so
### IP addresses of your two nodes.
wsrep_cluster_address=gcomm://xxx.xxx.xxx.xx,yyy.yyy.yyy.yyy
### This will not work unless binlog is formatted to ROW.
binlog_format=ROW
### This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
### Node #1 address (The node you are ssh`d into now.)
wsrep_node_address=xxx.xxx.xxx.xx
### SST Method
wsrep_sst_method=xtrabackup-v2
### Cluster name
wsrep_cluster_name=xtradb
### Node Name, in this case we will just call it xtradb1
wsrep_node_name=xtradb1
### Authentication, REMEMBER THIS.
wsrep_sst_auth="sstuser:yoursecretpass"
Speichern und beenden Sie die Datei (Strg + X).
Lassen Sie uns nun den Knoten booten:
/etc/init.d/mysql bootstrap-pxc
Als nächstes müssen wir den Benutzer erstellen und ihm Berechtigungen erteilen. Deshalb müssen Sie sich dieses Kennwort merken. Sie müssen sich bei der MySQL-Shell ( mysql -u root -p) anmelden und Folgendes eingeben (ohne das mysql>):
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'yoursecretpass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
Konfigurieren Sie den zweiten Knoten.
Die Konfiguration für den zweiten Knoten ist bis auf zwei Werte identisch mit der des ersten Knotens. Kommentieren Sie noch einmal bind-address = 127.0.0.1Folgendes aus und fügen Sie es unmittelbar danach ein. Denken Sie daran, die Werte entsprechend zu bearbeiten.
### Galera library.
wsrep_provider=/usr/lib/libgalera_smm.so
### IP addresses of your two nodes.
wsrep_cluster_address=gcomm://xxx.xxx.xxx.xx,yyy.yyy.yyy.yyy
### This will not work unless binlog is formatted to ROW.
binlog_format=ROW
### This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
### Node #2 address (The node you are ssh`d into now.)
wsrep_node_address=yyy.yyy.yyy.yyy
### SST Method
wsrep_sst_method=xtrabackup-v2
### Cluster name
wsrep_cluster_name=xtradb
### Node Name, in this case we will just call it xtradb1
wsrep_node_name=xtradb1
### Authentication, REMEMBER THIS.
wsrep_sst_auth="sstuser:yoursecretpass"
Geben Sie als Nächstes ein /etc/init.d/mysql start. Sie sehen die folgende Ausgabe:
[....] Starting MySQL (Percona XtraDB Cluster) database server: mysqld . .
[....] State transfer in progress [ok]
Das ist es! Sie haben einen Multi-Master-XtraDB-Cluster konfiguriert! Dies ist ein sorgenfreier XtraDB-Cluster mit hervorragender Leistung.
Cluster testen.
Geben Sie auf Knoten 1 mysql -u root -pdann ein create database demo;. Melden Sie sich auf dem gegenüberliegenden Knoten mit root bei MySQL an und geben Sie ein show databases;. Wenn alles richtig funktioniert hat, sehen Sie die Datenbank, die Sie auf dem gegenüberliegenden Knoten erstellt haben!