GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur replikasi MariaDB Master-Slave di CentOS 7

Konsep replikasi database memastikan bahwa data disalin di beberapa server dari server Master. Ini memberikan redundansi data dan memastikan bahwa data tidak hilang jika node Master gagal. Pada artikel ini, kita melihat replikasi MariaDB Master-Slave di CentOS 7. Kami akan mendemonstrasikan bagaimana data dapat disalin dari database yang terletak di node Master ke database lain yang terletak di sistem Slave.

Skenario Replikasi Master-Slave MariaDB

Berikut adalah Pengaturan replikasi:



Master node (CentOS 7 64 bit) : IP 173.82.2.236

Slave node: (CentOS 7 64 bit) : IP 173.82.94.57

Langkah 1:Instal MariaDB pada node Master dan Slave

Untuk memulai, masuk ke node master dan slave dan jalankan perintah berikut untuk menginstal server MariaDB

yum install mariadb-server mariadb

Contoh Keluaran

Mulai layanan MariaDB dan aktifkan saat boot



# systemctl start mariadb
# systemctl enable mariadb

Contoh Keluaran

Langkah 2:Tetapkan kata sandi MariaDB pada Master dan Slave

Secara default, kata sandi untuk MariaDB/MySQL biasanya kosong dan pengguna yang tidak berwenang dapat mengakses database. Kita perlu membuatnya aman dengan mengonfigurasi kata sandi dan mengeraskannya dengan beberapa pengaturan lainnya. Untuk mencapai ini, jalankan perintah di bawah ini pada node master dan slave

mysql_secure_installation

Contoh Keluaran

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter
New password:   ## Enter new password
Re-enter new password:  ## Enter password again
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  ## Enter Y and press Enter
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  ## Enter Y and press Enter
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Langkah 3:Mengonfigurasi node Master

Sekarang setelah kita mengeraskan instance MariaDB di kedua node, Mari konfigurasikan node Master.

Pertama, kita perlu mengizinkan port 3306 MariaDB melintasi firewall CentOS 7. Untuk melakukannya, jalankan perintah

# firewall-cmd --add-port=3306/tcp --zone=public --permanent

Contoh Keluaran

Muat ulang firewall untuk melakukan perubahan

# firewall-cmd --relaod

Contoh Keluaran

Selanjutnya, buat beberapa perubahan pada /etc/my.cnf berkas

vim /etc/my.cnf

tambahkan baris berikut di [mysqld] bagian



[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=replica_db
[...]

Di sini,replika_db adalah database yang akan kita buat dan replika di seluruh slave.

Selanjutnya, restart layanan MariaDB menggunakan perintah:

systemctl restart mariadb

Sekarang kita akan masuk ke MariaDB sebagai pengguna root:

mysql -u root -p

Langkah selanjutnya adalah Membuat replica_db basis data

MariaDB [(none)]> CREATE DATABASE replica_db;

Selanjutnya, buat pengguna dan kata sandi Slave. Misalnya, kita akan menggunakan slave_user sebagai nama pengguna Budak dan P@ssword100 sebagai kata sandi:


MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'P@ssword100';
Query OK, 0 rows affected (0.00 sec)

Selanjutnya, Siram hak istimewa seperti yang ditunjukkan


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

Selanjutnya, jalankan perintah di bawah ini untuk menampilkan status master

SHOW MASTER STATUS;

Langkah 4:Mencadangkan database di server Master dan mentransfernya ke Slave

Selanjutnya, jalankan perintah di bawah ini untuk mencadangkan semua database Master

 # mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql

Ini membuat file bernama masterdatabase.sql di direktori kerja Anda saat ini.

Sekali lagi login ke MySQL sebagai pengguna root:

mysql -u root -p

Dan, buka kunci tabel:



MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

Sekarang Salin masterdatabase.sql file ke server Slave Anda.

Jadi perintahnya adalah:

scp masterdatabase.sql [email protected]:/home

Harap diingat bahwa 173.82.94.57 adalah server budak MariaDB kami.

Langkah 4:Mengonfigurasi Budak MariaDB

Sekarang saatnya untuk mengonfigurasi simpul MariaDB Slave

Edit file /etc/my.cnf berkas

vim /etc/my.cnf

Tambahkan entri berikut di bawah [mysqld] bagian seperti yang ditunjukkan

 
[mysqld]
server-id = 2
replicate-do-db=replica_db
[...]

Di sini, replica_db adalah database yang dibuat di node Master Server. Juga, Berhati-hatilah untuk menggunakan server-id yang berbeda untuk server master dan slave. Dalam hal ini, server-id adalah 2

Simpan dan keluar dari file.

Selanjutnya, kita akan mengimpor database master seperti yang ditunjukkan

mysql -u root -p < /home/masterdatabase.sql 

Ingatlah bahwa kita telah menyalin file masterdatabase.sql dari server master ke direktori /home/ dari server budak.

Mulai ulang layanan MariaDB untuk menerapkan perubahan.

systemctl restart mariadb

Sekarang login ke MariaDB sebagai pengguna root

mysql -u root -p

Hentikan Budak. Instruksikan Slave di mana menemukan file Master Log dan mulai Slave.


MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='173.82.2.236', MASTER_USER='slave_user', MASTER_PASSWORD='P@ssword100', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=473;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)

Selanjutnya jalankan perintah dibawah ini untuk menampilkan status Slave

MariaDB [(none)]> SHOW SLAVE STATUS\G;

Menguji Replikasi MariaDB

Sisi utama:

Buka server master MariaDB Anda dan masuk ke instans MariaDB menggunakan perintah seperti yang ditunjukkan

mysql -u root -p

Buat database replica_db

Selanjutnya, buat tabel Persons

Tambahkan catatan seperti yang ditunjukkan

Terakhir, Tampilkan tabel

Sisi budak:

Sekarang, masuk ke instance database MariaDB di server Slave

mysql -u root -p

Selanjutnya, tampilkan database menggunakan perintah di bawah ini

SHOW DATABASES;

Seperti yang Anda lihat, replica_db database hadir, menyiratkan bahwa itu telah direplikasi!

Mari kita lanjutkan dan selidiki di dalam database dan periksa apakah ada tabel yang ada. Jalankan

use replica_db;

Kemudian

show tables;

Seperti yang Anda lihat, tabel Orang dibuat sebelumnya di node Master hadir. Sempurna!

Mari kita ungkapkan catatannya untuk memastikan bahwa database kita telah sepenuhnya direplikasi

select *from replica_db;

Seperti yang diamati, semua konten telah direplikasi dan akurat. Bagus!

Dalam artikel ini, Anda telah mempelajari cara mengatur replikasi MariaDB Master-Slave di CentOS 7. Cobalah dan jangan ragu untuk mempertimbangkannya.


Linux
  1. Cara Mengatur Ulang Kata Sandi Root MySQL Atau MariaDB

  2. Mutt:Bagaimana Cara Menyimpan Kata Sandi dengan Aman?

  3. Cara Mengatur VSFTPD di CentOS 8

  1. Cara Menginstal MariaDB di CentOS 7

  2. Cara Mengatur VPN WireGuard di CentOS 8

  3. Bagaimana Cara Menginstal MySQL di CentOS 7.x?

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

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

  3. Cara Mengonfigurasi Replikasi MariaDB di CentOS Linux