GNU/Linux >> Belajar Linux >  >> Ubuntu

Replikasi MySQL 8 Master-Slave di Ubuntu 20.04

Terkadang kita mungkin perlu mereplikasi data dari satu server MySQL DB ke satu atau lebih 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 pakar 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.

Prasyarat

  • Dua server ubuntu
  • Akar akun pengguna dengan hak istimewa
  • Koneksi internet untuk mengunduh paket

Dalam contoh ini, server berikut sedang digunakan.

  • Guru – 192.168.178.135
  • Budak – 192.168.178.137

Instal server MySQL 8 di kedua node

Instalasi MySQL adalah proses yang sederhana dan mudah. Di 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 script “mysql_secure_installation ” untuk mengubah beberapa opsi default yang kurang aman seperti login root jarak jauh, database pengujian, pengguna sampel, dll.

$ mysql_secure_installation

Mulai dan aktifkan layanan MySQL

$ systemctl start mysql
$ systemctl enable mysql

Konfigurasi server Master DB

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

$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysqld-slow.log

Dimana:

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

Juga, beri komentar pada bind-address sebagai:

#bind-address =127.0.0.1

Mulai ulang layanan mysql

$systemctl restart mysql

Buat pengguna baru untuk layanan Replikasi pada master node

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

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

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 budak MySQL saya. Anda mungkin perlu mengubah alamat IP ini sesuai dengan lingkungan Anda.

Pengguna membutuhkan hak 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];

Konfigurasikan simpul DB budak

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

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

Isi file konfigurasi:

[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log = 2

Dimana,

  • id-server – ID server MySQL yang unik.
  • hanya baca – Node budak disetel ke mode hanya-baca
  • log_bin – Mengaktifkan pencatatan biner di simpul budak
  • slow_query_log – Mengaktifkan log kueri lambat

Juga, beri komentar pada baris bind-address.

# bind-address = 127.0.0.1

Sekarang restart layanan MySQL

$ systemctl restart mysql

Hubungkan server budak ke server master

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

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

Perhatikan flag berikut yang akan kita gunakan di server slave.

  • File:mysql-bin.000002
  • Posisi:156

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

  • Masuk ke server MySQL menggunakan kredensial root
$ mysql -u root -p
  • Hentikan utas Budak
mysql> STOP SLAVE;
  • Siapkan server budak untuk mereplikasi server master
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;

Dimana,

  • 192.168.178.137 – Alamat IP server master
  • replication_user – Pengguna MySQL dari server master
  • sandi – Replikasi kata sandi pengguna
  • mysql-bin.000002 – File log dari server master
  • 156 – Posisi log server master

Sekarang aktifkan server budak.

mysql> START SLAVE;

Verifikasi status budak dengan menggunakan kueri berikut

mysql> SHOW SLAVE STATUS\G

Perhatikan status bendera berikut.

  • Slave_IO_Running:Menghubungkan
  • Slave_IO_Running:Menghubungkan

Verifikasi replikasi master-slave

Master dan slave dikonfigurasi untuk mereplikasi. Kami 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 example_db;

Verifikasi database yang dibuat.

mysql> SHOW DATABASES;

Sekarang login ke server budak

$ mysql -u root -p

Jalankan kueri berikut untuk membuat daftar database.

mysql> SHOW DATABASES;

Anda dapat melihat database yang dibuat di server master direplikasi ke server budak.

Kesimpulan

Pada artikel ini, kita belajar cara mengatur node master dan slave MySQL di Ubuntu 20.04. Anda dapat mengikuti artikel ini untuk mengatur replikasi MySQL master-slave di Ubuntu 18.04 juga.


Ubuntu
  1. Cara Menginstal MySQL 8.0 di Ubuntu 18.04

  2. Cara Menginstal MySQL di Ubuntu 20.04

  3. Instalasi LAMPU Ubuntu 22.04

  1. Cara Menginstal MySQL di Ubuntu 18.04

  2. Cara Mengonfigurasi Replikasi Master-Slave MySQL di Ubuntu 18.04

  3. Cara Mengonfigurasi Replikasi Master-Slave MySQL di CentOS 7

  1. Cara Mengonfigurasi Replikasi Master-Slave MySQL (MariaDB) di Debian 10

  2. Cara Mengatur Replikasi Master-Slave untuk PostgreSQL 9.6 di Ubuntu 16.04

  3. Cara Mengatur Replikasi Cassandra di Ubuntu 16.04