Как настроить репликацию MySQL Master-Slave в CentOS 7

Как настроить репликацию MySQL Master-Slave в CentOS 7

4 Января 2020 | CentOS

В этом руководстве мы расскажем, как настроить репликацию MySQL Master / Slave с одним главным и одним подчиненным сервером в CentOS 7. Те же шаги применимы к MariaDB.

Как настроить репликацию MySQL Master-Slave в CentOS 7

Репликация MySQL - это процесс, который позволяет автоматически копировать данные с одного сервера базы данных на один или несколько серверов.

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

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

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

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

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

Установите MySQL 

По умолчанию репозитории CentOS 7 не содержат пакетов MySQL, поэтому мы установим MySQL из их официального репозитория Yum. Чтобы избежать каких-либо проблем, мы установим одну и ту же версию MySQL 5.7 на оба сервера.

Установите MySQL на главный и подчиненный серверы:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server


После завершения установки запустите службу MySQL и включите ее автоматический запуск при загрузке с помощью:

sudo systemctl enable mysqldsudo systemctl start mysqld


Когда сервер MySQL запускается в первый раз, для корневого пользователя MySQL генерируется временный пароль. Чтобы найти пароль, используйте следующую команду grep :

sudo grep 'temporary password' /var/log/mysqld.log


Запустите mysql_secure_installation команду, чтобы установить новый пароль root и повысить безопасность экземпляра MySQL:

mysql_secure_installation


Введите временный пароль root и ответьте (да) на все вопросы.

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


Настройте главный сервер

Сначала мы настроим главный сервер MySQL и внесем следующие изменения:


Для этого откройте файл конфигурации MySQL и добавьте в [mysqld] раздел следующие строки :

sudo nano /etc/my.cnf
Master: /etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

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

sudo systemctl restart mysqld


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

mysql -uroot -p


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

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';

Убедитесь, что вы изменили IP-адрес с вашего ведомого IP-адреса. Вы можете назвать пользователя, как вы хотите.

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

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


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


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

Как и в случае с главным сервером, мы внесем следующие изменения в подчиненный сервер:

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

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

sudo nano /etc/my.cnf
Slave: /etc/my.cnf

bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

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

sudo systemctl restart mysqld


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

mysql -uroot -p


Сначала остановите подчиненные устройства:

STOP SLAVE;


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

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;


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

После этого запустите подчиненные устройства.

START SLAVE;


Проверьте конфигурацию 

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

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

mysql -uroot -p
CREATE DATABASE replicatest;


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

mysql -uroot -p


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

SHOW DATABASES;


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

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


Вывод 

В этом руководстве мы показали, как создать репликацию MySQL Master / Slave в CentOS 7.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...