Forutsetninger
Starter
MySQL multi-master replikering er en utmerket funksjon i MySQL. Det er imidlertid bare ett problem; standard multi-master replikering ser ut til å aldri være så stabil som noe sånt som master-slave replikering. Det er alltid behov for oppmerksomhet. Det er der Percona kommer inn i bildet. Percona-teamet har utviklet et fantastisk produkt kalt Percona XtraDB-klynge. XtraDB har multi-master replikering i verdensklasse drevet av Galera. Så, hva venter vi på? La oss komme i gang.
Forutsetninger
- En Linux distro etter eget valg. I denne veiledningen vil vi bruke Debian 7. Du kan bruke en annen distro hvis du vil. ( Merk at du kanskje må tilpasse denne veiledningen for å fungere med distroen du ønsker )
- To noder som kjører samme OS.
- Grunnleggende kunnskap om kommandolinjen og SSH.
Starter
SSH inn i dine virtuelle maskiner.
VM 1:
ssh root@xxx.xxx.xxx.xxx
VM 2:
ssh root@yyy.yyy.yyy.yyy
Legg til Perconas depoter.
På begge noder, utfør følgende kommando:
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
Nå må vi oppdatere kildene:
apt-get update
Installer Percona-XtraDB Cluster.
Installasjonen er grei:
apt-get install percona-xtradb-cluster-56
Hvis du er kjent med MySQL, bør denne neste skjermen se kjent ut. Bare følg instruksjonene på skjermen for å angi et passord.
Konfigurer den første noden.
Konfigurasjonen er ganske enkel. Du trenger bare å legge til noen få linjer i MySQL-konfigurasjonsfilen. I dette tilfellet kommer jeg til å bruke Nano, men du kan bruke det valgte tekstredigeringsprogrammet.
Bruk denne for å åpne filen på begge maskinene:
nano /etc/mysql/my.cnf
Gå ned til bind-address = 127.0.0.1og legg til et # før det. Legg til følgende linjer umiddelbart etter den (kommenterte) bind-addresslinjen:
### 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"
Lagre og avslutt filen (Ctrl+X).
La oss nå bootstrap noden:
/etc/init.d/mysql bootstrap-pxc
Deretter må vi opprette brukeren og gi den privilegier, dette er grunnen til at du må huske passordet. Du må logge på MySQL-skallet ( mysql -u root -p) og skrive inn følgende (Ikke ta med mysql>):
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'yoursecretpass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
Konfigurer den andre noden.
Konfigurasjonen for den andre noden er identisk med den første, bortsett fra to verdier. Nok en gang, kommenter ut bind-address = 127.0.0.1og lim inn følgende umiddelbart etter det. Husk å redigere verdiene deretter.
### 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"
Deretter skriver du /etc/init.d/mysql start. Du vil se følgende utgang:
[....] Starting MySQL (Percona XtraDB Cluster) database server: mysqld . .
[....] State transfer in progress [ok]
Det er det! Du har konfigurert en multi-master XtraDB-klynge! Dette er en bekymringsfri XtraDB-klynge med god ytelse.
Tester klyngen.
På node 1, skriv inn og mysql -u root -pderetter create database demo;. På den motsatte noden, logg inn på MySQL med root, og skriv inn show databases;. Hvis alt fungerte riktig, vil du se databasen du opprettet på motsatt node!