Я запускаю подвійну реплікацію MySQL і тепер хочу перейти до єдиної бази даних без реплікації. Як я повністю відключую реплікацію в обох базах даних?
Я запускаю подвійну реплікацію MySQL і тепер хочу перейти до єдиної бази даних без реплікації. Як я повністю відключую реплікацію в обох базах даних?
Відповіді:
Щоб повністю відключити реплікацію за допомогою налаштування master-master, слід зробити наступне на кожному підлеглому:
STOP SLAVE;
RESET SLAVE;
(Використовувати RESET SLAVE ALL;
для MySQL 5.5.16 та новіших версій)SLAVE STATUS
запитів, навіть після того, як RESET SLAVE
буде надана команда. Важливо знати для моніторингу та віддалених інструментів управління конфігурацією. Підтверджена поведінка з MySQL 5.5.38 на CentOS 6.5.
Я знаю, що це давнє питання, але я виявив, що мені також доведеться скинути підлеглі змінні. Якщо ви використовуєте "blah", як пропонується, сервер спробує при запуску знайти "blah" сервера.
Змінити
MASTER
наMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';
Ви можете переконатися, що машина більше не є рабом
SHOW SLAVE STATUS \G;
CHANGE MASTER TO MASTER_HOST=''
тепер видає помилку.
На ведених серверах:
Немає необхідності перезапускати MySQL ні на майстер, ні на підлеглий. Повну документацію можна знайти в розділі 19 довідкового посібника MySQL .
Рекомендую залишити решту параметрів реплікації на місці, якщо ви вирішите повернутися до попередньої конфігурації. Таким чином, вам просто доведеться пересунути дані та скинути ведене положення (не забудьте видалити пропускний-ведений запуск), а не відтворювати налаштування цілком.
Незалежно від версії MySQL, найбільш повний спосіб зробити це наступний
cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start
Це повинно працювати для останньої версії, оскільки налаштування реплікації все ще затримується в оперативній пам'яті для MySQL 5.5.
Я щойно відповів на подібне запитання з цього приводу: Як змінити попередній підлеглий MySQL, щоб він був головним, і видалити інформацію про стан підлеглого?
Самого редагування файлу 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, інакше при наступному перезапуску сервера журнал буде знову ввімкнено.
Один варіант відповіді:
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.
Я додаю це до відповіді Гаррісона Фіска:
Якщо ви використовували, RESET SLAVE ALL;
то перезапуск не потрібен.
Крім того, ви можете увімкнути події, які були відключені на підлеглому:
select * from information_schema.events where status = 'SLAVESIDE_DISABLED';
Для кожного з них:
alter event <event_name> enable;