Я настраиваю репликацию с несколькими источниками с серверами Mariadb 10.6. У меня есть 2 сервера mariadb с базами данных с одинаковым именем «база данных». Я хочу, чтобы эти два сервера реплицировали свои БД на одном подчиненном сервере, чтобы база данных master1 реплицировалась в database1, а база данных master2 реплицировалась в database2.
Вот конфигурации мастеров:
# Репликация
бревно
server_id=1 # 2 для master2
log-basename=master1 # master2 для master2
бинлог-формат = смешанный
gtid_domain_id=1 # 2 для master2
Вот конфигурация ведомого:
#Репликация
бревно
идентификатор_сервера=3
master1.replicate_rewrite_db="база данных->база данных1"
master2.replicate_rewrite_db="база данных->база данных2"
Я делаю резервную копию master1, выполняя mysqldump:
sudo mysqldump --master-data=2 -u root -p база данных > master1_test.sql
и импортировать его на раб.
Я использую эти команды в mariadb cli для запуска репликации:
остановить ведомый 'master1';
сброс ведомого 'master1';
ЗАМЕНИТЬ MASTER 'master1' НА MASTER_HOST='XXXX', MASTER_USER='replication', MASTER_PASSWORD='XXXXXXX', MASTER_PORT=3306, MASTER_LOG_FILE='master1-bin.000001', MASTER_LOG_POS=710, MASTER_CONNECT_RETRY=10, MASTER_USE_GTID = slave_pos;
УСТАНОВИТЬ ГЛОБАЛЬНЫЙ gtid_slave_pos = "1-1-2"
запустить ведомый 'master1';
MASTER_LOG_FILE, MASTER_LOG_POS и gtid_slave_pos берутся из файла дампа.
все работает нормально. Пробовал добавить новую таблицу в master1, реплицируется создание новой таблицы.
Однако, когда я попытался поместить некоторые данные в новую таблицу, мне сказали следующие команды:
показать статус ведомого 'master1' \G;
Last_SQL_Error: Ошибка «Таблица «database.test» не существует» при запросе. База данных по умолчанию: «database1». Запрос: 'ВСТАВИТЬ В `базу данных`.`тест` (`тест`) ЗНАЧЕНИЯ ('1242')'
Он должен заменить базу данных на базу данных1.