Pada tutorial kali ini akan dijelaskan bagaimana cara instalasi dan konfigurasi percona-xtradb-cluster-5.7 pada debian 8.7

pastikan port-port di bawah ini tidak di block firewall

3306
4444
4567
4568

menginstal dari repositori

download paket di bawah ini untuk mengkonfigurasi percona repositori

# wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb

install paket yang telah di download dengan menggunakan command dpkg

# dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb

selanjutnya update local cache (mengupdate index paket-paket software di debian)

# apt-get update

install paket percona xtradb cluster

# apt-get install percona-xtradb-cluster-57

(selama proses instalasi akan diminta untuk mengeset password root user mysql)

selanjut nya stop service mysql, jika setelah instalasi service nya otomatis start

# /etc/init.d/mysql stop

konfigurasi wsrep pxc-5.7

setelah paket terinstall di setiap node, selanjutnya adalah melakukan configure wsrep di setiap node. Setidak nya untuk setup cluster pxc-5.7 ini dibutuhkan 3 node atau jika memang di rasa berat bisa menggunakan 2 node saja ditambah arbitrator sebagai node ke 3, arbitrator ini bisa di setup di server apps atau dimana saja.

berikut info node-node yang akan digunakan

Node	Host 	IP

Node1	db1	172.17.0.2

Node2	db2	172.17.0.3

Node3	db3	172.17.0.4

Pada debian atau ubuntu file config my.cnf berada di /etc/mysql/my.cnf

contoh my.cnf di node1

wsrep_provider=/usr/lib/libgalera_smm.so

wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4

wsrep_node_name=db1
wsrep_node_address=172.17.0.2

wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

gunakan configurasi yang sama seperti di atas untuk setiap node, namun ada beberapa bagian variable yang harus di sesuaikan

untuk node2

wsrep_cluster_address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4
wsrep_node_name=db2
wsrep_node_address=172.17.0.3

untuk node3

wsrep_cluster_address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4
wsrep_node_name=db3
wsrep_node_address=172.17.0.4

Bootstrap node1

setelah selesai configurasi selesai di semua node, inisialisai cluster dengan membootstrap node1, bootstrap baiknya di lakukan di satu node yang berisi semua data yang akan di replicate ke node lainnya

untuk membootstrap node1 pada bagian wsrep_cluster_address sebaiknya di kosongkan

gunakan perintah berikut untuk membootstrap node1

[root@db1 ~]# /etc/init.d/mysql bootstrap-pxc

setelah selesai make sure bahwa cluster telah di inisialisasi, jalankan perintah berikut

mysql> show status like 'wsrep%';

+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | 1b334e9a-fd99-11e6-a987-cfcc9b58b581 |
| ...                        | ...                                  |
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
| ...                        | ...                                  |
| wsrep_cluster_size         | 1                                    |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            | ON                                   |
| ...                        | ...                                  |
| wsrep_ready                | ON                                   |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)

output perintah di atas terlihat cluster_size adalah 1 dan local_state_comment adalah Synced yang berarti siap untuk wsrep

sebelum join node selanjutnya buatlau user untuk SST (State Snapshot Transfer) serta berikan privilegesnya, user dan passwordnya sesuaikan dengan isi dari file my.cnf di setiap node

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;

menambahkan node ke dalam cluster

jalankan perintah berikut di node2 dan node3

[root@db2 ~]# /etc/init.d/mysql start

selanjutnya cek status node2

mysql> show status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | 1b334e9a-fd99-11e6-a987-cfcc9b58b581 |
| ...                        | ...                                  |
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
| ...                        | ...                                  |
| wsrep_cluster_size         | 2                                    |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            | ON                                   |
| ...                        | ...                                  |
| wsrep_ready                | ON                                   |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)

node3

[root@db3 ~]# /etc/init.d/mysql start

selanjutnya cek status node3

mysql> show status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | 1b334e9a-fd99-11e6-a987-cfcc9b58b581 |
| ...                        | ...                                  |
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
| ...                        | ...                                  |
| wsrep_cluster_size         | 3                                    |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            | ON                                   |
| ...                        | ...                                  |
| wsrep_ready                | ON                                   |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)

semua node telah full sync, pada bagian wsrep_cluster_address disetiap node ubah jadi seperti di bawah ini

wsrep_cluster_address=gcomm://172.17.0.2,172.17.0.3,172.17.0.4

selanjutnya lakukan rolling restart service mysql di setiap node

Tes replikasi xtradb

node1

mysql> CREATE DATABASE percona;
Query OK, 1 row affected (0.01 sec)

node2

mysql> use percona
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.05 sec)

node3

mysql> use percona
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>  INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
|       1 | percona1  |
+---------+-----------+
1 row in set (0.00 sec)

selesai, semoga bermanfaat

Advertisements