Как настроить репликацию MariaDB на Ubuntu 18.04 / Debian 9 |

Как настроить репликацию MariaDB на Ubuntu 18.04 / Debian 9

Мануал

В этом руководстве я покажу вам, как настроить репликацию Master-Slave MariaDB на сервере Ubuntu 18.04 и Debian 9.

MariaDB – это разработанная сообществом форк системы управления реляционными базами данных MySQL, которая имеет огромное сообщество, стоящее за ее развитием, безопасностью и улучшениями.

Процесс репликации MariaDB позволяет вам поддерживать несколько копий данных MySQL.

Все данные в мастере синхронизируются с подчиненными серверами в автоматизированном процессе, и если у вас есть сбой, вы можете легко продвигать Slave на Master для операций фиксации.

Основная роль репликации заключается в распространении рабочих нагрузок на чтение и запись на нескольких серверах для обеспечения простой масштабируемости.

Шаг 1: установите MariaDB на Ubuntu 18.04 / Debian 9

У меня есть два узла, которые будут использоваться для настройки репликации Master-Slave MariaDB.

Первый узел будет действовать как главный узел, а второй – подчиненный.

Node 1: 192.168.18.40
Node 2: 192.168.18.41

Версия MariaDB, используемая в этой демонстрации, v10.3.

Вы можете заменить 10.3 на версию MariaDB, которую вы собираетесь установить.

Установите MariaDB 10.3 на Ubuntu 18.04

Используйте приведенные ниже команды, чтобы установить MariaDB 10.3 на сервер Ubuntu 18.04.

sudo apt update
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu bionic main'
sudo apt update
sudo apt install mariadb-server mariadb-client

Установите MariaDB 10.3 на Debian 9

Добавьте репозиторий MariaDB 10.3 и установите пакет mariadb-server.

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.zol.co.zw/mariadb/repo/10.3/debian stretch main'
sudo apt-get update && sudo apt-get install mariadb-server

При необходимости введите пароль root

While not mandatory, it is highly recommended that you set a password for 
the MariaDB administrative "root" user.

If this field is left blank, the password will not be changed.

New password for the MariaDB "root" user:
Repeat password for the MariaDB "root" user:

Шаг 2: Настройте главный сервер MariaDB

После того, как MariaDB установлен на обоих серверах, войдите в Node 1 (главный узел) через ssh и измените адрес прослушивания на фактический IP-адрес сервера.

Отредактируйте файл /etc/mysql/my.cnf и добавьте следующую строку в раздел mysqld.

#bind-address            = 127.0.0.1
bind-address             = 192.168.18.40

Установите идентификатор сервера, который будет уникальным идентификатором главного сервера.

server-id = 100

Создайте пользователя репликации базы данных

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.3.9-MariaDB-1:10.3.9+maria~bionic-log 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.

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

Перезапустите сервер MariaDB, чтобы изменения вступили в силу.

sudo systemctl restart mysql

Проверьте статус с помощью команды ss или netstat.

# 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 <->

Если вы используете брандмауэр, откройте порт 3306

sudo ufw allow 3306

Шаг 3: Настройте второй сервер MariaDB

Войдите в подчиненный сервер и настройте MariaDB:

$ sudo vim /etc/mysql/my.cnf

Установите значения ниже в разделе [mysqld].

[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: устанавливает подчиненный режим только для чтения.

server-id = 101: Это уникальный идентификационный сервера. По умолчанию он будет равен 1, если «master-host» не установлен.

log_bin=/var/log/mysql/mariadb-bin: Это позволяет вести двоичный журнал.

Перезапустите mariadb после изменения настроек.

sudo systemctl restart mysql

Шаг 4: Инициализация процесса репликации

Мы должны быть готовы начать процесс репликации на подчиненном сервере.

Начните с проверки состояния на ведущем устройстве:

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)

Обратите внимание на текущий файл и положение основного журнала.

Затем настройте ведомый сервер с данными, полученными из команды главного состояния.

Войдите в подчиненный сервер MariaDB как пользователь root и настройте подключение к главному серверу

$ 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;

Затем запустите репликацию на подчиненном устройстве:

mysql> start slave;
Query OK, 0 rows affected (0.002 sec)

Чтобы проверить статус ведомого, используйте:

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)

Ведомый IO и SQL должен указывать на текущее состояние:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Проверка списка процессов на ведущем устройстве также должна отображать соединения с подчиненными серверами.

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)

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий