Multi-source replication, MariaDB. (Replicate_Do_DB.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Multi-source replication, MariaDB.

Сообщение BigBrother »

Привет.
Кто настраивал multi-source replication (Multi-source replication means that one server has many masters from which it replicates. This is a new feature in MariaDB 10.0.) в mariadb?
Ознакомившись с документацией, мне не понятно, как сделать так, чтобы при

Код: Выделить всё

show all slaves status\G;

для разных конекшенов в поле

Код: Выделить всё

Replicate_Do_DB:

были установлены разные базы данных.
Объясню: когда я делаю change master несколько раз на разные !Р и даю им разные имена, и при этом в my.cnf (replicate-do-db) перечислены названия бд с разных серверов, то для всех этих конекшенов (change master) в поле Replicate_Do_DB перечислены все базы, которые я указал в my.cnf. И из-за этого, когда я делаю start all staves и когда на одном из мастер серверов изменилась база, то на слейве значение Exec_Master_Log_Pos меняется для всех, а не для одного.
Пример

Код: Выделить всё

change master 'from_db1' to master_host='IP1', master_user='replica', master_password='replica', master_log_file='mysql-bin.00006', master_log_pos=3836374;
change master 'from_db2' to master_host='IP2', master_user='replica', master_password='replica', master_log_file='mysql-bin.000046', master_log_pos=933454;

в итоге получаю

Код: Выделить всё

MariaDB [(none)]> show all slaves status\G;
*************************** 1. row ***************************
              Connection_name: from_db1
                  Master_Host: IP1
                Replicate_Do_DB: db1,db2

*************************** 2. row ***************************
              Connection_name: from_db2
                  Master_Host: IP2
              Replicate_Do_DB: db1,db2

а надо

Код: Выделить всё

MariaDB [(none)]> show all slaves status\G;
*************************** 1. row ***************************
              Connection_name: from_db1
                  Master_Host: IP1
              Replicate_Do_DB: db1

*************************** 2. row ***************************
              Connection_name: from_db2
                  Master_Host: IP2
              Replicate_Do_DB: db2


Если в my.cnf не указывать replicate-do-db, тогда поле Replicate_Do_DB - пустое.
Как это исправить?
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Multi-source replication, MariaDB.

Сообщение KiWi »

На той же самой странице написано:
One can set the values for the replicate-... variables from the command line or in my.cnf for a given connection by prefixing the variable with the connection name.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Multi-source replication, MariaDB.

Сообщение BigBrother »

спасибо, помогло.

Можно в двух словах объяснить что такое gtid, зачем он нужен и как правильно его включать. А то в документации много букв и я до конца ещё не разобрался.
Непонятно, какая разница между значениями current_pos и slave_pos для параметра master_use_gtid
Спасибо сказали: