Как настроить репликацию MariaDB на Ubuntu 1804 / 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.40Node 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 updatesudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8sudo add-apt-repository 'deb [arch=amd64] http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu bionic main'sudo apt updatesudo 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 0xF1656F24C74CD1D8sudo 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.1bind-address = 192.168.18.40

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

server-id = 100
Создайте пользователя репликации базы данных
$ mysql -u root -pEnter password: Welcome to the MariaDB monitor.Commands end with ; or \g.Your MariaDB connection id is 50Server version: 10.3.9-MariaDB-1:10.3.9+maria~bionic-log mariadb.org binary distributionCopyright (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)]> exitBye

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

sudo systemctl restart mysql

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

# ss -tunelp | grep 3306tcp LISTEN0 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.41server-id = 101log_bin = /var/log/mysql/mariadb-binread_only = 1report-host = mariadb-slave1expire-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.000003Position: 344Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.000 sec)

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

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

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

$ mysql -u root -pCHANGE 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 eventMaster_Host: 192.168.18.40Master_User: mysql_replicaMaster_Port: 3306Connect_Retry: 60Master_Log_File: mariadb-bin.000003Read_Master_Log_Pos: 344Relay_Log_File: mysqld-relay-bin.000002Relay_Log_Pos: 557Relay_Master_Log_File: mariadb-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 344Relay_Log_Space: 867Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 100Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: NoGtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: conservativeSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update itSlave_DDL_Groups: 0Slave_Non_Transactional_Groups: 0Slave_Transactional_Groups: 01 row in set (0.001 sec)

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

Slave_IO_Running: YesSlave_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)

Отправить комментарий

0 Комментарии