Как полностью отключить репликацию MySQL


64

Я использую двойную главную репликацию MySQL и теперь хочу перейти на одну базу данных без репликации. Как полностью отключить репликацию в обеих базах?

Ответы:


81

Чтобы полностью отключить репликацию с установкой мастер-мастер, вы должны сделать следующее для каждого ведомого:

  1. STOP SLAVE;
  2. RESET SLAVE;(Используйте RESET SLAVE ALL;для MySQL 5.5.16 и позже)
  3. Отредактируйте my.cnf и удалите любую информацию (если она есть), которая относится к опциям «master -...» или «replicate -...». В my.cnf у вас ничего не может быть, поскольку репликация также может быть настроена динамически.
  4. Перезапустите mysqld.

если репликация настроена динамически, шагов 1 и 2 должно быть достаточно.
tanyehzheng

4
До тех пор, пока MySQL не будет перезапущен, он будет сообщать старую информацию о репликации по SLAVE STATUSзапросам даже после того, как RESET SLAVEбудет дана команда. Важно знать о средствах мониторинга или удаленного управления конфигурацией. Подтвержденное поведение с MySQL 5.5.38 на CentOS 6.5.
Крис Ласки

Я делаю шаги, но почему этот неактивный подчиненный все еще находится в списке команды mtop? Как убрать его из списка?
Скотт Чу

18

Я знаю, что это старый вопрос, но я обнаружил, что мне также нужно сбросить ведомые переменные. Если вы используете «бла», как предложено, сервер попытается при запуске найти сервер «бла».

Изменить MASTERнаMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Вы можете убедиться, что машина больше не является рабом

SHOW SLAVE STATUS \G;

5
Это больше не работает. Установка CHANGE MASTER TO MASTER_HOST=''сейчас выдает ошибку.
Серый

ОШИБКА 1210 (HY000): неверные аргументы для MASTER_HOST
Казимьерас Алиулис

У меня работает на CentOS 6 (MySQL 5.1), после этого SHOW SLAVE STATUS возвращает пустой набор, тогда как после RESET SLAVE он все еще показывает некоторую основную информацию.
Мартейн

Этот ответ по-прежнему действителен для пользователей MySQL 5.1 (там еще может быть).
RolandoMySQLDBA

12

На подчиненном сервере (ах):

  1. Запустите «остановить ведомого», чтобы остановить репликацию.
  2. Запустите «reset slave», чтобы заставить подчиненный сервер забыть о своей позиции в двоичном журнале, полученном с главного сервера.
  3. Добавьте «skip-slave-start» в my.cnf, чтобы предотвратить запуск репликации при перезапуске MySQL.

Нет необходимости перезапускать MySQL на главном или подчиненном устройстве. Полная документация может быть найдена в разделе 19 Справочного руководства MySQL .

Я бы рекомендовал оставить остальные настройки репликации на месте, если вы решите вернуться к своей предыдущей конфигурации. Таким образом, вам просто нужно переместить данные и сбросить положение подчиненного устройства (не забудьте удалить skip-slave-start), а не воссоздавать настройку целиком.


7

Независимо от версии MySQL, наиболее полный способ сделать это заключается в следующем

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Это должно работать для последней версии, потому что настройки репликации все еще остаются в оперативной памяти для MySQL 5.5.

Я только что ответил на аналогичный вопрос на эту тему: Как изменить предыдущее ведомое устройство MySQL, чтобы оно было ведущим, и удалить информацию о состоянии подчиненного устройства?


6

Редактирование одного файла my.cnf недостаточно для отключения репликации. Фактически, это больше не рекомендуемый способ его включения. Помещение записей в файл my.cnf действует только при следующем запуске и ведет себя так, как если бы вы ввели команду в клиент mysql:

mysql> смените master на master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Оба эти метода создадут файл в каталоге данных с именем master.info . Пока этот файл существует, сервер будет пытаться выполнить репликацию, используя указанные там сведения. "СБРОС Раба;" Команда, указанная в первом ответе, избавит от файла master.info (а также от файла relay-log.info ). Как упоминалось в первом ответе, вы также хотите убедиться, что у вас нет этой информации о конфигурации в файле my.cnf, в противном случае при следующем перезапуске сервера ведение журнала будет возобновлено.


5

Один ответ здесь:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Отредактируйте файл конфигурации MySQL: /etc/my.cnf и удалите следующие 7 строк в раздел под названием [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Перезапустите MySQL.


4

Я добавляю это к ответу Харрисона Фиска:

Если вы использовали, RESET SLAVE ALL;то перезагрузка не требуется.

Кроме того, вы можете включить события, которые были отключены на ведомом устройстве:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Для каждого из них:

alter event <event_name> enable;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.