Ubuntu / Debian’da MariaDB Replika Yapılandırması

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.
Skip to content