База данных 1 - это обычный сервер базы данных. Он скопировал его в базу данных 2 ... прямой клон. Мастер-Мастер. Они все время «синхронизированы». У каждого из них 40 миллионов строк.
Сегодня база данных 2 «сломана» и, кажется, возвращает результаты, отличные от базы данных 1. Это ненормально, потому что они должны быть идентичными.
Что бы вы посоветовали исправить?
Следует ли мне удалить базу данных 2 и заново реплицировать базу данных 1 в базу данных 2? Если да, то как мне это сделать?
-Мне нужно знать, какие изменения он внес и какие команды набрал, чтобы я мог отменить репликацию и создать новую репликацию.
Прежде чем пытаться что-либо еще, проверьте, является ли БД 2 подчиненным устройством репликации для БД 1. Выполните «ПОКАЗАТЬ СОСТОЯНИЕ ВЕДОМОГО» в БД 2. Если это дает результат, вероятно, произошла ошибка, остановившая репликацию.
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: gbichot-bin.005
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.005
Relay_Log_Pos: 548
Relay_Master_Log_File: gbichot-bin.005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 79
Relay_Log_Space: 552
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 8
Проверьте столбцы с именем
Slave_IO_Running
Slave_SQL_Running and
Seconds_behind_master
Если в «текущих» столбцах отображается «Нет», а значение «seconds_behind_master» больше нескольких секунд, проверьте значение в «last_error». Это должно дать вам представление о том, где произошла ошибка. Попробуйте исправить это (изменив данные в DB 2) и дайте ему новый шанс, запустив «START SLAVE» в DB 2. Сразу после этого отметьте «SHOW SLAVE STATUS».
Чтобы копнуть глубже, я рекомендую прочитать руководство по MySQL, особенно главу о настройках репликации: Репликация MySQL 5.0
Возможно, ваша репликация была выполнена программно, читайте «вручную», как в коде. У вас нет другого выбора, кроме как вручную повторно синхронизировать все.
Если ваша база данных особенно велика, копирование файлов необработанных данных может быть более эффективным, чем использование mysqldump и импорт файла на каждом ведомом устройстве.
Вам необходимо сначала подтвердить, содержит ли БД 2 только подмножество данных БД 1 или оба сервера содержат записи, которых нет на другом (т.е. в БД 1 также отсутствуют данные). Если это так, то удалите репликацию, сотрите БД 2 и начните снова, на этот раз сделав это правильно ...
Если это не так, то вам нужно написать много SQL.