На этом этапе мы настроим сервер MySQL в качестве слейва для репликации данных с мастера, настроенного на предыдущем шаге. Это включает настройку параметров слейв - сервера и установку соединения с мастером.
-
Настройка слейв - сервера:
Сначала нам нужно настроить слейв - сервер с уникальным server_id
и включить реплицирующую журналировку (relay logging). Реплицирующие логи используются слейв - сервером для хранения событий бинарного журнала, полученных от мастера, перед их применением к своей собственной базе данных.
Отредактируйте файл конфигурации MySQL на слейв - сервере (обычно он находится по пути /etc/mysql/mysql.conf.d/mysqld.cnf
):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Добавьте или измените следующие строки в разделе [mysqld]
:
server_id = 2
relay_log = mysql-relay-bin
server_id = 2
: Это устанавливает уникальный идентификатор для слейв - сервера. Он должен отличаться от server_id
мастера.
relay_log = mysql-relay-bin
: Это включает реплицирующую журналировку и устанавливает базовое имя для файлов реплицирующего журнала.
Раздел mysqld
вашего файла конфигурации должен теперь выглядеть примерно так:
[mysqld]
#
## * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
server_id = 2
relay_log = mysql-relay-bin
## ... other configurations ...
Нажмите Ctrl+X
, затем Y
, а затем Enter
, чтобы сохранить изменения и выйти из nano
.
-
Перезапуск сервера MySQL на слейве:
Перезапустите сервер MySQL, чтобы применить изменения:
sudo /etc/init.d/mysql restart
Вы должны увидеть вывод, похожий на следующий:
[ ok ] Restarting mysql (via systemctl): mysql.service.
-
Создание пользователя для репликации на мастере:
На мастере войдите в сервер MySQL как пользователь root:
sudo mysql -u root
Создайте специального пользователя для репликации. Замените 'slave_user'
на желаемое имя пользователя и 'password'
на надежный пароль. Также замените '%'
на IP - адрес вашего слейв - сервера для большей безопасности. Если вы не знаете IP - адрес слейв - сервера, вы можете использовать '%'
, чтобы разрешить подключения с любого хоста (не рекомендуется для производственных окружений).
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';
FLUSH PRIVILEGES;
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'password'
: Создает нового пользователя MySQL с именем slave_user
, который может подключаться с любого хоста ('%'
).
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%'
: Предоставляет привилегию REPLICATION SLAVE
пользователю slave_user
для всех баз данных и таблиц. Эта привилегия необходима для того, чтобы слейв - сервер мог запрашивать обновления бинарного журнала у мастера.
FLUSH PRIVILEGES
: Перезагружает таблицы привилегий, чтобы применить новые привилегии.
Выйдите из монитора MySQL на мастере:
exit
-
Настройка слейва для подключения к мастеру:
На слейве войдите в сервер MySQL как пользователь root:
sudo mysql -u root
Укажите слейв - серверу, как подключиться к мастеру. Замените 'master_host'
на IP - адрес или имя хоста вашего мастера, 'slave_user'
на имя пользователя для репликации, которое вы создали, и 'password'
на пароль для репликации.
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
MASTER_HOST
: Имя хоста или IP - адрес мастера.
MASTER_USER
: Имя пользователя, которое слейв будет использовать для подключения к мастеру.
MASTER_PASSWORD
: Пароль для пользователя репликации.
MASTER_LOG_FILE
: Имя файла бинарного журнала мастера, с которого нужно начать репликацию. Вы можете узнать это, выполнив запрос SHOW MASTER STATUS;
на мастере. Для новой настройки это обычно mysql-bin.000001
.
MASTER_LOG_POS
: Позиция в файле бинарного журнала, с которой нужно начать репликацию. Вы можете узнать это, выполнив запрос SHOW MASTER STATUS;
на мастере. Для новой настройки это обычно 4
.
Важно: Вам нужно определить правильные значения MASTER_LOG_FILE
и MASTER_LOG_POS
на мастере. На мастере выполните следующий запрос:
SHOW MASTER STATUS;
Вывод покажет File
(соответствует MASTER_LOG_FILE
) и Position
(соответствует MASTER_LOG_POS
). Используйте эти значения в команде CHANGE MASTER TO
на слейве.
После выполнения команды CHANGE MASTER TO
запустите слейв:
START SLAVE;
Выйдите из монитора MySQL на слейве:
exit
Теперь вы настроили слейв - сервер для репликации данных с мастера. На следующем этапе мы проверим, что репликация работает корректно.