Мастер-Мастер репликации как догнать синхронизацию при выключении
Для работы я должен был установить репликацию master-master на 2 серверах ( raspberry pi 3 debian), что я и сделал, и это работает, но теперь я пришел к вопросу о том, почему мы устанавливаем реплики в месте 1srt: Сервер 1 является главным мастером, а сервер 2 должен быть резервным на тот случай, если сервер 1 отключится по причине X, а клиенты все равно будут иметь доступ к базе данных и будут продолжать запись в нее.
Но что происходит, когда сервер 1 восстанавливается и перезапускается? Будет ли он автоматически синхронизироваться с сервером 2 (который теперь содержит больше информации, таблиц и т. Д.), Нужно ли мне писать команды, чтобы синхронизировать его и получать все недостающие данные?
Зная, что база данных составляет около 20 000 000 строк кода и имеет большой объем, я не могу просто сделать это вручную, и мне нужно, чтобы это было автоматически или, по крайней мере, создать какой-то сценарий, который сможет синхронизировать все данные за раз, а не строку за строкой.,
Я не профессионал в Linux, я только начал работать над этим в октябре прошлого года, поэтому некоторые концепции довольно размыты для меня
Спасибо за помощь!
2 ответа
Спасибо за Ваш ответ!
Я думаю, что я понимаю, что вы пытаетесь сказать, но это означает, что на неисправном сервере нужно сделать " CHANGE MASTER TO master_host.....Blahblah " с новым лог-файлом и log pos "с помощью"Show master status" на сервере 2, который имеет дополнительный контент?
И это должно вызвать синхронизацию неисправного сервера 1 на сервере 2?
Потому что я пытался смоделировать отключение сервера 1 с помощью " sudo shutdown -h now "
затем добавить некоторые данные в уже существующую таблицу.
Затем я перезапустил сервер 1, и тут начинаются проблемы:
Сначала мое расширение MySQLi php исчезло, мне пришлось переустановить его, потому что я больше не мог иметь доступ к phpmyadmin (не знаю почему, может быть, выключение стерло его)
и когда я сделал "Показать статус ведомого \G; " на неисправном сервере 1, он сказал:
Last_Errno: 1 Last_Errno: BlahBlah ", цитируя то, что я добавил на сервере 2 во время выключения, указывая на него.
И эти два больше не синхронизировались, но в этом ( http://msutic.blogspot.fr/2015/02/mariadbmysql-master-master-replication.html) учебном пособии, за которым я следовал, было сказано, что оно будет догонять себя при перезапуске.
Поэтому я удалил то, что добавил, и сделал остановку ведомого / Смена мастера на / запуск ведомого на неисправном сервере 1, но мне все равно пришлось удалить добавленные данные, так что это было совсем не то, что я хотел...
Стандартная репликация в основном автоматическая, поэтому, если главный / подчиненный остановлен на короткое время, должно быть достаточно журналов для синхронизации остановленного сервера с работающим сервером. Это зависит от того, как долго сервер останавливается для скорости изменения ваших данных, насколько велики ваши двоичные журналы и как долго вы их храните. В худшем случае лучшим решением всегда является создание дампа и повторная синхронизация, но вы можете довольно быстро это определить, посмотрев на SHOW SLAVE STATUS
,