GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengonfigurasi Replikasi MariaDB di CentOS Linux

Ini adalah proses membuat versi duplikat dari DB. Proses replikasi tidak hanya menyalin database, tetapi juga menyinkronkan perubahan dari master ke salah satu budak. Tetapi ini tidak berarti bahwa database budak adalah salinan identik dari master, karena replikasi dapat dikonfigurasi bahwa hanya skema tabel atau kolom atau baris yang akan direplikasi, yaitu replikasi parsial. Replikasi memastikan bahwa objek yang dikonfigurasi secara spesifik tetap sinkron di antara database yang berbeda.

Konsep Replikasi Mariadb

Cadangan :Replikasi dapat digunakan untuk backup DB. Misalnya, Anda memiliki master -> replikasi budak. Jika master hilang (hdd gagal, misalnya) Anda dapat memulihkan db Anda dari master.

Penskalaan :Anda dapat menggunakan master -> replikasi budak untuk solusi penskalaan. Misalnya, jika Anda memiliki beberapa kueri besar dan memiliki SQL, menggunakan replcation Anda dapat memisahkan kueri ini untuk setiap node replika. Menulis SQL harus dilakukan hanya pada master, untuk query read-only server slave dapat digunakan.

Menyebarkan solusi :Anda dapat menggunakan replikasi untuk distribusi. Misalnya, Anda dapat mendistribusikan data penjualan yang berbeda ke database yang berbeda.

Solusi kegagalan :Misalnya Anda memiliki, master -> slave(1) -> slave(2) -> slave(3) replikasi. Anda dapat menulis skrip untuk pemantauan master, jika master gagal, skrip dapat dengan cepat mengubah slave(1) baru untuk master master -> slave(1) -> slave(2) dan aplikasi Anda akan terus bekerja tanpa downtime

Demonstrasi diagram sederhana dari replikasi

Sebelum Anda mulai, ketahuilah apa itu log biner dan Ibdata1. Log biner berisi catatan tentang semua perubahan dalam db, data dan struktur, serta berapa lama waktu yang dibutuhkan setiap pernyataan untuk dieksekusi. Log bin terdiri dari kumpulan file log dan indeks. Artinya pernyataan SQL utama seperti CREATE, ALTER, INSERT, UPDATE dan DELETE akan dimasukkan ke log ini, pernyataan seperti SELECT tidak akan dicatat. Info ini dapat dicatat ke file query.log umum. Secara sederhana Ibdata1 adalah file yang berisi semua tabel dan semua info tentang db.

Konfigurasi server utama

Bagus untuk memperbarui server

sudo yum install update -y && sudo yum install upgrade -y

Kami sedang mengerjakan server centos 7

sudo cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

Instal MariaDB

sudo yum install mariadb-server -y

Mulai MariaDB dan aktifkan untuk memulai saat server boot

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Keluaran:

ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

Periksa status MariaDB

sudo service mariadb status

atau gunakan

sudo systemctl is-active mariadb.service

Keluaran:

Redirecting to /bin/systemctl status  mariadb.service
mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)

Setel kata sandi MariaDB

mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("SOME_ROOT_PASSWORD") where User='root';
mysql> flush privileges;
mysql> exit

SOME_ROOT_PASSWORD - kata sandi root Anda. Saya kasus saya, saya akan menggunakan "q" - kata sandi, lalu coba masuk:

sudo mysql -u root -pSOME_ROOT_PASSWORD

Keluaran:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Ketik 'bantuan;' atau '\h' untuk bantuan. Ketik '\c' untuk menghapus pernyataan input saat ini.

Mari kita buat database dengan tabel dengan beberapa data

Buat database/skema

sudo mysql -u root -pSOME_ROOT_PASSWORD
mysql> create database test_repl;

Dimana:

test_repl - Name of shcema which will be replicated

Keluaran:

Query OK, 1 row affected (0.00 sec)

Buat tabel Orang

mysql> use test_repl;
CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

Keluaran:

mysql> MariaDB [test_repl]> CREATE TABLE Persons (
-> PersonID int,
-> LastName varchar(255),
-> FirstName varchar(255),
-> Address varchar(255),
-> City varchar(255)
-> );
Query OK, 0 rows affected (0.01 sec)

Masukkan beberapa data

mysql> INSERT INTO Persons VALUES (1, "LastName1", "FirstName1", "Address1", "City1");
mysql> INSERT INTO Persons VALUES (2, "LastName2", "FirstName2", "Address2", "City2");
mysql> INSERT INTO Persons VALUES (3, "LastName3", "FirstName3", "Address3", "City3");
mysql> INSERT INTO Persons VALUES (4, "LastName4", "FirstName4", "Address4", "City4");
mysql> INSERT INTO Persons VALUES (5, "LastName5", "FirstName5", "Address5", "City5");

Keluaran:

Query OK, 5 row affected (0.00 sec)

Periksa data

mysql> select * from Persons;

Keluaran:

+----------+-----------+------------+----------+-------+
| PersonID | LastName  | FirstName  | Address  | City  |
+----------+-----------+------------+----------+-------+
|        1 | LastName1 | FirstName1 | Address1 | City1 |
|        1 | LastName1 | FirstName1 | Address1 | City1 |
|        2 | LastName2 | FirstName2 | Address2 | City2 |
|        3 | LastName3 | FirstName3 | Address3 | City3 |
|        4 | LastName4 | FirstName4 | Address4 | City4 |
|        5 | LastName5 | FirstName5 | Address5 | City5 |
+----------+-----------+------------+----------+-------+

Konfigurasikan MariaDB untuk replikasi

Anda harus mengedit file my.cnf di server Master untuk mengaktifkan pencatatan biner dan mengatur id server. Saya akan menggunakan editor teks vi, tetapi penggunaan dapat menggunakan apa saja yang cocok untuk Anda seperti nano, joe dll.

sudo vi /etc/my.cnf 

dan masukkan ke config di bagian [mysqld] baris seperti itu.


log-basename=master
log-bin
binlog-format=row
server_id=1

Keluaran:

Kemudian restart MariaDB:

sudo service mariadb restart

Masuk ke MariaDB dan periksa log biner:

sudo mysql -u root -pq test_repl

mysql> TAMPILKAN STATUS MASTER;

Keluaran:

+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000002 |     3913 |              |                  |
+--------------------+----------+--------------+------------------+

Ingat : Nilai "File" dan "Posisi". ANDA MEMBUTUHKAN NILAI INI DI SERVER SLAVE

Buat pengguna untuk replikasi

mysql> GRANT REPLICATION SLAVE ON *.* TO replication_user IDENTIFIED BY 'bigs3cret' WITH GRANT OPTION;
mysql> flush privileges;

Keluaran:

Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

Periksa pengguna di db

mysql> select * from mysql.user WHERE user="replication_user"\G;

Keluaran:

mysql> select * from mysql.user WHERE user="replication_user"\G;
*************************** 1. row ***************************
Host: %
User: replication_user
Password: *2AF30E7AEE9BF3AF584FB19653881D2D072FA49C
Select_priv: N
.....

Buat DB dump (snapshot dari semua data yang akan direplikasi) dari master

mysqldump -uroot -pSOME_ROOT_PASSWORD  test_repl > full-dump.sql

Dimana:

SOME_ROOT_PASSWORD - password for root user that you have setup
test_repl - name of the data base which will be replicated;

Anda perlu memulihkan mysql dump (full-dump.sql) di server budak. Ini diperlukan untuk replikasi.

Konfigurasi server budak

Semua perintah ini perlu Anda lakukan di server budak

Mari kita asumsikan bahwa kita memiliki server CentOS 7.x yang baru / diperbarui dengan server mariaDB terbaru dan Anda dapat login sebagai root ke server maria DB (ini dijelaskan di bagian pertama artikel)

Masuk ke konsol Maria DB dan buat DB

mysql -u root -pSOME_ROOT_PASSWORD;
mysql> create database test_repl;
mysql> exit;

Pulihkan data dari master di server budak

mysql -u root -pSOME_ROOT_PASSWORD test_repl < full-dump.sql

Dimana:

full-dump.sql - its DB Dump that you have create at test server.

Masuk ke Maria DB dan atur replikasi

mysql>     CHANGE MASTER TO
MASTER_HOST='82.196.5.39',
MASTER_USER='replication_user',
MASTER_PASSWORD='bigs3cret',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000002',
MASTER_LOG_POS=3913,
MASTER_CONNECT_RETRY=10;

Dimana:

MASTER_HOST - IP of the master server.
MASTER_USER - replication user at master server
MASTER_PASSWORD - replication user password
MASTER_PORT - mysql port at master
MASTER_LOG_FILE - bin-log file name form master
MASTER_LOG_POS - bin-log position file at master

Mulai mode budak

mysql> slave start;

Keluaran:

Query OK, 0 rows affected (0.00 sec)

Periksa status budak

mysql> show slave status\G;

Keluaran:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 82.196.5.39
Master_User: replication_user
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mariadb-bin.000002
Read_Master_Log_Pos: 4175
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 793
Relay_Master_Log_File: mariadb-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4175
Relay_Log_Space: 1089
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

Pada langkah ini semua harus baik-baik saja, dan bukan kesalahan yang seharusnya ada di sini.

Uji replikasi

Di server MAIN/MASTER tambahkan beberapa entitas ke DB

mysql -u root -pSOME_ROOT_PASSWORD test_repl
mysql> INSERT INTO Persons VALUES (6, "LastName6", "FirstName6", "Address6", "City6");
mysql> INSERT INTO Persons VALUES (7, "LastName7", "FirstName7", "Address7", "City7");
mysql> INSERT INTO Persons VALUES (8, "LastName8", "FirstName8", "Address8", "City8");

Lalu pergi ke server SLAVE dan periksa data yang direplikasi

mysql -u root -pSOME_ROOT_PASSWORD test_repl
mysql> select * from Persons;
+----------+-----------+------------+----------+-------+
| PersonID | LastName  | FirstName  | Address  | City  |
+----------+-----------+------------+----------+-------+
...................
|        6 | LastName6 | FirstName6 | Address6 | City6 |
|        7 | LastName7 | FirstName7 | Address7 | City7 |
|        8 | LastName8 | FirstName8 | Address8 | City8 |
+----------+-----------+------------+----------+-------+

Anda dapat melihat data direplikasi ke server budak. Ini berarti bahwa replikasi bekerja. Semoga Anda menikmati artikelnya. Beri tahu kami jika Anda memiliki pertanyaan.


Cent OS
  1. Cara menginstal dan mengkonfigurasi buruh pelabuhan Di Rocky Linux/Centos 8

  2. Cara Menginstal dan Mengkonfigurasi Mono di Rocky Linux 8 dan CentOS 8

  3. Cara Konfigurasi OpenSSH di CentOS 7

  1. Cara menginstal &mengkonfigurasi Redis 6 di Rocky Linux/Centos 8

  2. Cara Menginstal dan Mengonfigurasi Ansible di Rocky Linux/CentOS 8

  3. Cara menginstal Erlang di Rocky Linux/Alma Linux/CentOS 8

  1. Cara menginstal dan mengkonfigurasi R pada Sistem Linux RHEL 8 / CentOS 8

  2. Cara Konfigurasi LVM di Linux / CentOS / Redhat

  3. Cara mengkonfigurasi repositori YUM di Linux/Centos/Redhat | YUM di Linux/Centos/Redhat