{"id":950,"date":"2020-07-14T16:29:55","date_gmt":"2020-07-14T09:29:55","guid":{"rendered":"http:\/\/materi.smkn43jkt.sch.id\/?p=950"},"modified":"2021-12-22T23:02:53","modified_gmt":"2021-12-22T16:02:53","slug":"langkah-mengkonfigurasi-dua-mariadb-server-untuk-replikasi-master-slave","status":"publish","type":"post","link":"http:\/\/materi.smkn43jkt.sch.id\/?p=950","title":{"rendered":"Langkah Mengkonfigurasi Dua MariaDB Server untuk Replikasi Master-Slave"},"content":{"rendered":"<div><b>a. Pengertian<\/b><\/div>\n<div>\n<p>Replikasi Database merupakan cara yang digunakan untuk menggandakan perubahan data yang terjadi pada Database Server (dalam hal ini MariaDB) untuk menghindari atau meminimalisir kehilangan data akibat kerusakan fisik.<\/p>\n<\/div>\n<div><b>b. Latar Belakang<\/b><\/div>\n<div>Konfigurasi ini didasari atas keinginan kami untuk membuat suatu konfigurasi Web Service tanpa adanya gangguan Single Point Failure yang diakibatkan karena salah satu Server mengalami gangguan atau down.<\/div>\n<div><\/div>\n<div><b>c. Maksud dan Tujuan<\/b><\/div>\n<div>Konfigurasi Replikasi Database ini bertujuan untuk mengantisipasi Gangguan yang terjadi pada Server itu sendiri maupun gangguan dalam jaringan yang mengakibatkan tidak berfungsinya layanan.<\/div>\n<div><\/div>\n<div><b>d. Waktu Pelaksanaan<\/b><\/div>\n<div>Waktu yang dibutuhkan untuk melakukan konfigurasi ini kurang lebih 10-15 Menit.<\/div>\n<div><\/div>\n<div><b>e. Alat dan Bahan<\/b><\/div>\n<div>&#8211; PC<\/div>\n<div>&#8211; 2 Buah Server untuk MariaDB yang saling terkoneksi<\/div>\n<div><\/div>\n<div><b>f. Topologi<\/b><\/div>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-952\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/7-300x179.png\" alt=\"\" width=\"300\" height=\"179\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/7-300x179.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/7.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<div><b>g. Langkah Pengerjan<\/b><br \/>\n1. Instalasi MariaDB Server dan Initial Setup<br \/>\nPertama silahkan lakukan instalasi MariaDB Server pada kedua Server, pada Distro Ubuntu\/Debian teman-teman dapat menginstallnya dengan perintah:<\/p>\n<blockquote class=\"tr_bq\"><p>~# apt install mariadb-server<\/p><\/blockquote>\n<p>Setelah instalasi, silahkan teman-teman lakukan Initial Setup MariaDB nya dengan mengetikkan perintah berikut dan pilih Yes saja ketika diberikan pertanyaan Y\/n.<\/p>\n<blockquote class=\"tr_bq\"><p>~# mysql_secure_installation<\/p><\/blockquote>\n<p>2. \u00a0Konfigurasi Binary Logging, Server ID, dan Bind Address pada MariaDB Master<br \/>\nSetelah dilakukan Initial Setup pada kedua server, silahkan login menuju ke Server MariaDB yang akan dijadikan sebagai Master Database.<\/p>\n<p>Hal yang akan kita konfigurasi berada di file <b>\/etc\/mysql\/my.conf<\/b> untuk Distro Debian dan <b>\/etc\/mysql\/mariadb.conf.d\/50-server.conf <\/b>untuk Distro Ubuntu.<\/p>\n<p>Untuk mengkonfigurasi Binding Address, silahkan teman-teman cari <b>bind_address<\/b>. Pastikan konfigurasi tersebut dalam kondisi terdapat &#8220;comment&#8221; atau tanda pagar didepannya, atau Bind Addressnya diset ke <b>0.0.0.0<\/b>. Ini diperlukan agar Slave dapat berkomunikasi nantinya.<\/p>\n<p>Kemudian pada section konfigurasi <b>[mysqld] <\/b>kita tambahkan:<\/p>\n<blockquote class=\"tr_bq\"><p># Mengaktifkan Binary Logging<br \/>\n<b>log-bin<\/b><br \/>\n# Memberikan ID Server<br \/>\n<b>server-id = &lt;integer value&gt;<\/b><\/p><\/blockquote>\n<p>Integer Value silahkan diganti dengan Angka.<\/p>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-953\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/8-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/8-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/8.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>Apabila sudah silahkan teman-teman simpan dan restart MariaDB nya.<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>service mysql restart<\/b><\/p><\/blockquote>\n<p>Kemudian cek apakah Binary Logging sudah aktif ataukah belum dengan:<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>mysqld &#8211;verbose &#8211;help | grep log-bin<\/b><\/p><\/blockquote>\n<p>Lalu cek Server ID nya, apakah telah sesuai dengan:<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>mysqld &#8211;verbose &#8211;help | grep server-id<\/b><\/p><\/blockquote>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-954\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/9-300x196.png\" alt=\"\" width=\"300\" height=\"196\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/9-300x196.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/9.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<div class=\"separator\"><\/div>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-955\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/10-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/10-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/10.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>3. Buat Starting Database dan Akun Khusus Replikasi<br \/>\nKita akan membuat sebuah database untuk permulaan replikasi. Untuk replikasi, kita membutuhkan satu database sebagai starting point nya. Meski setelah selesai melakukan konfigurasi, database yang bisa direplikasi adalah seluruhnya.<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>mysql -u root -p<\/b>~# MariaDB [(none)] <b>create database &lt;nama database&gt;;<\/b><\/p><\/blockquote>\n<p>Kemudian kita buat akun khusus yang akan menangani proses replikasinya.<\/p>\n<blockquote class=\"tr_bq\"><p>;; Akun Replikasi untuk Semua Database<br \/>\n~# MariaDB [(none)] <b>grant super, reload, replication slave on *.* to &#8216;username&#8217;@&#8217;%&#8217; identified by &#8216;passwordku&#8217;;<\/b><br \/>\n;; Akun Replikasi untuk Database Spesifik<br \/>\n~# MariaDB [(none)] <b>grant super, reload, replication slave on &lt;nama database&gt;.* to &#8216;username&#8217;@&#8217;%&#8217; identified by &#8216;passwordku&#8217;;<\/b><\/p><\/blockquote>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-956\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/11-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/11-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/11.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>4. Freeze Database Master dan Buat Snapshot<br \/>\nUntuk mensinkronkan database dari Master ke Slave kita perlu melakukan pembekuan sementara pada Database Master untuk memastikan Database yang akan dimuat oleh Slave benar-benar sama dengan yang ada di Master.<\/p>\n<blockquote class=\"tr_bq\"><p>;; Membekukan Database<br \/>\n~# MariaDB [(none)] <b>flush tables with read lock;<\/b><\/p><\/blockquote>\n<p>Apa itu Flush Tables with Read Lock? silahkan baca <a title=\" \" href=\"https:\/\/www.percona.com\/blog\/2010\/04\/24\/how-fast-is-flush-tables-with-read-lock\/\" target=\"_blank\" rel=\"noopener noreferrer\">selengkapnya disini<\/a>.<\/p>\n<blockquote class=\"tr_bq\"><p>;; Menampilkan Status Posisi Database Master<br \/>\n~# MariaDB [(none)]<b> show master status;<\/b><\/p><\/blockquote>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-957\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/12-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/12-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/12.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>Mohon untuk mencatat Nama File serta Posisi nya. Kedua hal ini dibutuhkan ketika kita mengkonfigurasi MariaDB Slave nantinya.<\/p>\n<p>Selanjutnya kita buat Snapshot untuk Database yang sudah kita buat sebelumnya.<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>tar cjvf \/home\/fajar\/snapshotmaster.tar.bz2 \/var\/lib\/mysql\/&lt;nama database&gt;<\/b><\/p><\/blockquote>\n<p>5. Kirim Arsip Snapshot ke Server MariaDB Slave<br \/>\nKita kirimkan arsip snapshot yang sudah kita buat ke Server MariaDB Slave, disini saya akan menggunakan Tool scp untuk melakukan transfer data. Apabila menggunakan scp pastikan di server remote sudah terinstall SSH Server.<\/p>\n<blockquote class=\"tr_bq\"><p>~\/home\/fajar# <b>scp snapshotmaster.tar.bz2 fajar@192.168.101.4:\/home\/fajar<\/b><\/p><\/blockquote>\n<p>6. Konfigurasi Server ID pada MariaDB Slave<br \/>\nSelanjutnya kita akan konfigurasi MariaDB Slave nya. Silahkan teman-teman login ke server tersebut. Kita akan menambahkan Server ID pada Konfigurasi MariaDB nya.<\/p>\n<blockquote class=\"tr_bq\"><p>;; untuk Debian<br \/>\n~# <b>nano \/etc\/mysql\/my.conf<\/b><br \/>\n;; untuk Ubuntu<br \/>\n~# <b>nano \/etc\/mysql\/mariadb.conf.d\/50-server.conf<\/b><\/p><\/blockquote>\n<p>Tambahkan konfigurasi<b> server-id<\/b> didalam section <b>[mysqld]<\/b>.<\/p>\n<blockquote class=\"tr_bq\"><p>server-id = <b>&lt;integer-value&gt;<\/b><\/p><\/blockquote>\n<p>Berikan value yang berbeda dengan Server ID milik Master.<br \/>\nKemudian kita restart dan cek apakah Server ID sudah benar atau belum.<\/p>\n<blockquote class=\"tr_bq\"><p>~# <b>mysqld &#8211;verbose &#8211;help | grep server-id<\/b><\/p><\/blockquote>\n<\/div>\n<div>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-958\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/13-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/13-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/13.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>7. Arahkan MariaDB Slave ke MariaDB Master<br \/>\nKita arahkan MariaDB Slave agar terkoneksi dan melisten ke MariaDB Master dengan melakukan query:<\/p>\n<blockquote class=\"tr_bq\"><p>;; Set Info Master<br \/>\n~# MariaDB [(none)] <b>CHANGE MASTER TO MASTER_HOST=&#8217;ipmariadbmaster&#8217;, MASTER_USER=&#8217;usernamereplikasi&#8217;, MASTER_PASSWORD=&#8217;passwordku&#8217;, MASTER_LOG_FILE=&#8217;mysqld-bin.xxxxxx&#8217;, MASTER_LOG_POS=&lt;posisi_log_master&gt;;<\/b><br \/>\n;; Menghidupkan Slave Mode<br \/>\n~# MariaDB [(none)] <b>start slave;<\/b><\/p><\/blockquote>\n<\/div>\n<div>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-959\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/14-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/14-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/14.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>Lalu cek apakah Slave sudah terkoneksi ke Master dengan:<\/p>\n<blockquote class=\"tr_bq\"><p>~# MariaDB [(none)] show slave status \\G;<\/p><\/blockquote>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-960\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/15-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/15-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/15.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>Apabila Statusnya adalah <b>Waiting for master to send event<\/b>. Maka Slave siap digunakan, apabila selain pesan tersebut maka silahkan teman-teman cek kembali apakah ada yang salah dengan konfigurasinya atau tidak.<\/p>\n<p>8. Unfreeze Database Master<br \/>\nAgar Database dapat digunakan kembali, kita perlu menghapus status penguncian yang kita lakukan sebelumnya. Silahkan teman-teman login ke CLI MariaDB Master dan ketikkan perintah:<\/p>\n<blockquote class=\"tr_bq\"><p>~# MariaDB [(none)] unlock tables;<\/p><\/blockquote>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-961\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/16-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/16-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/16.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p>9. Replikasi Selesai!<br \/>\nKonfigurasi untuk replikasi antar 2 Database Server MariaDB sudah selesai, teman-teman dapat mencoba untuk melakukan pengubahan disisi Master dan hasilnya Slave akan mengikuti perubahan tersebut \ud83d\ude42<\/p>\n<div class=\"separator\">\n<div class=\"material-placeholder\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-962\" src=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/17-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/17-300x188.png 300w, http:\/\/materi.smkn43jkt.sch.id\/wp-content\/uploads\/2020\/07\/17.png 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<p><b>h. Referensi<\/b><br \/>\n&#8211; <a title=\" \" href=\"https:\/\/mariadb.com\/kb\/en\/mariadb\/setting-up-replication\/\" target=\"_blank\" rel=\"noopener noreferrer\">MariaDB Knowledge Base &#8211; Setting Up Replication<\/a><br \/>\n&#8211; <a title=\" \" href=\"https:\/\/www.howtoforge.com\/tutorial\/replicating-a-master-database-using-mariadb-10\/\" target=\"_blank\" rel=\"noopener noreferrer\">HowtoForge &#8211; Replicating a master database using MariaDB 10 on Debian 8<\/a><br \/>\n<a title=\" \" href=\"https:\/\/www.percona.com\/blog\/2010\/04\/24\/how-fast-is-flush-tables-with-read-lock\/\" target=\"_blank\" rel=\"noopener noreferrer\">&#8211; Percona Database Performance Blog &#8211; How fast is Flush Tables with Read Lock?<\/a><\/p>\n<\/div>\n<p>sumber : https:\/\/penguinstunnel.blogspot.com\/2017\/03\/langkah-mengkonfigurasi-2-mariadb.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>a. Pengertian Replikasi Database merupakan cara yang digunakan untuk menggandakan perubahan data yang terjadi pada Database Server (dalam hal ini MariaDB) untuk menghindari atau meminimalisir kehilangan data akibat kerusakan fisik. b. Latar Belakang Konfigurasi ini didasari atas keinginan kami untuk membuat suatu konfigurasi Web Service tanpa adanya gangguan Single Point Failure yang diakibatkan karena salah [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,7],"tags":[],"_links":{"self":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/950"}],"collection":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=950"}],"version-history":[{"count":7,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/950\/revisions"}],"predecessor-version":[{"id":5284,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/950\/revisions\/5284"}],"wp:attachment":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=950"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}