У меня есть конфигурация master -> slave, где master вышел из строя. Я был в состоянии вернуть старого раба, чтобы он был хозяином, а старого мастера - рабом. Хорошо.
Похоже, я не могу удалить основную информацию о старом-подчиненном, который теперь является новым-главным. Понимаю:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 10.1.2.101
Master_User: replicationSlave
Master_Port: 3306
...
Slave_IO_Running: No
Slave_SQL_Running: No
Я прочитал много документации по MySQL, но до сих пор не нашел способа очистить ведомую информацию от нового мастера. Я пробовал:
RESET SLAVE
который, кажется, не очищает эти настройки. [[На самом деле он удаляетmaster.info
файл, но не настройки памяти. Увидеть ниже.]]CHANGE MASTER TO MASTER_HOST=''
которая просто плюет на ошибку, так как она устарела недавно.- Проверка того, у
my.cnf
кого нет основной информации, поскольку они были добавлены программно. RESET MASTER
потому что некоторые документы по MySQL рекомендовали это. Это только сбрасывает журналы бен.- Изучение внутренних таблиц MySQL, чтобы увидеть, могу ли я найти поля для очистки.
Как правильно сделать это на MySQL ~ 5.5.9? Спасибо за любую помощь.
Редактировать:
Так что получается, что RESET SLAVE
удаляет master.info
файл, как подразумевается @RolandoMySQLDBA. Однако вам все равно нужно перезапустить сервер, прежде чем ведомая информация будет удалена.
Есть ли способ удалить эту ведомую информацию без перезапуска mysqld?
источник
Ответы:
В MySQL 5.5.16 и более поздних версиях вы можете использовать
RESET SLAVE ALL
все, чтоRESET SLAVE
делает, и сбрасывать параметры соединения из памяти, таким образом, это не требует перезапуска mysqld.источник
Самый быстрый и самый грязный способ очистить ведомую информацию от экземпляра MySQL
skip-slave-start
в /etc/my.cnf под[mysqld]
service mysql stop
rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
service mysql start
skip-slave-start
из /etc/my.cnfЭто должно сделать это для вас!
Это было бы необходимо, потому что согласно документации MySQL
RESET SLAVE
:Таким образом, информация о репликации все еще находится в памяти. Перезапуск MySQL - единственный путь.
источник
master.info
файлов. Всегда ли это на «хозяине» или «рабе»?RESET SLAVE
последующий перезапуск не очищает информацию о ведомом устройстве, если это касается phpmyadmin. Вы также должны установитьCHANGE MASTER TO MASTER_HOST=''
.источник
Я бы порекомендовал сохранить команду skip-slave-start в вашем конфигурационном файле ('in /etc/my.cnf') в вашем 'mysqld', чтобы избежать переопределения данных master-slave. Чтобы дать вам пример - при работе в облачной среде, скажем, старый мастер выходит из строя, а затем успешно перезапускается, когда ваш провайдер устраняет любую проблему - старый ведомый (теперь новый мастер) будет реплицироваться со старого мастера, переопределяя данные перед администратор базы данных имеет возможность понять это.
Кстати, это также актуально в не облачной среде. Если, скажем, другой администратор вызывает старого мастера без координации. Кроме того, еще одна проблема, почему рекомендуется поддерживать команду «skip-slave-start», даже если она является ведомой, - нет автоматической репликации, а это означает, что у вас больше контроля над предотвращением непредсказуемых результатов. :)
источник