Replication pada database MySQL adalah proses penyalinan database dari suatu database sumber ke datu atau beberapa database yang lain.

Master Slave Replication digunakan untuk memecahkan problem seperti performance, mendukung cadangan database yang berbeda dan solusi untuk mengurangi kegagalan dari sebuah sistem. Hal ini memungkinkan data dari satu database server (master) untuk direplikasi ke satu atau lebih database server lain (slave).

Dengan melakukan MySQL replication, kita dapat mengcopy isi database dari suatu server MySQL ke satu atau beberapa server MySQL yang lain.

Tujuan dari MySQL replication antara lain:

  1. Memecah pekerjaan antara beberapa MySQL server.
    Server MySQL utama menjalankan proses bisnis, server MySQL hasil replikasi menjalankan analisa data. Dengan cara ini saat MySQL replikasi melakukan analisa data yang mungkin menguras memory dan proses tidak akan mempengaruhi proses bisnis yang dijalankan.
  2. Realtime backup
    Hasil MySQL Replication bisa menjadi backup yang realtime. Meskipun demikian kita tetap harus membuat backup yang bersifat periodik.

Prasyarat

  • Dua server ubuntu
  • Akun pengguna istimewa root
  • Koneksi internet untuk mengunduh paket

Disini menggunakan dua server yang digunakan

  • Master – 192.168.10.149
  • Slave – 192.168.10.199

Instal server MySQL 8 di kedua node

Instalasi MySQL adalah proses yang sederhana dan mudah. Dalam sistem Ubuntu, MySQL dapat diinstal menggunakan repositori paket APT. Sebelum instalasi, perbarui indeks paket Ubuntu menggunakan perintah berikut.

$apt update

Instal paket server MySQL menggunakan perintah di bawah ini.

$apt install mysql-server -y

Instalasi baru server MySQL membuatnya tidak aman. Jalankan skrip “mysql_secure_installation” untuk mengubah beberapa opsi default yang kurang aman seperti login root jarak jauh, database pengujian, pengguna sampel, dll.

$ mysql_secure_installation

Memulai dan mengaktifkan layanan MySQL

$ systemctl start mysql
$ systemctl enable mysql

Mengonfigurasi server Master DB

Sekarang kita perlu membuat beberapa perubahan pada server master untuk replikasi. Edit file mysqld.cnf di bawah direktori /etc/mysql/mysql.conf.d dan tambahkan baris berikut. Ingatlah untuk menambahkan variabel konfigurasi di bawah bagian [mysqld].

$ vi /etc/mysql/mysql.conf.d/mysqld.conf

Penjelasannya :  

  • server-id – ID unik dari server MySQL. ID ini tidak dapat digunakan kembali di node mana pun di klaster.
  • log-bin – Ini adalah file di mana semua informasi replikasi disimpan.
  • max_binlog_size – Ukuran file binlog.

Juga, komentar alamat bind sebagai:

#bind-address =127.0.0.1

Terkadang kita mungkin perlu mereplikasi data dari satu server MySQL DB ke satu atau beberapa server MYSQL DB secara otomatis. Pada dasarnya, administrator database melakukan tugas-tugas yang berhubungan dengan database seperti replikasi, clustering, dan auto-failover. Mengelola server database MySQL dan melakukan tugas replikasi adalah tanggung jawab para ahli database. Pada artikel ini, kita akan belajar cara mengatur replikasi database MySQL master-slave di Ubuntu 20.04. Pada artikel ini, kita akan menggunakan MySQL 8 untuk replikasi.

Membuat pengguna baru untuk layanan Replikasi pada node master

Sekarang kita perlu membuat pengguna database di node master yang akan digunakan oleh budak saat terhubung. Masuk ke database menggunakan pengguna root dan buat pengguna.

$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY 'password';

Catatan: Menentukan alamat IP saat membuat pengguna hanya akan menerima koneksi MySQL dari host yang ditentukan. Koneksi dari host lain akan ditolak. Dalam contoh ini, saya telah menggunakan alamat IP server slave MySQL saya. Anda mungkin perlu mengubah alamat IP ini ke lingkungan Anda sesuai dengan itu.

Pengguna memerlukan hak istimewa REPLICATION SLAVE untuk dapat mereplikasi data MySQL. Gunakan kueri berikut untuk memberikan hak istimewa.

mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;

Verifikasi hak istimewa yang diberikan dengan menggunakan kueri berikut.

mysql> SHOW GRANTS FOR [email protected];

Mengkonfigurasi node DB slave

Kami telah menginstal server MySQL di langkah sebelumnya. Sekarang kita akan mengubah beberapa file konfigurasi untuk mengaktifkan proses replikasi. Edit file mysqld.cnf di bawah direktori /etc/mysql/mysql.conf.d dan tambahkan konten berikut.

$vi /etc/mysql/mysql.conf.d/mysqld.cnf

Penjelasan :

  • server-id – Id server MySQL yang unik.
  • read_only – Slave node diatur ke mode baca-saja
  • log_bin – Memungkinkan logging biner di slave node
  • slow_query_log – Mengaktifkan log kueri lambat

Juga, komentari garis alamat pengikat.

# bind-address = 127.0.0.1

Sekarang mulai ulang layanan MySQL

$ systemctl restart mysql

Menyambungkan server slave ke server master

Sebelum mengkonfigurasi server slave, buka server master dan periksa statusnya.

$ mysql -u root -p
mysql> SHOW MASTER STATUS\G

Yang akan kita gunakan di server slave.

  • file: mysql-bin.000002
  • Position: 157

Sekarang konfigurasikan parameter di server slave yang akan digunakan untuk menghubungkan server master. Ikuti langkah-langkah di bawah ini.

  • Login ke server MySQL menggunakan kredensial root
$ mysql -u root -p
  • Hentikan utas slave
mysql> STOP SLAVE;
  • Menyiapkan server slave untuk mereplikasi server master
mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.149', MASTER_USER='rpl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=157;
  • 192.168.10.149 – Alamat IP server master
  • rpl_user – Pengguna MySQL dari server master
  • kata sandi – Kata sandi pengguna replikasi
  • mysql-bin.000002 – Logfile dari server master
  • 157– Posisi log server master

Sekarang aktifkan server slave.

mysql> START SLAVE;

Memverifikasi status slave dengan menggunakan kueri berikut

mysql> SHOW SLAVE STATUS\G

Memverifikasi replikasi master-slave

Master dan slave dikonfigurasi untuk mereplikasi. Kita dapat memverifikasi apakah replikasi master-slave berfungsi atau tidak. Di server master, masuk ke shell MySQL dan buat database pengujian.

$ mysql -u root -p
$ mysql> CREATE DATABASE db_example;
mysql> SHOW DATABASES;

Sekarang login ke server slave

$ mysql -u root -p

Jalankan kueri berikut untuk mencantumkan database.

mysql> SHOW DATABASES;

Sampai disini kita sudah berhasil membuat replikasi pada slave.

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *