MySQL: Автоматизоване інкрементальне резервне копіювання таблиць InnoDB - mysql, backup, innodb

Я знаю, що були подібні / пов'язані питання на SO та в інших місцях, і я принаймні вважаю, що розумію різні варіанти.

We have a largish MySQL (community edition) db з таблицями InnoDB. Я хотів би щоденно робити знімки з БД, які будуть підкріплені за межами сайту. В даний час я використовую скрипт mysqldump, який запускається cron.daily. Проте виписати копію потрібно 3 години. Отже - інкрементне воно має бути.

Оскільки ми є спільнотою і не можемо собі це дозволитиНа підприємстві у нас немає гарячої копії InnoDB, яка була б життєздатним рішенням, оскільки вона не блокує. Інший варіант - ввімкнути двійковий журнал і приймати поступові оновлення. Але це здається колосальним болем і схильним до помилок: промивання та обертання журналів , запис часових міток тощо. Здається, порада уникає цього, якщо це можливо.

Таким чином, останньою опцією є налаштування реплікації з конфігурацією Master-Slave. Я переглядав документи, але не зрозуміло, що складається з "Майстра" і що є "Slave".

  • Є slave окремий процес mysqld?
  • Чи може підлеглий працювати на тій же машині, що і Майстер?
  • Після налаштування та запуску потрібне будь-яке втручання або Майстер вірно натискає всі оновлення?
  • Щоб зробити мої резервні копії без впливу на Майстра, мабуть, я можу просто запустити mysqldump на slave?
  • І, нарешті, чи є це розумним рішенням збереження резервної копії поза межами сайту?

Завдяки Річарду

Відповіді:

2 для відповіді № 1

Є slave окремий процес mysqld?

не потрібно використовувати окремий демон mysql,
у master ви включаєте двійковий журнал
в slave ви налаштовуєте ретранслятор і відповідну інформацію про master
(побачити http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html)

Чи може підлеглий працювати на тій же машині, що і Майстер?

Так, але не робіть цього ,
тому що коли машина розбилася,
і ваш господар, і раб пішов
(DTP)

Після налаштування та запуску потрібне будь-яке втручання або Майстер вірно натискає всі оновлення?

майстер буде сумлінно штовхати всі оновлення,
master log sqls запису у двійковий журнал,
і раб повинен отримувати двійковий журнал (як пояснив @Johan, він витягує з головного)

однак

  1. Блокування столу може призвести до затримки реплікації на підлеглому
  2. невдалий запит запису, який неможливо виконати на підлеглому

ви можете лікувати реплікацію - це лише метод, який дозволяє ВСІМ sqls виконувати на майстрі,
скопіюйте на раба,
і виконати знову в порядку отримання
(це те, що робить двійковий журнал)

Щоб зробити мої резервні копії без впливу на Майстра, мабуть, я можу просто запустити mysqldump на slave?

Звичайно, це мета мати раба
Однак буде деяка затримка ...
коли ви скидаєте дані,
ви можете блокувати таблицю для запису (якщо припустити, що innodb має менший вплив),
тоді як майстер міг би продовжувати писати

І, нарешті, чи є це розумним рішенням збереження резервної копії поза межами сайту?

так, це розглядається як відновлення після катастрофи mysql


1 для відповіді № 2

Є slave окремий процес mysqld?

Це може бути, але частіше це окремий сервер MySQL, встановлений на іншій машині.

Чи може підлеглий працювати на тій же машині, що і Майстер?

Так, якщо потрібно, просто призначте йому інший номер порту та інший server_id.
Зауважте, що резервне копіювання не дуже, якщо воно знаходиться на одній машині.

Після налаштування та запуску потрібне будь-яке втручання або Майстер вірно натискає всі оновлення?

Майстер ні push що завгодно, раб pulls оновлення.

Щоб зробити мої резервні копії без впливу на Майстра, мабуть, я можу просто запустити mysqldump на slave?

Так, але якщо господар і підлеглий працюють на одній машині, працює mysqldunmp воля сповільнити цей сервер.

І, нарешті, чи є це розумним рішенням збереження резервної копії поза межами сайту?

так, поза сайтом тут ключове слово.
Я б розмістив раба за межами сайту, це має сенс більше, ніж мати раба на одній машині.

Ось підручник
http://www.howtoforge.com/mysql_master_master_replication


Схожі запитання
Найбільш популярний