Cara mengatur replikasi mariadb (master-slave) di Centos/Rhel 7 dan Debian 8/9

Cara mengatur replikasi mariadb (master-slave) di Centos/Rhel 7 dan Debian 8/9

Bahkan ketika beberapa orang itu mendengar ungkapan “Replikasi basis data“, Mereka sering mengaitkannya dengan kebutuhan memiliki banyak salinan informasi yang sama untuk menghindari kehilangan data jika terjadi kegagalan perangkat keras atau korupsi data. Meskipun itu benar pada tingkat tertentu, ada lebih banyak replikasi database daripada konsep umum mencadangkan database dan ketersediaan data.

Replikasi Master-Slave Mariadb di Centos/Rhel 7 dan Debian 8/9

Di antara manfaat lain dari replikasi database dalam pengaturan master-slave yang dapat kita sebutkan:

  1. Cadangan dapat dilakukan di server budak tanpa mempengaruhi (dan dipengaruhi oleh) operasi tulis di master.
  2. Operasi intensif sumber daya (seperti analisis data) dapat dilakukan pada budak tanpa mempengaruhi kinerja master.

Dalam artikel ini kami akan menjelaskan cara mengatur replikasi master-slave Mariadb 10.1. Berbeda dengan replikasi klasik, Mariadb memperkenalkan konsep ID Transaksi Global (Gtids) di dalam V10.0, yang memungkinkan untuk mengubah budak untuk terhubung dan mereplikasi dari master yang berbeda dengan mudah. Selain itu, keadaan budak dicatat dengan cara yang aman (pembaruan ke negara dilakukan dalam transaksi yang sama dengan pembaruan data).

Jika Anda mencari Mysql replikasi di bawah Centos/rhel 6, Ikuti Panduan ini Pengaturan MySQL (Master-Slave) Replikasi pada CentOS/RHEL 6

Menginstal Mariadb 10.1 di Centos/Rhel 7 dan Debian 8/9

Lingkungan pengujian kami terdiri dari mesin -mesin berikut (keduanya Centos 7):

Master: 192.168.0.18 Budak: 192.168.0.19 

Untuk menginstal versi terbaru Mariadb, kami perlu menambahkan repositori mereka ke server kami. Jika Anda menggunakan versi mariadb yang lebih lama, katakanlah 5.5, pertimbangkan untuk meningkatkan ke 10 terbaru.1 versi menggunakan artikel di bawah ini.

  1. Upggde mariadb 5.5 ke Mariadb 10.1

Di centos/rhel

Buat file bernama Mariadb.repo di dalam /etc/yum.repo.D dengan konten berikut pada keduanya Menguasai Dan Budak Sistem:

# Mariadb 10.Daftar Repositori 1 CentOS-Dibuat 2016-01-23 14:16 UTC # http: // mariadb.org/mariadb/repositori/[mariadb] name = mariadb baseUrl = http: // yum.Mariadb.org/10.1/centos7-amd64 gpgkey = https: // yum.Mariadb.org/rpm-gpg-key-mariadb gpgcheck = 1 

Simpan file dan instal mariadb di kedua server menggunakan yum:

# yum update && yum instal mariadb-server mariadb-client 

Di Debian/Ubuntu

Tambahkan kunci untuk mengotentikasi paket dan repositori mariadb:

# apt-get install perangkat lunak-properti-common # apt-key adv --recv-keys --keyserver keyserver.Ubuntu.com 0xcbcb082a1bb943db # add-apt-repository 'deb [arch = amd64, i386] http: // mirror.Edatel.bersih.Co/Mariadb/repo/10.1/Debian Jessie utama' 

Catatan: Ganti distribusi nama Dan nama kode di baris yang disorot di atas.

Instal menggunakan apt-get memerintah:

# apt-get update # apt-get install mariadb-server 
Periksa versi mariadb di master slave-server

Setelah Anda memasang mariadb, jalankan mysql_secure_installation Prosedur pada master dan slave, mari mengatur database uji sampel di mesin master.

Menyiapkan Contoh Database MySQL di Master

Kami sekarang akan mengatur di server master Karyawan basis data dari https: // github.com/Datacharmer/test_db (yang menyediakan dataset 4 Juta catatan tersebar di enam tabel) dalam dua langkah sederhana:

Kloning repositori dan gunakan untuk mengimpor database sampel ke instalasi mariadb Anda:

# git clone https: // github.com/Datacharmer/test_db # CD test_db # mysql < employees.sql 

Mengkonfigurasi Server MySQL di Master

Untuk mengonfigurasi master, ikuti langkah -langkah ini:

LANGKAH 1: Edit /etc/my.CNF mengajukan. Di bawah [mysqld] Bagian, tambahkan empat baris berikut:

LOG-BIN SERVER_ID = 1 Replicate-do-db = karyawan mengikat-address = 192.168.0.18 

dan restart mariadb:

# Systemctl restart mariadb 

LANGKAH 2: Masuk ke server mariadb sebagai root, buat budak pengguna dan tetapkan hibah yang diperlukan:

Mariadb [(tidak ada)]> Buat pengguna 'slave'@'localhost' yang diidentifikasi oleh 'slavePassword'; Mariadb [(tidak ada)]> Hibah budak di *.* Untuk budak yang diidentifikasi oleh 'slavePassword' dengan opsi hibah; Mariadb [(tidak ada)]> Hak istimewa flush; Mariadb [(tidak ada)]> Tabel flush dengan kunci baca; Mariadb [(tidak ada)]> Tunjukkan status master; 

Itu terakhir memerintah (Tunjukkan status master) Mengembalikan posisi saat ini dalam log biner (koordinat yang tepat yang menunjukkan pada titik mana yang harus mulai direplikasi dari:

Konfigurasikan Master MySQL untuk replikasi

Langkah 3: Keluar dari mariadb prompt (dengan KELUAR;) dan gunakan perintah berikut untuk mengambil snapshot dari database karyawan. Saat Anda memukul Memasuki, Anda akan diminta untuk mengetik kata sandi untuk root yang Anda atur sebelumnya mysql_secure_installation:

# mysqldump -u root -p karyawan> karyawan dump.SQL 

Setelah dump selesai, sambungkan ke server database lagi untuk membuka kunci tabel dan kemudian keluar:

Mariadb [(tidak ada)]> Membuka tabel; Mariadb [(tidak ada)]> KELUAR; 

Langkah 4: Salin dump ke slave:

# SCP karyawan-dump.SQL [email dilindungi]:/root/ 

Langkah 5: Jalankan mysql_upgrade Prosedur untuk meningkatkan tabel sistem (Anda akan diminta untuk memasukkan kata sandi root mariadb):

# mysql_upgrade -u root -p 

Langkah 6: Izinkan layanan database melalui firewall:

# firewall-cmd --add-service = mysql # firewall-cmd --add-service = mysql --permanent # firewall-cmd-reload 

Sekarang mari kita konfigurasikan budak.

Mengkonfigurasi Server MySQL di Slave

Untuk mengonfigurasi budak, ikuti langkah -langkah ini:

LANGKAH 1: Buat akun untuk melakukan tugas replikasi. Terhubung ke server MariaDB lokal dengan:

# mysql -u root -p 

dan masukkan kata sandi yang Anda atur sebelumnya.

LANGKAH 2: Setelah terhubung ke server database, buat pengguna dan database kosong, dan berikan izin:

Mariadb [(tidak ada)]> Membuat karyawan basis data; Mariadb [(tidak ada)]> Berikan semua hak istimewa kepada karyawan.* Untuk 'slave'@'localhost' dengan opsi hibah; Mariadb [(tidak ada)]> Hak istimewa flush; 

Langkah 3: Keluar dari prompt mariadb dan muat dump yang dibuat di server master:

# mysql -u root -p karyawan < employees-dump.sql 

Langkah 4: Edit /etc/my.CNF file untuk menetapkan server PENGENAL kepada budak di bawah [mysqld] bagian. Perhatikan bahwa itu harus menjadi bilangan bulat yang berbeda dari 1, seperti yang kami gunakan 1 di master:

server_id = 2 replikasi-do-db = karyawan 

Mulai ulang server database:

# Systemctl restart mariadb 

Langkah 5: Jalankan mysql_upgrade Prosedur untuk meningkatkan tabel sistem (Anda akan diminta untuk memasukkan kata sandi root mariadb):

# mysql_upgrade -u root -p 

Langkah 6: Setelah dump diimpor ke budak, kami hanya beberapa langkah untuk mulai mereplikasi. Masuk ke database dan jalankan perintah berikut di prompt mariadb. Memberi perhatian khusus pada Master_log_file Dan Master_log_pos variabel, yang seharusnya cocok dengan nilai yang dikembalikan oleh Tunjukkan status master Pada Langkah 2 dari “Mengkonfigurasi Master” di atas.

Mariadb [(tidak ada)]> Ubah master menjadi master_host = "192.168.0.18 ", master_user =" slave ", master_password =" slavePassword ", master_port = 3306, master_log_file =" master-bin.000001 ", master_log_pos = 314, master_connect_retry = 10, master_use_gtid = current_pos; 

Langkah 7: Mulailah budak dan periksa statusnya tanpa keluar dari mariadb prompt:

Mariadb [(tidak ada)]> Mulai budak; Mariadb [(tidak ada)]> Tunjukkan status budak \ g; 

Bukannya Anda membutuhkan ini sekarang, tetapi perhatikan bahwa Anda dapat menghentikan budak dengan:

Mariadb [(tidak ada)]> Berhenti budak; 

Jika Tunjukkan status budak \ g; Perintah mengembalikan kesalahan apa pun. Gunakan kesalahan tersebut untuk memecahkan masalah dan kemudian jalankan Mulai budak; untuk menguji lagi.

Uji replikasi database mysql/mariadb

Mari tambahkan rekaman ke karyawan Tabel di server master:

Mariadb [(tidak ada)]> Masukkan ke karyawan (emp_no, lahir_date, first_name, last_name, jenis kelamin, hire_date) nilai (500000, '1983-07-12', 'Dave', 'null', 'm', '2014-12-12'); 

Kemudian verifikasi bahwa perubahan ini direplikasi dalam budak:

Mariadb [(tidak ada)]> Menggunakan karyawan; Mariadb [(tidak ada)]> Pilih * dari karyawan di mana emp_no = 500000; 
Periksa replikasi database mariadb mysql

Seperti yang Anda lihat, replikasi berfungsi dengan benar dari master ke budak.

Ringkasan

Dalam artikel ini kami telah menjelaskan cara menginstal versi terbaru Mariadb Centos/rhel 7 dan Debian 8/9, dan membahas cara mengatur replikasi master-slave dengan GTIDS. Untuk informasi lebih lanjut, Anda mungkin ingin merujuk ke panduan replikasi Mariadb, dan jangan ragu untuk menghubungi kami menggunakan formulir di bawah ini jika Anda memiliki pertanyaan atau komentar.