Bu kılavuzda size Ubuntu ve Debian sunucusunda MariaDB Master-Slave replikasyonunun nasıl yapılandırılacağını göstereceğim. MariaDB, geliştirilmesinin, güvenliğinin ve iyileştirmelerinin arkasında büyük bir topluluğa sahip olan, MySQL ilişkisel veritabanı yönetim sisteminin topluluk tarafından geliştirilmiş bir çatalıdır.
MariaDB çoğaltma işlemi, MySQL verilerinin birden çok kopyasını saklamanıza olanak tanır. Ana sunucudaki tüm veriler, otomatik bir süreçte Yardımcı sunucularla senkronize edilir ve bir felaketle karşılaşırsanız, taahhüt işlemleri için Slave’i kolayca Master’a yükseltebilirsiniz. Çoğaltmanın ana rolü, kolay ölçeklenebilirlik için okuma ve yazma iş yüklerini birden fazla sunucuya yaymaktır.
Adım 1: MariaDB’yi Ubuntu / Debian’a yükleyin
MariaDB Master-Slave çoğaltmasını ayarlamak için kullanılacak iki düğümüm var. İlk düğüm Ana düğüm, ikincisi ise Slave düğüm olarak görev yapacak.
Node 1: 192.168.18.40
Node 2: 192.168.18.41
MariaDB’yi Ubuntu / Debian’a yükleyin
Ubuntu / Debian sunucusuna MariaDB sunucusunun kurulması için aşağıdaki komutları kullanın. Aşağıdaki komutları kullanarak repository’yi ekleyin.
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s --
Daha sonra gerekli paketleri kurun:
sudo apt update
sudo apt install mariadb-server mariadb-client
İstendiğinde root şifresini ayarlayın
$ sudo mariadb-secure-installation
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Veritabanı konsoluna erişmek için parolayı doğrulamak amacıyla test yapılması gerekir.
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Adım 2: MariaDB Master Sunucusunu Yapılandırın
MariaDB her iki sunucuya da kurulduğunda, ssh aracılığıyla Düğüm 1’de (Ana düğüm) oturum açın ve Dinleme adresini sunucunun gerçek IP adresiyle değiştirin. /etc/mysql/my.cnf dosyasını düzenleyin ve aşağıdaki satırı mysqld bölümünün altına ekleyin.
#bind-address = 127.0.0.1
bind-address = 192.168.18.40
Ana sunucunun benzersiz tanımlayıcısı olacak sunucu kimliğini ayarlayın.
server-id = 100
Veritabanı replika kullanıcısı oluşturma
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 50
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> grant replication slave on *.* to mysql_replica@'%' identified by 'StrongPassword';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> exit
Bye
Değişikliklerin etkili olması için MariaDB sunucusunu yeniden başlatın.
sudo systemctl restart mysql
Ss veya netstat komutunu kullanarak durumu kontrol edin.
# ss -tunelp | grep 3306
tcp LISTEN 0 70 192.168.18.40:3306 0.0.0.0:* users:(("mysqld",pid=16877,fd=22)) uid:111 ino:48116 sk:4 <->
Çalışan bir güvenlik duvarınız varsa 3306 numaralı bağlantı noktasını açın.
sudo ufw allow 3306
3. Adım: MariaDB Slave Sunucusunu Yapılandırın
Slave sunucuya/sunuculara giriş yapın ve MariaDB’yi yapılandırın:
sudo vim /etc/mysql/my.cnf
[mysqld] bölümü altında aşağıdaki değerleri ayarlayın.
[mysqld]
bind-address = 192.168.18.41
server-id = 101
log_bin = /var/log/mysql/mariadb-bin
read_only = 1
report-host = mariadb-slave1
expire-logs-days = 7
read_only = 1: Bu, köleyi salt okunur moda ayarlar. Yalnızca SUPER ayrıcalığına ve çoğaltma yardımcı iş parçacığına sahip kullanıcılar, buradaki verileri değiştirebilir. Bu, ana cihaz yerine ikincil cihazdaki verileri yanlışlıkla değiştirebilecek hiçbir uygulamanın bulunmamasını sağlar.
server-id = 101: Bu, Benzersiz bir sunucu kimlik numarasıdır. “Ana-ana bilgisayar” ayarlanmamışsa varsayılan olarak 1 olacaktır.
log_bin = /var/log/mysql/mariadb-bin: Bu, ikili günlüğe kaydetmeyi etkinleştirir. Bu, çoğaltma yapılandırmasında MASTER olarak görev yapmak için gereklidir. En son yedeklemenizden belirli bir noktaya kurtarma yapma olanağına ihtiyacınız varsa ikili günlüğe de ihtiyacınız vardır.
Değişiklikten sonra mariadb’yi yeniden başlatın.
sudo systemctl restart mysql
4. Adım: Çoğaltma işlemini başlatın
Slave sunucuda Replikasyon işlemini başlatmaya hazır olmalıyız. Ana cihazdaki Durumu kontrol ederek başlayın:
MariaDB [(none)]> show master status\G
*************************** 1. row ***************************
File: mariadb-bin.000003
Position: 344
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.000 sec)
Mevcut Ana günlük dosyasını ve konumunu not edin. Daha sonra Slave sunucusunu ana durum komutundan elde edilen ayrıntılarla yapılandırın.
MariaDB Slave sunucusunda root kullanıcı olarak oturum açın ve Master sunucuya bağlantıyı yapılandırın
$ mysql -u root -p
CHANGE MASTER TO MASTER_HOST='192.168.18.40',
MASTER_USER='mysql_replica',
MASTER_PASSWORD='StrongPassword',
MASTER_LOG_FILE='mariadb-bin.000003',
MASTER_LOG_POS=344;
Ardından köle üzerinde çoğaltmayı başlatın:
mysql> start slave;
Query OK, 0 rows affected (0.002 sec)
Slave durumunu kontrol etmek için şunu kullanın:
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.18.40
Master_User: mysql_replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000003
Read_Master_Log_Pos: 344
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 557
Relay_Master_Log_File: mariadb-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 344
Relay_Log_Space: 867
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 100
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
1 row in set (0.001 sec)
Slave IO ve SQL çalışma durumunu belirtmelidir:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Master sunucudaki işlem listesinin kontrol edilmesi aynı zamanda bağımlı sunuculardan gelen bağlantıları da görüntülemelidir.
MariaDB [(none)]> select ID,user,host,db,command,time,state from information_schema.processlist order by time desc limit 5;
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
| ID | user | host | db | command | time | state |
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
| 38 | mysql_replica | 192.168.18.41:51522 | NULL | Binlog Dump | 988 | Master has sent all binlog to slave; waiting for binlog to be up |
| 2 | system user | | NULL | Daemon | 0 | InnoDB purge worker |
| 5 | system user | | NULL | Daemon | 0 | InnoDB shutdown handler |
| 1 | system user | | NULL | Daemon | 0 | InnoDB purge coordinator |
| 4 | system user | | NULL | Daemon | 0 | InnoDB purge worker |
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
5 rows in set (0.000 sec)
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.