Реплікація MySQL. Короткий екскурс
Рано чи пізно перед будь-яким адміністратором виникає проблема, коли потужності його серверів не вистачає для виконання поставлених завдань, а придбання нової техніки практично неможливо з причини фінансових труднощів, або просто така покупка викликає сумнів з приводу її окупності в майбутньому.
У світлі таких подій не зайвим буде дізнатися про таке поняття, як реплікація баз даних. Подібні знання значно спростять життя будь-якій людині, що займається обслуговуванням високонавантажених систем і дозволять створити оптимальну робочу апаратну конфігурацію. У загальних рисах реплікація бази даних увазі об`єднання потужностей набору комп`ютерів для підвищення коефіцієнта продуктивності системи та її відмовостійкості. Першого ефекту можна добитися шляхом перекидання частини запитів на резервний сервер, а другий - шляхом створення локальної копії бази даних, яка в разі необхідності замінить головну базу.
Найбільш простий і розповсюджений спосіб організації реплікації - це реплікація MySQL. Причому MySQL підтримує цей функціонал з 3.23.15-версії і тільки односторонню реплікацію. В даному випадку створюється спеціальна конфігурація «master-slave», причому головний сервер (master) може також одночасно бути і підлеглим сервером (slave).
Реплікація MySQL на даний момент часу реалізовується таким чином. Створюється головний сервер, в обов`язки якого входить стежити за змінами довічного файлу, в якому відображаються всі зміни бази даних і підпорядкована машина або машини, які читають і виконують з цього файлу запити. Підлеглий сервер постійно зв`язується з головним, тому всі зміни, що відбулися на master, переходять на slave, і не виникає ситуації расходімості і некоректності даних.
Реплікація MySQL встановлюється в кілька етапів.
- Адміністратор системи повинен упевнитися, що на всіх його машинах встановлена остання версія MySQL.
- Необхідно створити нового користувача на головному сервері, під логіном якого відбуватиметься реплікація MySQL (він повинен мати рівень привілеї FILE і права зв`язуватися зі slave-машинами).
- Далі потрібно зупинити MySQL на головком і підлеглих серверах і скопіювати всі дані, які стосуються реплікації. На Unix-системах це можна зробити командою tar, яка робить резервний архів всього каталогу. Користувачам Windows підійде WinZip.
- У секцію mysqld додати наступні рядки: server-id = unique number, log-bin. Всі зміни проводяться у файлі My.conf на master сервері, після чого він повинен бути обов`язково перевантажений.
- На slave-машинах в аналогічний файл потрібно дописати наступний фрагмент коду:
master-host =<имя Вашего master хоста>
master-user =<логин пользователя>
master-password =<секретный пароль пользователя>
master-port =<порт, по которому будут подключаться подчиненные сервера к главному>
server-id =< id данной slave машины>
* В трикутних дужках треба вводити свої дані, а не вищезгаданий текст.
Наприкінці скопіюйте всі бази даних на підлеглі сервера і перезапустіть всі машини.
Після таких дій реплікацію можна вважати встановленої і настроєної, а це означає, що тепер ваш головний сервер не буде страждати від високого завантаження і в разі збою будь-якої таблиці на ньому її з легкістю можна буде відновити з іншого комп`ютера. У підсумку можна на кілька років забути про покупку нового апаратного забезпечення для високонавантажених систем і задовольнятися налагодженої роботою існуючої техніки.