Как настроить реплику базы данных MySQL (MariaDB) в Debian 10

12 set 2022 3 min di lettura
Как настроить реплику базы данных MySQL (MariaDB) в Debian 10
Indice dei contenuti

Введение

Репликация MySQL — это процесс копирования данных с сервера базы данных (главного) на один или несколько серверов (подчиненных).

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

В этом руководстве мы покажем вам, как настроить репликацию MariaDB Master/Slave с одним главным и одним подчиненным сервером в Debian 10. MariaDB — это реализация MySQL по умолчанию в Debian. То же самое касается Oracle MySQL.

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

Предпосылки

Допустим, у вас есть два сервера под управлением Debian 10, которые обмениваются данными друг с другом через частную сеть. Если ваш хостинг-провайдер не поддерживает частные IP-адреса, вы можете использовать общедоступные IP-адреса и настроить брандмауэр, чтобы разрешить трафик на порт 3306 только из надежных источников.

Серверы, используемые в этом примере, имеют следующие IP-адреса:

Master IP: 192.168.333.333
Slave IP: 192.168.444.444

Установить MariaDB

Репозиторий Debian 10 по умолчанию включает MariaDB. Лучше всего установить одну и ту же версию MariaDB на оба сервера, чтобы избежать возможных проблем.

Установите MariaDB на Master, выполнив следующие команды:

sudo apt-get update
sudo apt-get install mariadb-server

Установите MariaDB на Slave -сервер (сервер, на котором находится вторая база данных) с помощью тех же команд:

sudo apt-get update
sudo apt-get install mariadb-server

Настроить основной сервер

Первым шагом является настройка основного сервера. Мы внесем следующие изменения:

Откройте файл конфигурации MariaDB и раскомментируйте или установите следующие строки:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 192.168.333.333
 server-id = 1
 log_bin = /var/log/mysql/mysql-bin.log

После этого сохраните файл и перезапустите службу MySQL, чтобы изменения вступили в силу:

sudo systemctl restart mariadb

Следующим шагом является создание нового пользователя репликации. Войдите на сервер MariaDB как root:

sudo mysql

Или, если вы установили пароль для пользователя root, используйте следующую команду для входа на сервер MySQL:

sudo mysql -u root -p

Выполните следующие SQL-запросы, чтобы создать replica пользователя с именем и предоставить пользователю привилегию REPLICATION SLAVE:

CREATE USER 'replica'@'192.168.444.444' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.444.444';
Убедитесь, что вы изменили IP-адрес на подчиненный IP-адрес. Вы можете назвать пользователя как хотите.

Находясь в командной строке MySQL, выполните следующую команду, которая напечатает имя и местоположение двоичного файла.

SHOW MASTER STATUS\G
*************************** 1. row ***************************
 File: mysql-bin.000001
 Position: 679
 Binlog_Do_DB:
 Binlog_Ignore_DB:
 1 row in set (0.000 sec)

Запишите имя файла «mysql-bin.000001» и местоположение « 679 ». Эти значения требуются при настройке подчиненного сервера и, скорее всего, на вашем сервере они будут другими.

Настроить подчиненный сервер

Мы сделаем те же настройки, что и на главном сервере, на подчиненном сервере:

  • Настройте сервер MySQL для прослушивания частного IP-адреса.
  • Установите уникальный идентификатор сервера.
  • Включите двоичное ведение журнала.

Откройте файл конфигурации MariaDB и отредактируйте следующие строки:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 192.168.444.444
 server-id = 2
 log_bin = /var/log/mysql/mysql-bin.log

Перезапустите службу MariaDB:

sudo systemctl restart mariadb

Следующим шагом является настройка параметров, которые подчиненный сервер будет использовать для подключения к главному серверу. Войдите в оболочку MariaDB:

sudo mysql

Или, если вы установили пароль для пользователя root, используйте следующую команду для входа на сервер MySQL:

sudo mysql -u root -p

Начните с остановки подчиненных потоков:

STOP SLAVE;

Запустите следующий запрос, чтобы настроить репликацию master/slave:

CHANGE MASTER TO
 MASTER_HOST='192.168.333.333',
 MASTER_USER='replica',
 MASTER_PASSWORD='replica_password',
 MASTER_LOG_FILE='mysql-bin.000001',
 MASTER_LOG_POS=679;

Убедитесь, что вы используете правильный IP-адрес, имя пользователя и пароль. Имя и расположение файла журнала должны совпадать со значениями, полученными с основного сервера.

Когда закончите, запустите подчиненные потоки.

START SLAVE;

Проверьте настройку

На этом этапе у вас должна быть работающая конфигурация репликации Master/Slave.

Чтобы убедиться, что все настроено правильно, создайте новую базу данных на основном сервере:

sudo mysql
CREATE DATABASE replicatest;

Войдите в подчиненную оболочку MySQL:

sudo mysql

Выполните следующую команду, чтобы получить список всех баз данных:

SHOW DATABASES;

Вы заметите, что база данных, которую вы создали на основном сервере, реплицируется на ведомом:

+--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | performance_schema |
 | replicatest |
 | sys |
 +--------------------+
 5 rows in set (0.00 sec)

Вывод

В этом руководстве мы показали вам, как создать реплику Master-Slave MariaDB в Debian 10.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.