La replica multi-master di MySQL è una funzionalità eccellente in MySQL. Tuttavia, c'è solo un problema; la replica multi-master standard sembra non essere mai stabile come qualcosa come la replica master-slave. Ha sempre bisogno di attenzione. È qui che entra in gioco Percona. Il team Percona ha sviluppato un prodotto straordinario chiamato cluster Percona XtraDB. XtraDB offre una replica multi-master di livello mondiale basata su Galera. Allora, cosa stiamo aspettando? Iniziamo.
Prerequisiti
- Una distribuzione Linux a tua scelta. In questa guida, useremo Debian 7. Puoi usare una distro diversa se lo desideri. ( Nota che potresti dover adattare questa guida per lavorare con la distribuzione di tua scelta )
- Due nodi che eseguono lo stesso sistema operativo.
- Conoscenza di base della riga di comando e SSH.
Iniziare
SSH nelle tue macchine virtuali.
VM 1:
ssh root@xxx.xxx.xxx.xxx
VM 2:
ssh root@yyy.yyy.yyy.yyy
Aggiungi i repository di Percona.
Su entrambi i nodi, eseguire il comando seguente:
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
Ora dobbiamo aggiornare le fonti:
apt-get update
Installare il cluster Percona-XtraDB.
L'installazione è semplice:
apt-get install percona-xtradb-cluster-56
Se hai familiarità con MySQL, questa schermata successiva dovrebbe apparire familiare. Segui semplicemente le istruzioni sullo schermo per inserire una password.
Configura il primo nodo.
La configurazione è abbastanza semplice. Devi semplicemente aggiungere alcune righe al file di configurazione di MySQL. In questo caso, userò Nano, ma puoi usare il tuo editor di testo preferito.
Utilizzare questo per aprire il file su entrambi i computer:
nano /etc/mysql/my.cnf
Scorri verso il basso bind-address = 127.0.0.1e aggiungi un # prima di esso. Aggiungi le seguenti righe immediatamente dopo la bind-addressriga (commentata) :
### 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"
Salva ed esci dal file (Ctrl + X).
Ora, eseguiamo il bootstrap del nodo:
/etc/init.d/mysql bootstrap-pxc
Successivamente, dobbiamo creare l'utente e assegnargli i privilegi, ecco perché è necessario ricordare quella password. Dovrai accedere alla shell MySQL ( mysql -u root -p) e digitare quanto segue (non includere il mysql>):
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'yoursecretpass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
Configura il secondo nodo.
La configurazione per il secondo nodo è identica alla prima, ad eccezione di due valori. Ancora una volta, commenta bind-address = 127.0.0.1e incolla quanto segue immediatamente dopo. Ricorda di modificare i valori di conseguenza.
### 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"
Quindi, digitare /etc/init.d/mysql start. Vedrai il seguente output:
[....] Starting MySQL (Percona XtraDB Cluster) database server: mysqld . .
[....] State transfer in progress [ok]
Questo è tutto! Hai configurato un cluster XtraDB multi-master! Questo è un cluster XtraDB senza preoccupazioni con grandi prestazioni.
Test del cluster.
Sul nodo 1, digitare mysql -u root -pquindi create database demo;. Sul nodo opposto, accedi a MySQL con root e digita show databases;. Se tutto ha funzionato correttamente, vedrai il database che hai creato sul nodo opposto!