[Termux] MariaDB Replication Master-Master

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARwAAAAzCAYAAABFebe3AAAEPHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMnd3dy5kcmF3LmlvJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDE5LTEwLTE1VDIwJTNBMDQlM0EwNS4wNjFaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKFdpbmRvd3MlMjBOVCUyMDEwLjAlM0IlMjBXaW42NCUzQiUyMHg2NCUzQiUyMHJ2JTNBNjkuMCklMjBHZWNrbyUyRjIwMTAwMTAxJTIwRmlyZWZveCUyRjY5LjAlMjIlMjB2ZXJzaW9uJTNEJTIyMTIuMS4xJTIyJTIwZXRhZyUzRCUyMi0wUDhUZkFWLWQ0WVBONDdsNWhQJTIyJTIwcGFnZXMlM0QlMjIzJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyTzN3U2xrbC1hTTF3SFpaYVRfVXMlMjIlM0U3WlZOYjlzd0RJWiUyRmpZOEwlMkZKRTEyYkZKayUyQjNRQWdONjJGbXhHVnVyYkJvU25Uajc5YU5pJTJCZ3RwZ0FJRmRsb3VzUjVTTk1tWGtvTmtXN2JmcmFxTEY4ekFCSEdZdFVIeUZNUnh0SXJXJTJGT2ZKcFNQTDFiY081RlpuNGpTQ1YlMkYwSEJJWkNHNTJCbXprU29pRmR6MkdLVlFVcHpaaXlGczl6dHlPYSUyQlZ0cmxjTU5lRTJWdWFXJTJGZEVaRlI5ZGZ3NUglMkZBSjBYJTJGWnVqVUN5bDZwMEZ1RUpsZUo2Z1pCY2tXNHRJM1ZQWmJzSDQ1dlY5NmZidDcxaUh4Q3hVOUpFTnNhUkJsNzQyeUxoVVdhS2xBbk9zbE5tTmRHT3hxVEx3QVVKZWpUN1BpRFhEaU9GdklMcUlicW9oWkZSUWFjUUtWZmJvVmVCbGhSVjBaSyUyQk5rWkJkVGo2UldWVU9HNXNLU2tSMVpYT1FRcGUzdFVkRFIza1VBVXNnZTJFWEMwYVJQczJqSzVtSmZQQWIyOFlQMHJuM3V5alpuSlJwSk9pVEluVlFEcGklMkJLRWRnJTJCU0c2NmZXa0p5ZXdwSG5DbnRVQnpFOTBtalJXYkRzZ0VaYnNvSXpPUFVpNU9nNlhiSXozM0tqMExiOEtza1dEOWhvMk9WNSUyRms2Q1BzcGU4UUJ0SEZ0JTJCR3dZMEhNb2tRaHV0dzc2VTRzaXJ2UlI3bTFqdGx5aFhEUExDbDl1V1ZiZTRQJTJGMEtqV3kwMG4wUzNjS1d5VkJlZDVOSXl6aERhdThON1IwRFo4T1doUDFkeWowUVBNcyUyRm44VlQyZDAweE9aQkolMkJIbk5seCUyRlMlMkZQWjglMkZkZjhjNW92NDMlMkJtT1MlMkZIbSUyRmhxbTN6UGt0MWYlM0MlMkZkaWFncmFtJTNFJTNDJTJGbXhmaWxlJTNF6uF+NAAABBJJREFUeJztnTFu2zAUhnmBXKCrbpHJm67R1XOXbPYUQEMPkCFANo2dO2nQmgtkEHyBDGnh1giMgB2ap9KMKKuyIZp63wcQkWySetT79ZNSDMjYRKg2e7uqdmcr1WYfe0igGK16NrEDGMqq2lmzfjlbWVW72EMCxWjVc3KGc32/tV++/x5dru+3SSUI5olWPSdnONpmBJgnWvWcnOFc3f6wn77+HF2ubn8klSCYJ1r1nJzhrE88sev3flJJEMwTrXrGcAAioFXPGA5ABLTqGcMBiIBWPWM4ABHQqmcMByACWvWM4QBEQKueMRyACGjVM4YDEAGtesZwACKgVc8YDkAEtOpZreGYxY01xlAoccriBsO5ZLTOCDBPtOoZwwGIgFY9YzgAEdCqZwwHIAJa9YzhAERAq54xHIAIaNUzhgMQAa16xnAAIqBVzxgOQAS06jk5w9H2Wg2YJ1r1jOEARECrnpMznL4l6NPzm108bO3T81uwTmpLUJgnWvU8K8O5e3y1Zv1i7x5fg3VSSxDME616Ts5wFg9bu652wfL526/e7xcPab2LGeaJVj0nZzja7nlhnmjVczKGU232dlXtzlaqzT72kEAxWvWcjOEAQPpgOAAwGRgOAEwGhgMAk4HhAMBkYDgAMBnGWtv5Govlcjmog7qurTHHfatpGmuMsU3TnBbxCMqy7BxTnufWGGPruh7d99DxD6UsS5tl2dn60wh6jq/n5XJ5cP4lptZwyrI8aJBl2aAkpZKgLMs+xGmMsVmWXUSCrP0nJAznNNBzXD2XZWnzPG/3i6Jo+wwajhxYTqhcDP6MIftykYTqSYJc53OPGWrnBtzVzo0hJABJUJ7nbTLqurZ5nh8kaEwM/vhD8cj5lFnIR2JhhXM66Dm+nrtyUtd12HDcSv62DKRpmg+OGKonCRLn8wVwrJ3g72dZZouiOGjnIwkqiqKtK9tugsbE4I8/FI/U6zrPXbHCeNDz5ejZ77PXcGTG9V3WXU66nfXVk213uZfnuS2KYlC7LqfvWv5JzC6SIJkF5Nh1XbefnyOGvnh8QYbAcE4HPV+Onq39mw8xrcErHH8JFpoRQvW6BikJ6mvnDtxf/vmfS5E+Bfcibp32/a87I5wSw7F4MJzpQM+Xo2c//qPPcNxt6Tw0I/TV65oRQm7Z58D+sYdcnG6CRBQyM0iCTonBHX8oHgxnOtBzfD1Lnx+eT1kbfqovzuS7vjwoCiWoq577kM0PuK+dfwF23fP67uw/pXf7ENeXsfkJ+t8Yuu55u+LBcKYDPcfVc5cZC8Hf4fjLOAlYkukGIp/31XMTJN/797+h/kP/028H0bE0DCXIT6K7BB0bgzv+UDwYznSg57h69vt22/JLYwCYDAwHACYDwwGAyfgDzBwY01ROdxkAAAAASUVORK5CYII=
Pada artikel kali ini, akan dibahas mengenai bagaimana cara membuat replikasi database master-master menggunakan mariadb di termux.

tools yang perlu disiapkan :
  1. dua buah smartphone android yang telah terinstall termux
  2. koneksi internet yang stabil

Setelah toolsnya telah disiapkan, mari lakukan tahap-tahap berikut :

A. Inisialisasi Database Server
  1. Buka termux 
  2. Install mariadb dan teks editor nano dengan perintah : pkg install mariadb nano. Tunggu proses instalasi sampai selesai
  3. Cek IP address masing-masing HP dengan perintah ip address atau ifconfig. maka akan muncul output seperti berikut :
    ..............
     swlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether c2:87:eb:96:7f:29 brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.1/24 brd 192.168.43.255 scope global swlan0
           valid_lft forever preferred_lft forever
        inet6 fe80::c087:ebff:fe96:7f29/64 scope link
           valid_lft forever preferred_lft forever

    ................
    Catat IP tersebut.

B. Setting Database Master 1 (inisialisasi)
  1. Buat file konfigurasi di /data/data/com.termux/files/usr/etc/my.cnf.d/replication.cnf dengan perintah
    nano /data/data/com.termux/files/usr/etc/my.cnf.d/replication.cnf. Isikan konfigurasi berikut :
    [mariadb]
    server-id=1
    log-bin='mysql-bin1
    relay-log='mysql-relay-log'
    log-basename=master
    auto-increment-offset = 1
    Setelah semua dibuat, simpan dengan menekan ctrl + x, kemudian tekan y dan enter.
  2. Mulai service mariadb dengan perintah mysqld_safe &
  3. Buat database baru dengan perintah mysql -u $(whoami) -e "create database praktikum;"
  4. Buat user untuk replikasi (username : repluser dan password rahasia123) dengan perintah mysql -u $(whoami) -e "grant replication slave on *.* to 'repluser'@'%' identified by 'rahasia123'; flush privileges;"
  5. Login ke shell mariadb dengan perintah mysql -u $(whoami)
  6. Lock database dan cek status master database dengan perintah flush tables with read lock; show master status;

    Catat file dan position datanya. Jangan tutup session database ini.
  7.  Buka tab baru di termux. kemudian dump semua database dengan perintah mysqldump -u $(whoami) --all-databases > db.sql
  8. Kembali ke tab pertama termux, kemudian ketikkan unlock tables;
  9. Copy database db.sql ke server slave dengan perintah scp -P8022 db.sql <user termux slave>@<ip termux slave>:/data/data/com.termux/files/home/. Contoh dalam tulisan ini, user termux slave adalah u0_217 dan IPnya 192.168.43.57, maka perintahnya : scp db.sql u0_217@192.168.43.57:/data/data/com.termux/files/home/. kemudian masukkan password dari user termux slave.
C. Konfigurasi Database Master 2 (Replicate from Database Master 1)
  1. Buat file konfigurasi di /data/data/com.termux/files/usr/etc/my.cnf.d/replication.cnf dengan perintah
    nano /data/data/com.termux/files/usr/etc/my.cnf.d/replication.cnf. Isikan konfigurasi berikut :
    [mariadb]
    server-id=2
    log-bin='mysql-bin'
    relay-log='mysql-relay-log'
    log-basename=masterdua
    auto-increment-offset = 2
    Setelah semua dibuat, simpan dengan menekan ctrl + x, kemudian tekan y dan enter.
  2. Mulai service mariadb dengan perintah mysqld_safe &
  3. Import database yang telah disalin dari database master tadi dengan perintah mysql -u $(whoami) < db.sql
  4. Masuk ke shell mysql dengan perintah mysql -u $(whoami)
  5. Atur database agar mengarah ke master yang telah dibuat dengan perintah :
    MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='<IP Address Master',
    MASTER_USER='<user untuk replikasi>',
    MASTER_PASSWORD='<password user untuk replikasi>',
    MASTER_LOG_FILE='<value pada field file di master>',
    MASTER_LOG_POS=<value pada field position di master>;
    MASTER_CONNECT_RETRY=10;
    mengacu pada tahap B.6, maka konfigurasi untuk artikel ini adalah :
    MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.43.1',
    MASTER_USER='repluser',
    MASTER_PASSWORD='rahasia123',
    MASTER_LOG_FILE='master-bin.000001',
    MASTER_LOG_POS=1371,
    MASTER_CONNECT_RETRY=10;
  6. Setelah itu, mulai slave server dengan perintah start slave;
  7. Cek status slave dengan perintah show slave status\G; maka hasilnya kurang lebih akan seperti dibawah :

  1. Setelah itu, mulai slave server dengan perintah start slave;
  2. Cek status slave dengan perintah show slave status\G; maka hasilnya kurang lebih akan seperti dibawah :

D. Konfigurasi Database Master 1 (replicate from Database Master 2)
  1. Buka database master 2
  2. Buka shell mariadb dengan perintah mysql -u $(whoami)
  3. Cek position dan nama binary log file master 2 dengan perintah : show master status;
  4. Pindah ke database master 1
  5. Buka shell mariadb dengan perintah mysql -u $(whoami) 
  6. Atur database agar mengarah ke master database 2 :
    MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='<IP Address Master 2',
    MASTER_USER='<user untuk replikasi>',
    MASTER_PASSWORD='<password user untuk replikasi>',
    MASTER_LOG_FILE='<value pada field file di master 2>',
    MASTER_LOG_POS=<value pada field position di master 2>;
    MASTER_CONNECT_RETRY=10;
    mengacu hasil pengecekan pada tahap D.3, anggap file log binnya adalah masterdua-bin.000003 dan positionnya adalah 1372, maka konfigurasi untuk artikel ini adalah :
    MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.43.2',
    MASTER_USER='repluser',
    MASTER_PASSWORD='rahasia123',
    MASTER_LOG_FILE='masterdua-bin.000003',
    MASTER_LOG_POS=1372,
    MASTER_CONNECT_RETRY=10;
     
  7. Setelah itu, mulai slave server dengan perintah start slave;
  8. Cek status slave dengan perintah show slave status\G;Pastikan kolom Slave_IO_Running dan Slave_SQL_Running bernilai Yes.
E. Pengujian
  1. Ambil HP yang bertindak sebagai database master 1.
  2. Masuk ke shell mariadb dengan perintah mysql -u $(whoami)
  3. Buat tabel dengan nama replikasi di database praktikum dengan perintah create table praktikum.replikasi ( test varchar(20)); 
  4. Insert data ke tabel tersebut dengan perintah insert into praktikum.replikasi values("tes replikasi");
  5. Cek apakah data berhasil dimasukkan ke database dengan perintah select * from praktikum.replikasi; Hasilnya akan seperti dibawah :
  6.  Kemudian ambil HP yang bertindak sebagai database master 2.
  7. Masuk ke shell mariadb dengan perintah mysql -u $(whoami)
  8. Cek apakah data berhasil direplikasi dari database master 1 dengan perintah select * from praktikum.replikasi; Apabila konfigurasi benar, maka hasilnya akan seperti dibawah :
    Pada gambar tersebut membuktikan bahwa database master 2 berhasil mereplikasi data yang ada di database master 1
  9. Ulangi pengujian dari tahap E.1 dengan menggunakan HP yang menjalankan service database master 2 sebagai sumber data replikasinya.

Komentar

Postingan populer dari blog ini

Monitoring Suhu dan Kelembaban Menggunakan DHT11, NodeMCU, MQTT, Node-Red dan MySQL

[Termux] Nginx sebagai Load Balancer dan Web Server

Bagian-Bagian Motherboard(Mainboard) dan Fungsinya