Поиск по сайту:

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


Репликация MySQL «главный-подчиненный» — это процедура, которая позволяет реплицировать или копировать файлы базы данных между одним или несколькими узлами в сети. Эта настройка обеспечивает избыточность и отказоустойчивость, так что в случае сбоя на главном узле базы данных все равно можно будет восстановить на ведомом узле. Это дает пользователям уверенность в том, что в любом случае все не будет потеряно, поскольку реплики баз данных по-прежнему можно получить с другого сервера.

В этом руководстве вы узнаете, как выполнить репликацию базы данных MySQL Master-Slave в системе Ubuntu 18.04.

Предварительные условия

При настройке у нас будет два сервера под управлением Ubuntu 18.04 со следующими IP-адресами.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Давайте теперь углубимся и посмотрим, как мы можем настроить настройку репликации Master-Slave в Ubuntu.

Шаг 1. Установите MySQL на главных и подчиненных узлах

Репозитории Ubuntu содержат версию 5.7 MySQL. Чтобы воспользоваться преимуществами новых функций и избежать потенциальных проблем, вам следует установить последнюю версию MySQL. Но сначала давайте обновим два узла, используя следующую команду apt.

sudo apt update

Чтобы установить MySQL на обоих узлах, выполните команду.

sudo apt install mysql-server mysql-client

Затем откройте файл конфигурации mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

На главном узле прокрутите и найдите атрибут bind-address, как показано ниже.

bind-address 	 =127.0.0.1

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

bind-address  	=10.128.0.28

Затем укажите значение атрибута server-id в разделе [mysqld]. Выбранный вами номер не должен совпадать с каким-либо другим идентификатором сервера. Присвоим значение 1.

server-id	 =1

В самый конец файла конфигурации скопируйте и вставьте приведенные ниже строки.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

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

sudo systemctl restart mysql

Чтобы убедиться, что сервер MySQL работает должным образом, введите команду.

sudo systemctl status mysql

Идеальный! Сервер MySQL работает как положено!

Шаг 2. Создайте нового пользователя для репликации на главном узле.

В этом разделе мы собираемся создать пользователя репликации в главном узле. Для этого войдите на сервер MySQL, как показано.

sudo mysql -u root -p

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

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Затем выполните следующую команду.

mysql> SHOW MASTER STATUS\G

Результат должен быть похож на то, что вы можете видеть ниже.

Будьте внимательны и обратите внимание на значение mysql-bin.000002 и идентификатор позиции 1643. Эти значения будут иметь решающее значение при настройке подчиненного сервера.

Шаг 3. Настройте подчиненный сервер MySQL

Перейдите на подчиненный сервер и, как и в случае с главным сервером, откройте файл конфигурации MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Как и в случае с главным сервером, перейдите к редактированию следующих строк.

bind-address           = 10.128.0.29

Как и раньше, укажите значение атрибута server-id в разделе [mysqld]. На этот раз выберите другое значение. Давайте возьмем 2.

server-id		=2 

Снова вставьте строки ниже в самый конец файла конфигурации.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Затем перезапустите сервер MySQL на подчиненном узле.

sudo systemctl restart mysql

После этого сохраните и выйдите из текстового редактора.

Затем войдите в оболочку MySQL, как показано.

sudo mysql -u root -p

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

mysql> STOP SLAVE; 

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

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Если вы достаточно заинтересованы, вы заметите, что мы использовали значение mysql-bin.00002 и идентификатор позиции 1643, отображавшиеся ранее после создания подчиненного пользователя репликации.

Кроме того, были использованы IP-адрес главного сервера, пользователь и пароль репликации.

Позже запустите поток, который вы ранее остановили.

mysql> START SLAVE;

Шаг 4. Проверьте репликацию Master-Slave MySQL.

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

Войдите в MySQL на главном сервере.

sudo mysql -u root -p

Создадим тестовую базу данных. В данном случае мы создадим базу данных под названием replication_db.

mysql> CREATE DATABASE replication_db;

Теперь войдите в свой экземпляр MySQL на ведомом сервере.

sudo mysql -u root -p

Теперь перечислите базы данных, используя запрос.

mysql> SHOW DATABASES;

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

Заключение

В этом руководстве вы узнали, как настроить репликацию MySQL Master-Slave в Ubuntu 18.04.