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.