Нотатки адміністратора реплікація в mysql

Терміново знадобилося мати копію двох таблиць (test_db.wiz_main і test_db.wiz_data) на другому mysql-сервері. Причому, щоб все нові зміни з master-таблиць, відразу ж з'являлися на другому сервері. Як варіант вирішення була обрана реплікація.

Для того, щоб організувати реплікацію між двома MySQL-серверами необхідно:
  • На master-сервері
1) Включити binarylog, якщо він ще не включений і призначити master-сервера ідентифікатор (server-id). Для цього в my.cnf додати і перевантажити:
2) Створити користувача з правами:
3) Заблокувати необхідні таблиці на час dump'а. Під час блокування також необхідно подивитися поточний стан в binary балці
4) Зробити dump необхідних таблиць і зняти блокування
  • На slave-сервері
1) Вказати, де знаходиться master-сервер і які конкретно бази (таблиці) слід реплицировать. Для цього в my.cnf додати:
2) Вказати "відправну точку", з якої слід почати реплікацію даних.
3) Ініціювати реплікацію

Питання: реплицируются тільки вибрані таблиці або БД складається з 2-х таблиць?
Поясню до чого це питання. Якщо уважно прочитати документацію по реплікації м'язи, то там сказано, що в лог пишуться зміни в усіх таблицях і вже на слейв перевіряється, чи включена реплікація даної таблиці чи ні, що уповільнює роботу слейв. Не забуваємо, що реплікація працює в 1 потік. Имхо, при реплікації тільки деяких таблиць БД набагато краще використовувати BLACKHOLE Storage Engine (mysql 5) для тих таблиць, які реплікуються.

Невелике зауваження, не забуваємо про те, що для підключення слейв треба зробити
FLUSH TABLES WITH READ LOCK; після цього скопіювати таблички, запустити slave c певної позиції майстра і потім UNLOCK TABLES;

Схожі статті