Android

Как настроить мастер MySQL

O'Reilly Webcast: MySQL Replication - Audit, Test & Verify

O'Reilly Webcast: MySQL Replication - Audit, Test & Verify

Оглавление:

Anonim

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

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

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

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

Предпосылки

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

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

Master IP: 192.168.121.190 Slave IP: 192.168.121.236

Установите MySQL

Стандартные репозитории 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 мастер: /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.236' IDENTIFIED BY 'replica_password';

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.236'; Убедитесь, что вы изменили 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» и «Позиция 629». Эти значения понадобятся вам при настройке подчиненного сервера. Эти значения, вероятно, будут отличаться на вашем сервере.

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

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

  • Настройте сервер MySQL для прослушивания на частном IPSet ID уникального сервера. Включите двоичное ведение журнала.

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

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf рабыня: /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 192.168.121.236 server-id = 2 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.190', 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)

Вывод

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

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

Убунту MySQL Мариадб