Настроить подчиненную репликацию для MariaDB Galera

MariaDB 10.2.10+Centos 7.

Я настроил кластер MariaDB Galera с помощью HAProxy и успешно протестировал его.

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

Ниже мои действия:

После того, как все действия кластера galera были выполнены, я добавил приведенную ниже конфигурацию в разделе /etc/my.cnf.d/server.cnf's [mysqld] каждого узла galera:

[mysqld]
log_bin
log_slave_updates
gtid_strict_mode
server_id=1
 [galera]
wsrep_gtid_mode

и добавлена ​​​​ниже конфигурация в разделе /etc/my.cnf.d/server.cnf's [mysqld] каждого подчиненного узла:

[mysqld]
binlog_format=ROW
log_bin
log_slave_updates
server_id=2
gtid_strict_mode

Позже создал одного пользователя для репликации, сделал mysqldump на одном узле galera и сделал импорт на ведомом узле.

Затем побежал на ведомом:

stop slave; change master to master_host='one galera node name ',master_port=3306,master_user='repl_user',master_password='repl_password',master_use_gtid=current_pos; start slave;

но не удалось. Сообщение об ошибке:

Получил фатальную ошибку 1236 от мастера при чтении данных из двоичного журнала: «Ошибка: подключение подчиненного устройства запросило запуск с GTID 0-2-11, которого нет в бинарном журнале мастера».

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


person Wison Ho    schedule 05.12.2017    source источник
comment
Я подозреваю, что только одному узлу следует сообщить об одном асинхронном ведомом устройстве.   -  person Rick James    schedule 06.12.2017
comment
да. на асинхронном подчиненном узле я установил master_address для одного узла кластера galera.   -  person Wison Ho    schedule 06.12.2017


Ответы (2)


После исследования я изменил настройки, о которых упоминал выше:

на каждом узле кластера Galera они имеют одинаковый идентификатор домена и разные идентификаторы сервера:

[mysqld]
log_bin
log_slave_updates
gtid_strict_mode
gtid_domain_id=1
server_id=1
 [galera]
wsrep_gtid_mode

на подчиненном узле подчиненный узел имеет другой идентификатор домена и идентификатор сервера:

[mysqld]
binlog_format=ROW
log_bin
log_slave_updates
gtid_domain_id=2
server_id=2

затем выполните mysqldump и импортируйте mysql, последний запуск

change master to master_host='one galera node name',master_port=3306, master_user='repl_user',master_password='aa',master_use_gtid=current_pos;
start slave;

Все идет хорошо.

Когда я добавляю базу данных или таблицу или вставляю данные в одну таблицу, они могут синхронизироваться с подчиненным узлом.

person Wison Ho    schedule 06.12.2017

@Винсон Хе

объяснение неверно. Он должен быть следующим: galera node 1, 2, 3 => Один и тот же domain_ID и уникальный server_id для каждого узла.

Ведомый узел => Другой domain_ID и уникальный server_id.

Таким образом, на самом деле, независимо от того, Cluster/Master/Slave, все серверы имеют уникальный server_id, и узлы кластера Galera будут иметь одинаковый domain_id, а подчиненные устройства будут находиться в разных domain_id.

person SAGAR BHOOSHAN    schedule 06.11.2018
comment
Да вы правы. Я написал неправильный комментарий. это должен быть тот же идентификатор домена и другой идентификатор сервера в кластере galera. Спасибо за указание на это. - person Wison Ho; 09.11.2018