Replikasi mysql master-slave langkah demi langkah

Saat kami mengharapkan throughput yang lebih tinggi, biasanya akan meningkatkan operasi baca dan operasi tulis database. Jadi kita membutuhkan cara untuk mereplikasi data dari database dengan menambahkan beberapa server (budak) yang memungkinkan server aplikasi untuk membaca dari mereka, bukan dari server master. Master hanya akan menangani operasi tulis

Cara mengatur replikasi Master Slave ini sangat berguna karena akan membuat banyak salinan data Anda, memberikan redundansi jika salah satu budak gagal, ini dapat meningkatkan ketersediaan, skalabilitas karena kita dapat menambahkan lebih banyak budak ketika kita mendapatkan yang lebih tinggi . Praktek ini dengan melakukan sinkronisasi pada beberapa database disebut replikasi

Tutorial ini diharapkan Anda sudah memiliki beberapa pengetahuan dasar tentang sistem manajemen basis data relasional dan bekerja dengan OS GNU/Linux

Jadi yang perlu kita lakukan sekarang adalah menginstal server MySQL master terlebih dahulu. Saya akan menginstal ini di Ubuntu 21. 10. Kami juga akan menggunakan VirtualBox di mesin lokal kami, kami dapat mengunduh Ubuntu 21 yang sudah disiapkan. 10 gambar yang bisa kita impor ke VirtualBox dan kita tidak perlu menginstal OS sendiri

Kami juga tentu saja dapat menggunakan penyedia cloud untuk menyiapkan server yang juga telah menyiapkan gambar yang siap digunakan. Tapi apa pun yang akan berhasil untuk tutorial ini

Menginstal VirtualBox dan mengunduh gambar Ubuntu

Jadi mari kita mulai mengunduh VirtualBox di sini. https. // www. virtualbox. org/wiki/Linux_Downloads dan pilih Ubuntu 19. 10/20. 04/20. 10/21. 04. Kemudian buka perangkat lunak di Perangkat Lunak Ubuntu dan tekan Instal

Sekarang kita unduh gambar Ubuntu di sini. https. // www. osboxes. org/ubuntu/ dan pilih Ubuntu 21. 10 Indri nakal. File akan diunduh dengan 7zip jadi kita perlu mengekstraknya. Informasi login yang akan kita perlukan nanti bisa kita temukan dengan menekan tombol Info

Buka VirtualBox dan tekan tombol Baru

Sekarang akan muncul popup di mana Anda akan memasukkan nama VM, direktori untuk menempatkan data, jenis OS dan versinya

Isi informasi di atas mengharapkan Folder Mesin dan tekan Berikutnya

Sekarang ia akan menanyakan berapa ukuran memori yang harus dialokasikan. Gunakan pengaturan default. Jika kamu menemukan

Di sini kita akan menekan "Gunakan file hard disk virtual yang ada" dan tekan ikon direktori

Tambahkan hard disk (VDI)

Popup ini akan muncul dan kita tekan Add

Temukan Anda. vdi tempat Anda mengekspor file 7zip dan tekan Buka. Sekarang lanjutkan menyimpan VM

Sebelum kita mulai, kita perlu mengatur jaringan ke adaptor yang dijembatani dengan masuk ke Pengaturan sehingga kita bisa mendapatkan IP unik untuk VM

Sekarang kami memiliki VM yang dapat kami mulai, jadi tekan tombol Mulai dan Ubuntu akan dimuat

Jika Anda menghadapi masalah dengan kursor yang berkedip atau kesulitan memulai sama sekali. Anda mungkin ingin menambah RAM untuk VM atau memori grafis. Periksa juga apakah CPU Anda mendukung virtualisasi perangkat keras. Ini dapat dilakukan dengan perintah di GNU/Linux dengan

egrep -c ‘(vmx|svm)’ /proc/cpuinfo

Jika Anda mendapatkan nilai lebih dari 0, perangkat keras Anda mendukungnya

Sekarang masuk dengan menggunakan kredensial

Login ke sistem dengan menggunakan kata sandi. osboxes. org

Sekarang kita dapat menonaktifkan GUI jika kita mau dengan membuka Terminal dan masuk

sudo systemctl set-default multi-user
_

Sekarang reboot sistem dan kita akan melihat CLI saja

Ubuntu CLISetup MySQL master VM

Jadi sekarang kami login dengan kredensial dan kami mulai menginstal semua paket dan dependensi yang diperlukan

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y

Sekarang kita perlu mendapatkan alamat IP dari VM dengan menggunakan perintah

ip addr show

192. 168. 32. 10

Salin nilai inet pada ethernet kedua dalam hal ini harus 192. 168. 32. 10

Siapkan VM budak MySQL

Jadi lakukan seperti instruksi sebelumnya dengan membuat VM baru dengan gambar yang sama dengan yang kita unduh. Tapi itu bisa menjadi masalah untuk melampirkan. vdi file lagi karena akan memiliki UUID yang sama. Jadi kita perlu mengubahnya terlebih dahulu dengan masuk ke baris perintah dan masuk

VBoxManage internalcommands sethduuid .vdi
_

Kemudian lanjutkan pengaturan VM dan kemudian kami menginstal paket lagi

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y

Mari dapatkan alamat IP dari VM ini dengan mendapatkannya dengan cara yang sama seperti sebelumnya dan menyimpannya

Konfigurasi master MySQL

Buka konfigurasi dengan VIM atau Nano

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
_

Temukan baris yang berisi bind-address dan ganti nilainya dengan alamat IP master MySQL yang kita dapatkan sebelumnya. Selanjutnya kita akan menemukan baris-baris ini di file dan menghapus komentar

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log

Untuk menghindari masalah yang saya miliki untuk waktu yang lama adalah menghapus baris ini juga

mysqlx-bind-address = 127.0.0.1
_

Sekarang mari kita restart layanan MySQL

sudo service mysql restart
_

Konfirmasikan apakah MySQL berjalan dengan

sudo systemctl set-default multi-user
_0

Jika kami membuat kesalahan dalam konfigurasi kami atau IP tidak benar, kami akan melihat bahwa itu dalam keadaan gagal di sini

Kami akan melakukan beberapa konfigurasi tambahan ke server ini di tahap selanjutnya. Pertama-tama kita harus mengatur VM budak MySQL

Kami sekarang akan membuat pengguna yang harus digunakan untuk budak sehingga mereka dapat masuk ke master MySQL. Masukkan perintah berikut di bawah ini

sudo systemctl set-default multi-user
_1

Kami dapat memverifikasi status dengan menggunakan

sudo systemctl set-default multi-user
_2

Sekarang kita perlu memindahkan data yang kita miliki ke slave. Jadi keluar dari MySQL CLI. Kami melakukan dump MySQL dan menyimpannya ke a. .sql

sudo systemctl set-default multi-user
3Konfigurasi budak MySQL

Kami membuka konfigurasi MySQL budak dan mengatur alamat bind ke IP di sini dan juga mengomentari baris seperti sebelumnya tetapi ingat untuk mengatur server-id ke 2, bukan 1. Kemudian kami me-restart layanan MySQL

sudo systemctl set-default multi-user
_4

Ganti MASTER_HOST dengan alamat IP master Anda dan MASTER_LOG_FILE dengan nama file yang Anda dapatkan saat menjalankan SHOW MASTER STATUS;

Siapkan kunci SSH publik/pribadi untuk mentransfer

Mari mentransfer data. sql ke server slave dari master. Tapi kita perlu membuat kunci publik/pribadi agar kita bisa mentransfernya dengan SCP. Jadi buat kunci dari master dengan menjalankan

sudo systemctl set-default multi-user
_5

Lewati nama atau frasa sandi yang berbeda. Kemudian buka kunci publik

sudo systemctl set-default multi-user
_6

Salin konten dan kemudian pergi ke server budak MySQL. Di sini kita perlu menginstal openssh-server

sudo systemctl set-default multi-user
_7

Kemudian buka konfigurasi SSH

sudo systemctl set-default multi-user
_8

Ubah PermitRootLogin dan atur ke Ya. Simpan file. Kemudian buat file berikut

sudo systemctl set-default multi-user
_9

Kemudian buka dan rekatkan kunci publik yang kami buat sebelumnya. Jalankan perintah berikut sekarang untuk memulai kembali layanan SSH

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y
0

Sekarang kita harus bisa berkomunikasi dengan server slave. Kita dapat mengujinya dengan

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y
1

Jika kita mendapatkan status keluar dari 0 seharusnya baik-baik saja. Sekarang kami benar-benar akan mentransfer file dump yang kami hasilkan

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y
2

Sekarang kita seharusnya dapat melihat file tersebut, dan kita melakukannya

Kita dapat melihat di sini bahwa data. sql ada di direktori home Import MySQL Dump File to MySQL slave

Sekarang mari impor file dump MySQL

sudo apt-get update
sudo apt-get install mysql-server mysql-client -y
_3

Sekarang kita harus memiliki data yang sama di budak kita. Kami dapat mengonfirmasi hal itu dengan masuk ke MySQL CLI

Jadi kita punya data yang sama. Bagus

Ayo pergi dan tambahkan database baru ke master kita untuk memeriksa apakah replikasi kita berfungsi

Kami menambahkan database baru sekarang replica_db di MySQL master

Baiklah jadi kami memiliki lima database saat ini. Mari kita periksa apakah semuanya direplikasi ke budak MySQL kita

Kita sekarang melihat bahwa replica_db kita telah ditambahkan ke slave

Jika Anda mengalami masalah selama penyiapan, Anda dapat melihat Daftar Periksa Replikasi di sini. https. //dev. mysql. com/doc/mysql-replication-excerpt/8. 0/id/masalah-replikasi. html

Itu saja untuk tutorial ini. Ada banyak pengaturan yang harus kita tambahkan untuk produksi, tetapi saya tidak akan membahasnya di sini karena ini akan cukup luas, mungkin di tutorial mendatang. Kirimi saya komentar jika Anda ingin mempelajarinya lebih lanjut

Bagaimana cara mengatur replikasi master master di MySQL?

Cara mengonfigurasi replikasi master master di mysqld .
mulai mysql di master1 "layanan mysqld mulai"
hentikan mysql di master2 "layanan mysqld stop"
salin file tar dari master1 ke master2 “scp master. /tmp/mysqld_snapshot. ter/tmp”
buka file tar di datadir master2. .
konfigurasikan saya. file cnf di master2

Bagaimana cara memeriksa master

Periksa Status Replikasi MySQL di Server Kueri .
Mulai utilitas baris perintah MySQL di server budak. # cd /opt/mysql/mysql/bin. .
Periksa status replikasi menggunakan perintah show slave status (status server slave disampaikan oleh nilai kolom Slave_IO_Running dan Slave_SQL_Running)

Apakah MySQL mendukung replikasi master master?

Replikasi Master MySQL Master adalah pengembangan replikasi master-slave yang mengatasi kelemahan utamanya . Metode replikasi ini memerlukan dua atau lebih node master yang dapat menangani permintaan baca dan tulis. Selain itu, setiap master Anda dapat memiliki beberapa node slave.

Bagaimana cara mengkonfigurasi master MySQL

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