Replikasi MySQL memungkinkan Anda untuk dengan mudah menyalin database dari satu server ke server lainnya. MySQL mendukung berbagai jenis replikasi seperti master-slave, master-master dan replikasi grup. MariaDB juga mendukung replikasi multi-master. Pada artikel ini, kita akan melihat replikasi Master-Slave di MySQL dan mempelajari cara mereplikasi database MySQL di Linux. Anda dapat menggunakan langkah-langkah ini untuk mereplikasi database MySQL di Ubuntu, Debian, CentOS, Fedora, Red hat, dan jenis Linux lainnya.
Cara Mereplikasi Database MySQL
Berikut adalah langkah-langkah untuk mereplikasi database MySQL. Untuk setup kita, kita akan membutuhkan database master (IP – 54.24.32.12) dan database slave (IP – 45.12.21.23). Kami akan mereplikasi database bernama exampledb dari tuan ke budak. Kami berasumsi bahwa Anda telah menginstal MySQL di kedua server ini, dan Anda memiliki hak akses root untuk keduanya. Jika tidak, Anda dapat menginstal MySQL dengan perintah berikut
$ sudo apt-get install mysql-server mysql-client
Bonus Baca :Alternatif Meja Kerja MySQL Teratas
1. Edit file Konfigurasi Master
Buka terminal pada server database master dan jalankan perintah berikut
$ sudo vi /etc/mysql/my.cnf
Secara default, koneksi jarak jauh dinonaktifkan di MySQL. Kita perlu mengizinkan koneksi jarak jauh dari slave ke master untuk replikasi. Jadi kami menghapus komentar pada dua baris berikut untuk mengizinkan koneksi jarak jauh, dengan menambahkan # di awal, seperti yang ditunjukkan di bawah ini
#skip-networking #bind-address=127.0.0.1
Tambahkan atau batalkan komentar pada baris berikut di blok [mysqld] agar terlihat seperti berikut ini.
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
Mari kita lihat masing-masing baris di atas. Server-id baris pertama menentukan nomor ID unik untuk master. Ini harus berupa bilangan positif dari 1 hingga 2^32.
log-bin menentukan lokasi file log yang akan diisi oleh MySQL dengan detail replikasi.
binlog-do-db menunjukkan nama database yang perlu direplikasi.
Mulai ulang Server MySQL untuk menerapkan perubahan
$ sudo service mysql restart
Masuk ke MySQL sebagai pengguna root
$ sudo mysql -u root -p
dan jalankan perintah berikut
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
Harap perhatikan detail di atas, kami akan membutuhkannya nanti di Langkah #3.
Bonus Baca :Cara Mengaktifkan SSL/TLS di MySQL
2. Buat Pengguna Replikasi
Masuk ke server MySQL di master.
$ sudo mysql -u root -p
Anda akan dimintai kata sandi root.
Setelah masuk ke MySQL, jalankan perintah berikut untuk membuat pengguna jarak jauh slave_user , dan berikan izin replikasi untuk semua database. Harap ganti 45.12.21.23 di bawah ini dengan IP server budak Anda, dan ganti $password dengan kata sandi yang sesuai sesuai kebutuhan Anda.
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
Harap tambahkan aturan firewall masuk untuk port 3306 dan izinkan 45.12.21.23. Pengguna jarak jauh ini perlu terhubung ke database master agar replikasi terjadi.
Bonus Baca :Cara Mengubah Susunan Semua Tabel di MySQL
3. Edit file Konfigurasi Budak
Buka terminal pada server database budak dan jalankan perintah berikut
$ sudo vi /etc/mysql/my.cnf
Tambahkan baris berikut di bawah [mysqld] agar terlihat seperti
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
Pada baris pertama, kami menetapkan ID server 2 ke server budak. Beberapa baris berikutnya menentukan lokasi log relai dan file log replikasi. Baris terakhir menentukan database yang akan direplikasi.
Mulai ulang Server MySQL dan masuk ke MySQL
$ sudo service mysql restart $ sudo mysql -u root -p
Jalankan perintah berikut untuk membuat database kosong pada slave.
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
Muat data dari database master untuk mengisi database budak
mysql> LOAD DATA FROM MASTER;
Keluar dari MySQL.
Bonus Baca :Blog Basis Data Teratas untuk Diikuti
4. Inisialisasi Replikasi
Saat Anda masuk ke MySQL, jalankan perintah berikut untuk memulai proses replikasi. Ganti bagian dalam tebal dengan nilai-nilai Anda.
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST – Alamat IP atau nama host master (54.24.32.12).
MASTER_USER – pengguna budak yang kita buat di langkah #2.
MASTER_PASSWORD – kata sandi pengguna budak yang kami buat di langkah #2.
MASTER_LOG_FILE – file yang dikembalikan MySQL pada langkah #1 saat Anda menjalankan
TUNJUKKAN STATUS UTAMA
MASTER_LOG_POS – posisi yang dikembalikan MySQL saat Anda menjalankan SHOW MASTER STATUS di langkah #1
Terakhir, kita memulai slave untuk memulai replikasi database MySQL.
mysql> START SLAVE;
Semoga artikel ini dapat membantu Anda mereplikasi database MySQL.