Προαπαιτούμενα
Ξεκινώντας
Η αναπαραγωγή πολλαπλών κυρίων MySQL είναι μια εξαιρετική δυνατότητα στο MySQL. Ωστόσο, υπάρχει μόνο ένα πρόβλημα. Η τυπική αναπαραγωγή πολλαπλών κυρίων φαίνεται να μην είναι ποτέ τόσο σταθερή όσο κάτι σαν αναπαραγωγή κύριου-υπότελου. Πάντα χρειάζεται προσοχή. Εκεί μπαίνει στο παιχνίδι η Περκόνα. Η ομάδα της Percona έχει αναπτύξει ένα καταπληκτικό προϊόν με το όνομα Percona XtraDB cluster. Το XtraDB διαθέτει παγκόσμιας κλάσης multi-master αναπαραγωγή που υποστηρίζεται από την Galera. Λοιπόν, τι περιμένουμε; Ας αρχίσουμε.
Προαπαιτούμενα
- Μια διανομή Linux της επιλογής σας. Σε αυτόν τον οδηγό, θα χρησιμοποιήσουμε το Debian 7. Μπορείτε να χρησιμοποιήσετε διαφορετική διανομή εάν θέλετε. ( Σημειώστε ότι μπορεί να χρειαστεί να προσαρμόσετε αυτόν τον οδηγό για να εργαστείτε με τη διανομή της επιλογής σας )
- Δύο κόμβοι που εκτελούν το ίδιο λειτουργικό σύστημα.
- Βασικές γνώσεις γραμμής εντολών και SSH.
Ξεκινώντας
SSH στις εικονικές μηχανές σας.
VM 1:
ssh [email protected]
VM 2:
ssh [email protected]
Προσθέστε τα αποθετήρια της Percona.
Και στους δύο κόμβους, εκτελέστε την ακόλουθη εντολή:
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
Τώρα πρέπει να ενημερώσουμε τις πηγές:
apt-get update
Εγκαταστήστε το Percona-XtraDB Cluster.
Η εγκατάσταση είναι απλή:
apt-get install percona-xtradb-cluster-56
Εάν είστε εξοικειωμένοι με τη MySQL, τότε αυτή η επόμενη οθόνη θα πρέπει να είναι γνωστή. Απλώς ακολουθήστε τις οδηγίες που εμφανίζονται στην οθόνη για την εισαγωγή κωδικού πρόσβασης.
Διαμορφώστε τον πρώτο κόμβο.
Η διαμόρφωση είναι αρκετά απλή. Απλά πρέπει να προσθέσετε μερικές γραμμές στο αρχείο διαμόρφωσης MySQL. Σε αυτήν την περίπτωση, θα χρησιμοποιήσω το Nano, αλλά μπορείτε να χρησιμοποιήσετε το πρόγραμμα επεξεργασίας κειμένου της επιλογής σας.
Χρησιμοποιήστε αυτό για να ανοίξετε το αρχείο και στα δύο μηχανήματα:
nano /etc/mysql/my.cnf
Μεταβείτε bind-address = 127.0.0.1
και προσθέστε ένα # πριν από αυτό. Προσθέστε τις ακόλουθες γραμμές αμέσως μετά τη γραμμή (με σχολιασμό) bind-address
:
### 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"
Αποθηκεύστε και βγείτε από το αρχείο (Ctrl+X).
Τώρα, ας κάνουμε bootstrap τον κόμβο:
/etc/init.d/mysql bootstrap-pxc
Στη συνέχεια, πρέπει να δημιουργήσουμε τον χρήστη και να του δώσουμε προνόμια, γι' αυτό πρέπει να θυμάστε αυτόν τον κωδικό πρόσβασης. Θα χρειαστεί να συνδεθείτε στο κέλυφος της MySQL ( mysql -u root -p
) και να πληκτρολογήσετε τα ακόλουθα (Μην συμπεριλάβετε το mysql>
):
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'yoursecretpass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
Διαμόρφωση του δεύτερου κόμβου.
Η διαμόρφωση για τον δεύτερο κόμβο είναι ίδια με τον πρώτο, εκτός από δύο τιμές. Για άλλη μια φορά, σχολιάστε bind-address = 127.0.0.1
και επικολλήστε το παρακάτω αμέσως μετά. Θυμηθείτε να επεξεργαστείτε τις τιμές ανάλογα.
### 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"
Στη συνέχεια, πληκτρολογήστε /etc/init.d/mysql start
. Θα δείτε την ακόλουθη έξοδο:
[....] Starting MySQL (Percona XtraDB Cluster) database server: mysqld . .
[....] State transfer in progress [ok]
Αυτό είναι! Έχετε διαμορφώσει ένα σύμπλεγμα XtraDB πολλαπλών κυρίων! Αυτό είναι ένα σύμπλεγμα XtraDB χωρίς ανησυχίες με εξαιρετική απόδοση.
Δοκιμή του συμπλέγματος.
Στον κόμβο 1, πληκτρολογήστε και στη mysql -u root -p
συνέχεια create database demo;
. Στον απέναντι κόμβο, συνδεθείτε στη MySQL με root και πληκτρολογήστε show databases;
. Εάν όλα λειτουργούσαν σωστά, τότε θα δείτε τη βάση δεδομένων που δημιουργήσατε στον απέναντι κόμβο!