Ставим 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"