Поиск по сайту:
Писатель скорее призван знать, чем судить (С. Моэм).

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

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

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

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

В этой статье рассматривается базовый пример репликации Master/Slave в MySQL с одним главным и одним подчиненным сервером в Ubuntu 18.04. Те же самые шаги применяются для MariaDB.

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

 

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

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

Master IP: 192.168.121.125
Slave IP:  192.168.121.122

Стандартные репозитории Ubuntu 18.04 включают MySQL версии 5.7. Чтобы избежать каких-либо проблем, лучше установить одну и ту же версию MySQL на обоих серверах.

Установите MySQL на Мастер-сервер:

sudo apt-get update
sudo apt-get install mysql-server

 

Установите MySQL на подчиненный сервер, используя те же команды:

sudo apt-get update
sudo apt-get install mysql-server

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

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

Для этого откройте файл конфигурации MySQL и раскомментируйте или установите следующее:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
master:/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address           = 192.168.121.190
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

 

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

sudo systemctl restart mysql

 

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

sudo mysql

 

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

CREATE USER 'replica'@'192.168.121.122' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.122';

 

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

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

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

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

 

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

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

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

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
master:/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address           = 192.168.121.190
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

 

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

sudo systemctl restart mysql

 

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

sudo mysql

 

Сначала остановите подчиненные темы:

STOP SLAVE;

 

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

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

 

Убедитесь, что вы используете правильный 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 в MySQL.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
medusa01

Спасибо. очень полезная статья и без воды. (и так видно, что человек знающий)

Читайте также

Спасибо!

Теперь редакторы в курсе.