Як повністю відключити реплікацію MySQL


64

Я запускаю подвійну реплікацію MySQL і тепер хочу перейти до єдиної бази даних без реплікації. Як я повністю відключую реплікацію в обох базах даних?

Відповіді:


81

Щоб повністю відключити реплікацію за допомогою налаштування master-master, слід зробити наступне на кожному підлеглому:

  1. STOP SLAVE;
  2. RESET SLAVE;(Використовувати RESET SLAVE ALL;для MySQL 5.5.16 та новіших версій)
  3. Відредагуйте my.cnf та видаліть будь-яку інформацію (якщо вона є), яка посилається на параметри "master -..." або "replicat -...". У вас не може бути нічого в my.cnf, оскільки реплікація також може бути налаштована динамічно.
  4. Перезапустити mysqld.

якщо реплікація налаштована динамічно, кроків 1 і 2 має бути достатньо.
tanyehzheng

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

Я роблю кроки, але чому цей неактивний підлеглий все ще в списку команд mtop? Як видалити його зі списку?
Скотт Чу

18

Я знаю, що це давнє питання, але я виявив, що мені також доведеться скинути підлеглі змінні. Якщо ви використовуєте "blah", як пропонується, сервер спробує при запуску знайти "blah" сервера.

Змінити MASTERнаMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Ви можете переконатися, що машина більше не є рабом

SHOW SLAVE STATUS \G;

5
Це більше не працює. Налаштування CHANGE MASTER TO MASTER_HOST=''тепер видає помилку.
Сірий

ПОМИЛКА 1210 (HY000): Неправильні аргументи до MASTER_HOST
Kazimieras Aliulis

Працює для мене на CentOS 6 (MySQL 5.1), після цього ПОКАЗУВАТИ СЛАВНИЙ СТАТУС повертає порожній набір, тоді як після RESET SLAVE він все ще показував деяку інформацію про майстра.
Martijn

Ця відповідь все ще справедлива для користувачів MySQL 5.1 (там все ще можуть бути).
RolandoMySQLDBA

12

На ведених серверах:

  1. Запустіть "стоп невільник", щоб зупинити реплікацію.
  2. Запустіть "скинути підлеглий", щоб сказати підлеглому серверу забути його положення у бінарному журналі, отриманому з головного сервера.
  3. Додайте "skip-slave-start" до my.cnf, щоб запобігти запуску реплікації при перезапуску MySQL.

Немає необхідності перезапускати MySQL ні на майстер, ні на підлеглий. Повну документацію можна знайти в розділі 19 довідкового посібника MySQL .

Рекомендую залишити решту параметрів реплікації на місці, якщо ви вирішите повернутися до попередньої конфігурації. Таким чином, вам просто доведеться пересунути дані та скинути ведене положення (не забудьте видалити пропускний-ведений запуск), а не відтворювати налаштування цілком.


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 . Поки цей файл існує, сервер буде намагатися реплікувати, використовуючи там деталі. "RESET SLAVE;" Команда, вказана у першій відповіді, позбудеться файлу 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.