MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Mengatur Replikasi MariaDB (Master-Slave) di CentOS/RHEL 7 dan Debian 8/9

Bahkan ketika beberapa orang IT mendengar ungkapan “Replikasi database “, mereka sering mengaitkannya dengan kebutuhan memiliki banyak salinan dari informasi yang sama untuk menghindari kehilangan data jika terjadi kegagalan perangkat keras atau kerusakan data. Meskipun hal itu benar dalam beberapa hal, replikasi database lebih dari sekadar konsep umum untuk mencadangkan database dan ketersediaan data.

Di antara manfaat lain dari replikasi basis data dalam pengaturan master-slave yang dapat kami sebutkan:

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

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

Jika Anda mencari MySQL replikasi di bawah CentOS/RHEL 6 , ikuti panduan ini Setup Replikasi MySQL (Master-Slave) di 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 ):

Tuan:192.168.0.18Budak:192.168.0.19

Untuk menginstal versi terbaru MariaDB, kita perlu menambahkan repositori mereka ke server kita. Jika Anda menggunakan versi lama MariaDB katakanlah 5.5, pertimbangkan untuk memutakhirkan ke versi 10.1 terbaru menggunakan artikel di bawah ini.

  1. Tingkatkan MariaDB 5.5 ke MariaDB 10.1

Dalam CentOS/RHEL

Buat file bernama MariaDB.repo di dalam /etc/yum.repos.d dengan konten berikut di kedua Master dan Budak sistem:

# Daftar repositori MariaDB 10.1 CentOS - dibuat 23-01-2016 14:16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

Simpan file dan instal MariaDB di kedua server menggunakan yum:

# yum update &&yum install MariaDB-server MariaDB-client

Di Debian/Ubuntu

Tambahkan kunci untuk mengotentikasi paket dan repositori MariaDB:

# apt-get install software-properties-common# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db# add-apt-repository 'deb [arch=amd64,i386] http:/ /mirror.edatel.net.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 perintah:

# apt-get update# apt-get install mariadb-server

Setelah Anda menginstal MariaDB, jalankan mysql_secure_installation prosedur pada master dan slave, mari siapkan database pengujian sampel di mesin master.

Menyiapkan Contoh Database MySQL di Master

Kami sekarang akan mengatur di server master Employees basis data dari https://github.com/datacharmer/test_db (yang menyediakan kumpulan data 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  

Mengonfigurasi Server MySQL di Master

Untuk mengonfigurasi master, ikuti langkah-langkah berikut:

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

log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18

dan mulai ulang MariaDB:

# systemctl restart mariadb

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

MariaDB [(none)]> BUAT PENGGUNA 'slave'@'localhost' DIIDENTIFIKASI DENGAN 'SlavePassword';MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* ATAS slave DIIDENTIFIKASI OLEH 'SlavePassword' WITH GRANT OPTION;MariaDB [(none)]> HAK ISTIMEWA FLUSH;MariaDB [(none)]> FLUSH TABLES DENGAN READ LOCK;MariaDB [(none)]> TUNJUKKAN STATUS MASTER;

terakhir perintah (TAMPILKAN STATUS MASTER ) mengembalikan posisi saat ini dalam log biner (koordinat tepat yang menunjukkan pada titik mana slave harus mulai mereplikasi dari:

LANGKAH 3: Keluar dari perintah MariaDB (dengan exit; ) dan gunakan perintah berikut untuk mengambil snapshot dari database karyawan. Saat Anda menekan Enter , Anda akan diminta untuk mengetikkan kata sandi untuk root yang Anda atur sebelumnya melalui 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 [(none)]> BUKA TABEL;MariaDB [(none)]> keluar;

LANGKAH 4: Salin dump ke slave:

# scp employee-dump.sql [email protected]:/root/ 

LANGKAH 5: Jalankan mysql_upgrade prosedur untuk memutakhirkan tabel sistem (Anda akan diminta 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 slave.

Mengonfigurasi Server MySQL pada Slave

Untuk mengkonfigurasi budak, ikuti langkah-langkah berikut:

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

# mysql -u root –p

dan masukkan kata sandi yang Anda buat sebelumnya.

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

MariaDB [(none)]> BUAT karyawan DATABASE;MariaDB [(none)]> BERIKAN SEMUA HAK ISTIMEWA PADA karyawan.* KEPADA 'slave'@'localhost' DENGAN GRANT OPTION;MariaDB [(none)]> HAK ISTIMEWA;

LANGKAH 3: Keluar dari perintah MariaDB dan muat dump yang dibuat di server master:

# mysql -u root -p karyawan  

LANGKAH 4: Edit /etc/my.cnf file untuk menetapkan ID server ke budak di bawah [mysqld] bagian. Perhatikan bahwa itu harus berupa bilangan bulat yang berbeda dari 1 , seperti yang kami gunakan 1 di master:

server_id=2replicate-do-db=karyawan

Mulai ulang server basis data:

# systemctl restart mariadb

LANGKAH 5: Jalankan mysql_upgrade prosedur untuk memutakhirkan tabel sistem (Anda akan diminta memasukkan kata sandi root MariaDB):

# mysql_upgrade -u root -p

LANGKAH 6: Setelah dump telah diimpor ke slave, kita tinggal beberapa langkah lagi untuk mulai mereplikasi. Masuk ke database dan jalankan perintah berikut di prompt MariaDB. Berikan perhatian khusus pada MASTER_LOG_FILE dan MASTER_LOG_POS variabel, yang harus cocok dengan nilai yang dikembalikan oleh SHOW MASTER STATUS di LANGKAH 2 dari “Mengonfigurasi master” di atas.

MariaDB [(none)]> GANTI MASTER KE 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_GT; 

LANGKAH 7: Mulai slave dan periksa statusnya tanpa keluar dari perintah MariaDB:

MariaDB [(none)]> MULAI BUDAK;MariaDB [(none)]> TAMPILKAN STATUS BUDAK\G;

Bukan berarti Anda membutuhkan ini sekarang, tetapi perhatikan bahwa Anda dapat menghentikan slave dengan:

MariaDB [(none)]> HENTIKAN BUDAK;

jika SHOW SLAVE STATUS\G; perintah mengembalikan kesalahan apa pun. Gunakan kesalahan tersebut untuk memecahkan masalah dan kemudian jalankan START SLAVE; untuk menguji lagi.

Uji Replikasi Database MySQL/MariaDB

Mari tambahkan rekor ke karyawan tabel di server master:

MariaDB [(none)]> INSERT INTO karyawan (emp_no, tanggal_lahir, nama_depan, nama_belakang, jenis kelamin, tanggal_pekerjaan) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

Kemudian verifikasi bahwa perubahan ini telah direplikasi di slave:

MariaDB [(none)]> GUNAKAN karyawan;MariaDB [(none)]> PILIH * DARI karyawan WHERE emp_no=500000;

Seperti yang Anda lihat, replikasi bekerja dengan benar dari master ke slave.

Ringkasan

Pada artikel ini kami telah menjelaskan cara menginstal versi terbaru MariaDB di CentOS/RHEL 7 dan Debian 8/9, dan membahas cara menyiapkan replikasi master-slave dengan GTID. 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengumumkan Dukungan MariaDB 10.2 - ClusterControl 1.5

  2. Mempersiapkan Server MySQL atau MariaDB untuk Produksi - Bagian Kedua

  3. Operator Kumpulan SQL MariaDB

  4. Bagaimana PERIOD_DIFF() Bekerja di MariaDB

  5. Pilihan Mesin Penyimpanan:Aria