Replikasi multi master mysql 8

MySQL adalah sumber terbuka dan salah satu sistem manajemen basis data relasional yang paling banyak digunakan. Menyiapkan server cadangan MySQL terpisah sangat penting jika terjadi kegagalan, karena server cadangan berisi semua yang diperlukan untuk pemulihan yang berhasil

Fitur replikasi di MySQL memungkinkan Anda mempertahankan banyak salinan data MySQL. Semua data di server master akan disinkronkan ke server slave secara otomatis. Jika server master Anda gagal, Anda dapat mempromosikan Slave menjadi Master untuk melakukan operasi

Prasyarat

• Dua server yang menjalankan Ubuntu 20. 04

• Kata sandi root dikonfigurasi di kedua server

Untuk tutorial ini, kita akan menggunakan konfigurasi berikut

ServerIP Addressmaster45. 58. 41. 25budak45. 58. 40. 60

Instal MySQL8

Pertama, Anda perlu menginstal server MySQL 8 di kedua server

Jalankan perintah berikut untuk menginstal server MySQL 8 di kedua server

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_2

Setelah menginstal server MySQL, Anda perlu mengatur kata sandi root MySQL di kedua server

Jalankan perintah berikut untuk mengatur kata sandi root

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_3

Anda akan ditanya berikut ini

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_4

Cukup tekan Enter untuk mengatur kata sandi root

Please set the password for root here.
New password: 
Re-enter new password:

Tetapkan kata sandi root MySQL Anda dan jawab pertanyaan yang tersisa seperti yang ditunjukkan di bawah ini

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Konfigurasi Server Utama

Pertama, Anda perlu mengedit file konfigurasi default MySQL di server Master untuk mengizinkan akses jarak jauh dan mengaktifkan log biner

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
5

Tambahkan atau ubah baris berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_

Simpan dan tutup file, lalu mulai ulang layanan MySQL untuk menerapkan perubahan

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_6

Buat Pengguna Replikasi di Server Master

Selanjutnya, Anda perlu membuat pengguna replikasi di server Master untuk mengelola replikasi

Untuk melakukannya, sambungkan ke shell MySQL dengan perintah berikut

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_7

Berikan kata sandi root MySQL Anda, lalu jalankan perintah berikut untuk membuat pengguna replikasi

mysql> CREATE USER [email protected] IDENTIFIED WITH mysql_native_password BY 'password';
_

Selanjutnya, berikan hak istimewa REPLICATION SLAVE kepada pengguna replikasi

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_8

Selanjutnya, siram hak istimewa untuk menerapkan perubahan

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_9

Selanjutnya, periksa hak istimewa menggunakan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_0

Keluaran sampel

+-------------------------------------------------------------+
| Grants for [email protected]                            |
+-------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `slaveuser`@`45.58.40.60` |
+-------------------------------------------------------------+

Selanjutnya, keluar dari shell MySQL dengan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_1

Catatan. Ganti 45. 58. 40. 60 dengan alamat IP server Slave

Konfigurasikan Server Budak

Selanjutnya, Anda perlu mengedit file konfigurasi utama MySQL dan membuat beberapa perubahan

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
5

Tambahkan atau ubah baris berikut

pid-file        = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
bind-address            = 0.0.0.0  
datadir = /var/lib/mysql
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
max_binlog_size = 500M
slow_query_log   = 1

Simpan dan tutup file, lalu mulai ulang layanan MySQL untuk menerapkan perubahan

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_6

Inisialisasi Replikasi di Server Budak

Selanjutnya, Anda harus memulai proses Replikasi di server budak

Pertama, sambungkan ke shell MySQL di server Master dengan perintah berikut

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_7

Selanjutnya, periksa status Master dengan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_5

Keluaran sampel

*************************** 1. row ***************************
             File: mysql-bin.000002
         Position: 1047
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

Dari output di atas, catat file log master dan nomor posisi

Selanjutnya, buka server Slave dan sambungkan ke shell MySQL

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_7

Selanjutnya, gunakan informasi yang diperoleh dari server Master dan konfigurasikan server Slave dengan perintah berikut

mysql> CHANGE MASTER TO MASTER_HOST='45.58.41.25', MASTER_USER='slaveuser', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1047;

Selanjutnya, jalankan Slave menggunakan perintah berikut

Catatan. ganti IP45. 58. 41. 25 dengan alamat IP dari server Master

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_7

Selanjutnya, verifikasi status Slave dengan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_8

Anda harus mendapatkan output berikut

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 45.58.41.25
                  Master_User: slaveuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 1047
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 324
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Verifikasi Replikasi Master-Slave

Pada titik ini, replikasi MySQL Master-Slave dikonfigurasi. Sekarang, saatnya menguji apakah replikasi berfungsi atau tidak

Pertama, pergi ke server Master dan buat database dengan perintah berikut

mysql -u root -p
mysql> create database replicadb;

Selanjutnya, verifikasi semua database menggunakan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_9

Keluaran sampel

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
0

Selanjutnya, keluar dari shell MySQL

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_1

Selanjutnya, buka server Slave dan sambungkan ke MySQL

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_7

Selanjutnya, daftarkan semua database menggunakan perintah berikut

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address            = 0.0.0.0  
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
_9

Keluaran sampel

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
_1

Output di atas menunjukkan bahwa replikasi MySQL Master-Slave berfungsi seperti yang diharapkan karena database 'replicadb' direplikasi di server 2

Kesimpulan

Dalam panduan di atas, Anda belajar cara menyiapkan replikasi MySQL 8 Master-Slave dua node di Ubuntu 20. 04. Anda sekarang dapat menerapkan penyiapan ini di lingkungan produksi untuk melakukan salinan langsung dari database Anda

Apakah MySQL mendukung replikasi multi master?

Replikasi multi-sumber MySQL memungkinkan replika untuk menerima transaksi dari berbagai sumber langsung secara paralel . Dalam topologi replikasi multi-sumber, replika membuat saluran replikasi untuk setiap sumber yang seharusnya menerima transaksi.

Bagaimana cara mengkonfigurasi replikasi master master di MySQL 8?

Siapkan Replikasi MySQL 8 dengan Node Linux .
Prasyarat
Instal MySQL8
Konfigurasi Server Utama
Buat Pengguna Replikasi di Server Master
Konfigurasikan Server Budak
Inisialisasi Replikasi di Server Budak
Verifikasi Replikasi Master-Slave
Kesimpulan

Bagaimana cara mengatur replikasi multi sumber di MySQL?

Ada 2 cara untuk mengonfigurasi dalam Replikasi multi-sumber. 1) Replikasi berbasis pengidentifikasi transaksi global (GTID). 2) Replikasi berbasis posisi log biner. .
Jadi kita bisa menggunakan pernyataan berikut dalam skema kinerja. .
Ini akan menunjukkan nama saluran, source_UUID, thread_ID

Bagaimana cara mengkonfigurasi replikasi master master di MySQL?

7 Langkah Untuk Mencapai Replikasi Master-Slave MySQL .
Menyiapkan Guru
Buat Pengguna Baru Untuk Budak
Memindahkan Data Dari Master Ke Slave
Konfigurasikan Server Budak
Impor Dump Data
Mulai Server Budak
Uji Replikasi Master-Slave MySQL