FreeBSD 11.1 — установка MariaDB 10.1 и включение GTID репликации master — slave

Ставим MariaDB

pkg install mariadb101-server

Добавляем строку mysql_enable=»YES» в /etc/rc.conf
Запускаем:

service mysql-server start

Задаем пароль для root, удаляем анонимного пользователя и тестовую БД. Для этого выполняем:

mysql_secure_installation

Авторизуемся на сервере:

mysql -u root -p

Добавляем пользователя для доступа извне:

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;

Затем перечитываем привелегии:

FLUSH PRIVILEGES;

Создаем БД mybase, поднимаем по аналогии второй сервер с новым экземпляром MariaDB.
На первичном сервере в конфиг my.cnf добавим строки:

server-id                       = 1
gtid-domain-id                  = 1
binlog_format                   = ROW
log_bin                         = /var/db/mysql-log/mysql_bin_log
binlog_do_db                    = mybase

Параметром binlog_format = ROW включаем бинарный формат лога. Для некоторых проектов, например Moodle этот параметр ОБЯЗАТЕЛЕН.
Далее создаем пользователя для репликации:

GRANT REPLICATION SLAVE ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Затем блокируем все таблицы в нашей БД:

USE mybase;
FLUSH TABLES WITH READ LOCK;

Статус master сервера выводит запрос:

SHOW MASTER STATUS;

Делаем дамп БД, после этого разблокируем таблицы:

UNLOCK TABLES;

Теперь перейдем ко вторичному серверу, который будет выполнять роль slave. Создадим БД mybase, загрузим в нее сделанный ранее дамп.
Допишем в my.cnf строки:

server-id                       = 2
binlog_format                   = ROW
relay-log                       = /var/db/mysql-log/mysql_relay_bin_log
log_bin                         = /var/db/mysql-log/mysql_bin_log
binlog_do_db                    = mybase

В параметр log_bin прописываем путь до лога на master сервере.
Теперь запускаем slave:

CHANGE MASTER TO MASTER_HOST='host_IP', MASTER_USER='username', MASTER_PASSWORD='password', MASTER_USE_GTID=slave_pos;

Параметр MASTER_USE_GTID может принимать значения current_pos или slave_pos. Подробно об это написано здесь. Чтобы избежать ненужных проблем рекомендуется использовать slave_pos.
Теперь запускаем репликацию:

START SLAVE;

Смотрим статус:

SHOW SLAVE STATUS\G

Для остановки репликации и сброса параметров подключения к master серверу достаточно выполнить:

STOP SLAVE;
RESET SLAVE ALL;

Возможные ошибки.

Got fatal error 1236 from master when reading data from binary log

Проверьте значения параметра max_allowed_packet на мастере и на слейве, они должны быть одинаковые.
Для устранения этой ошибки достаточно выполнить на слейве:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;

Затем смотри статус:

SHOW SLAVE STATUS\G

Если не помогло, то откатываемся дальше, повторяя процедуру заново.

Be the first to comment on "FreeBSD 11.1 — установка MariaDB 10.1 и включение GTID репликации master — slave"

Leave a comment

Your email address will not be published.