CentOS/RHEL 7 ve Debian 8/9'da MariaDB (Master-Slave) Çoğaltma Nasıl Kurulur


Bazı BT çalışanları "Veritabanı çoğaltma" ifadesini duyduklarında bile bunu genellikle donanım arızası veya veri bozulması durumunda veri kaybını önlemek için aynı bilginin birden fazla kopyasına sahip olma ihtiyacıyla ilişkilendirirler. Bu bir dereceye kadar doğru olsa da, veritabanı çoğaltmada, bir veritabanını yedekleme ve veri kullanılabilirliği gibi genel konseptten çok daha fazlası vardır.

Master-slave kurulumunda veritabanı çoğaltmasının diğer yararları arasında şunları sayabiliriz:

  1. Yedeklemeler, ana sunucudaki yazma işlemlerini etkilemeden (ve bunlardan etkilenmeden) ikincil sunucuda yapılabilir.
  2. Kaynak yoğun işlemler (veri analizi gibi), ana sunucunun performansını etkilemeden ikincil sunucu üzerinde gerçekleştirilebilir.

Bu makalede MariaDB 10.1'de master-slave replikasyonunun nasıl kurulacağını açıklayacağız. MariaDB, klasik kopyalamanın aksine, v10.0'da bir köleyi değiştirmeye olanak tanıyan Küresel İşlem Kimlikleri (GTID'ler) kavramını tanıttı. Farklı bir ana bilgisayara kolayca bağlanın ve kopyalama yapın. Bunun da ötesinde, kölenin durumu çökmeye karşı güvenli bir şekilde kaydedilir (durum güncellemeleri, veri güncellemeleriyle aynı işlemde yapılır).

CentOS/RHEL 6 altında MySQL çoğaltmasını arıyorsanız CentOS/RHEL 6'da MySQL (Master-Slave) Çoğaltma Kurulumu bu kılavuzu izleyin

MariaDB 10.1'in CentOS/RHEL 7 ve Debian 8/9'a kurulması

Test ortamımız aşağıdaki makinelerden oluşur (her ikisi de CentOS 7'dir):

Master: 192.168.0.18
Slave: 192.168.0.19

MariaDB'nin en son sürümünü yüklemek için depolarını sunucularımıza eklememiz gerekecek. MariaDB'nin 5.5 gibi eski bir sürümünü kullanıyorsanız aşağıdaki makaleyi kullanarak en son 10.1 sürümüne yükseltmeyi düşünün.

  1. MariaDB 5.5'i MariaDB 10.1'e yükseltme

CentOS/RHEL'de

Hem Master hem de Slave<'de aşağıdaki içerikleri içeren /etc/yum.repos.d içinde MariaDB.repo adlı bir dosya oluşturun. sistemler:

MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Dosyayı kaydedin ve yum kullanarak MariaDB'yi her iki sunucuya da yükleyin:

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

Debian/Ubuntu'da

Paketleri ve MariaDB deposunu doğrulamak için anahtarı ekleyin:

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 main'

Not: Yukarıda vurgulanan satırdaki dağıtım adını ve kod adını değiştirin.

apt-get komutunu kullanarak yükleyin:

apt-get update
apt-get install mariadb-server

MariaDB kurulumunu yaptıktan sonra hem master hem deslave üzerinde mysql_secure_installation prosedürünü çalıştırın, master makinede örnek bir test veritabanı kuralım.

Master Üzerinde Örnek MySQL Veritabanı Kurulumu

Şimdi ana sunucuda https://github.com/datacharmer/test_db adresinden Employees veritabanını kuracağız (bu, 4 veri kümesi sağlar) iki basit adımda altı tabloya yayılmış güçlü> milyon kayıt:

Depoyu klonlayın ve örnek veritabanını MariaDB kurulumunuza aktarmak için kullanın:

git clone https://github.com/datacharmer/test_db
cd test_db
mysql < employees.sql

Master'da MySQL Sunucusunu Yapılandırma

Master'ı yapılandırmak için şu adımları izleyin:

1. ADIM: /etc/my.cnf dosyasını düzenleyin. [mysqld] bölümünün altına aşağıdaki dört satırı ekleyin:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

ve MariaDB'yi yeniden başlatın:

systemctl restart mariadb

2. ADIM: MariaDB sunucusunda root olarak oturum açın, kullanıcı kölesini oluşturun ve gerekli yetkileri atayın:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

last komutu (SHOW MASTER STATUS) ikili günlükteki geçerli konumu döndürür (bağımlı birimin kopyalamaya tam olarak hangi noktadan başlaması gerektiğini belirten tam koordinatlar:

3. ADIM: MariaDB isteminden çıkın (exit; ile) ve çalışanların veritabanının anlık görüntüsünü almak için aşağıdaki komutu kullanın. Enter tuşuna bastığınızda, daha önce mysql_secure_installation yoluyla ayarladığınız root şifresini yazmanız istenecektir:

mysqldump -u root -p employees > employees-dump.sql

Döküm tamamlandıktan sonra tabloların kilidini açmak için veritabanı sunucusuna tekrar bağlanın ve ardından çıkın:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

4. ADIM: Dökümü ikincil öğeye kopyalayın:

scp employees-dump.sql [email :/root/ 

5. ADIM: Sistem tablolarını yükseltmek için mysql_upgrade prosedürünü çalıştırın (MariaDB kök şifresini girmeniz istenecektir):

mysql_upgrade -u root -p

ADIM 6: Veritabanı hizmetinin güvenlik duvarı üzerinden kullanılmasına izin verin:

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

Şimdi köleyi yapılandıralım.

MySQL Sunucusunu Slave'de Yapılandırma

Slave'i yapılandırmak için şu adımları izleyin:

1. ADIM: Çoğaltma görevlerini gerçekleştirmek için hesabı oluşturun. Yerel MariaDB sunucusuna şununla bağlanın:

mysql -u root –p

ve daha önce oluşturduğunuz şifreyi girin.

2. ADIM: Veritabanı sunucusuna bağlandıktan sonra kullanıcıyı ve boş bir veritabanını oluşturun ve izinleri verin:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

3. ADIM: MariaDB isteminden çıkın ve ana sunucuda oluşturulan dökümü yükleyin:

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

ADIM 4: [mysqld]< altındaki ikincil sunucuya bir sunucu ID atamak için /etc/my.cnf dosyasını düzenleyin. bölümü. Ana metinde 1 kullandığımız için bunun 1'den farklı bir tamsayı olması gerektiğini unutmayın:

server_id=2
replicate-do-db=employees

Veritabanı sunucusunu yeniden başlatın:

systemctl restart mariadb

5. ADIM: Sistem tablolarını yükseltmek için mysql_upgrade prosedürünü çalıştırın (MariaDB kök şifresini girmeniz istenecektir):

mysql_upgrade -u root -p

6. ADIM: Döküm, ikincil sunucuya aktarıldıktan sonra çoğaltmaya başlamak için yalnızca birkaç adımımız kaldı. Veritabanında oturum açın ve MariaDB isteminde aşağıdaki komutları çalıştırın. "Master_LOG_FILE ve MASTER_LOG_POS değişkenlerine özellikle dikkat edin; bu değişkenler, "Ana birimi yapılandırma"nın 2. ADIMI'ndaki SHOW MASTER STATUS tarafından döndürülen değerlerle eşleşmelidir. üstünde.

MariaDB [(none)]> CHANGE MASTER TO
  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;

ADIM 7: İkincil öğeyi başlatın ve MariaDB isteminden çıkmadan durumunu kontrol edin:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

Şu anda buna ihtiyacınız yok ama köleyi şununla durdurabileceğinizi unutmayın:

MariaDB [(none)]> STOP SLAVE;

SHOW SLAVE STATUS\G; komutu herhangi bir hata döndürürse. Sorunu gidermek için bu hataları kullanın ve ardından tekrar test etmek için START SLAVE; komutunu çalıştırın.

MySQL/MariaDB Veritabanı Çoğaltmasını Test Edin

Ana sunucudaki çalışanlar tablosuna bir kayıt ekleyelim:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Ardından bu değişikliğin ikincil cihazda kopyalandığını doğrulayın:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

Gördüğünüz gibi çoğaltma, yöneticiden bağımlıya doğru şekilde çalışıyor.

Özet

Bu makalede MariaDB'nin en son sürümünün CentOS/RHEL 7 ve Debian 8/9'a nasıl kurulacağını anlattık ve GTID'lerle master-slave replikasyonunun nasıl kurulacağını tartıştık. Daha fazla bilgi için MariaDB Çoğaltma Kılavuzuna başvurmak isteyebilirsiniz ve sorularınız veya yorumlarınız varsa aşağıdaki formu kullanarak bizimle iletişime geçmekten çekinmeyin.