MySQL: автоматическое добавочное резервное копирование таблиц InnoDB - PullRequest
1 голос
/ 01 сентября 2011

Я знаю, что в SO и других местах были похожие / связанные вопросы, и я, по крайней мере, думаю, что понимаю различные варианты.

У нас есть большая база данных MySQL (Community Edition) с таблицами InnoDB. Я хотел бы делать ежедневные шейпшоты БД для резервного копирования вне сайта. В настоящее время я использую скрипт mysqldump, который запускается cron.daily. Однако на выписывание копии уходит 3 часа. Так что - пошагово это должно быть.

Поскольку мы являемся выпуском для сообщества и не можем позволить себе Enterprise, у нас нет оперативной копии InnoDB, которая была бы жизнеспособным решением, поскольку она не блокирует. Другой вариант - включить бинарное ведение журнала и получать инкрементные обновления. Но это похоже на колоссальную боль и склонность к ошибкам: очистка и ротация журналов, запись меток времени и т. Д. По-видимому, совет избегайте этого, если это возможно.

Таким образом, последний вариант - настройка репликации с конфигурацией Master-Slave. Я отсканировал документы, но не ясно, что такое «Мастер», а что «Раб». Итак, несколько вопросов:

  • Является ли раб отдельным процессом mysqld?
  • Может ли раб работать на той же машине, что и Мастер?
  • После настройки и запуска требуется ли какое-либо вмешательство или мастер будет добросовестно отправлять все обновления?
  • Чтобы создавать резервные копии без влияния на Мастер, возможно, я могу просто запустить mysqldump на подчиненном устройстве?
  • И, наконец, является ли это разумным решением для сохранения резервной копии для копирования за пределы сайта?

Спасибо, Ричард

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Является ли подчиненное устройство отдельным процессом mysqld?

нет необходимости использовать отдельный демон mysql,
в master вы включаете двоичный журнал
в настраиваемом slavebin-bin и соответствующая информация о ведущем
(см. http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html)

Может ли подчиненный работать на той же машине, что и ведущий?

Да,но не делайте этого ,
, потому что, как только машина вышла из строя,
и ваш ведущий и ведомый пропали
(DTP)

После настройкии работает ли какое-либо вмешательство, или мастер будет добросовестно отправлять все обновления?

мастер будет добросовестно отправлять все обновления ,
мастер записывать записи sqls в двоичный журнал,
и ведомый должен получить двоичный журнал (как объяснил @Johan, он извлекает данные из мастера)

однако

  1. блокировка таблицы может привести к задержке репликации на ведомом
  2. неудачный запрос на запись, который не может быть выполнен на подчиненном

вы можете обработать replЭто просто метод, который позволяет ВСЕМ sql выполняться на главном сервере,
копировать на ведомое устройство,
и выполнять снова в порядке приема
(это то, что делает двоичный журнал)

Чтобы создавать резервные копии без влияния на Мастер, возможно, я могу просто запустить mysqldump на подчиненном устройстве?

Конечно, это цель иметь подчиненное устройство
Однако будет некоторая задержка...
при выгрузке данных,
вы можете заблокировать таблицу для записи (при условии, что innodb оказывает меньшее влияние),
, пока ведущий может продолжить запись

И, наконец, является ли это разумным решением для поддержки резервного копирования для копирования за пределы сайта?

да, это считается аварийным восстановлением mysql

1 голос
/ 01 сентября 2011

Является ли раб отдельным процессом mysqld?

Может быть, но чаще это отдельный сервер MySQL, установленный на другом компьютере.

Может ли подчиненный работать на той же машине, что и мастер?

Да, если необходимо, просто назначьте ему другой номер порта и другой идентификатор_сервера.
Обратите внимание, что это не большая резервная копия, если она находится на той же машине.

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

Мастер не push ничего, подчиненный pulls обновления.

Чтобы делать резервные копии без влияния на Мастер, возможно, я могу просто запустить mysqldump на подчиненном устройстве?

Да, но если ведущий и ведомый работают на одной и той же машине, запуск mysqldunmp приведет к замедлению работы этого сервера.

И, наконец, это разумное решение для сохранения резервной копии для копирования за пределы сайта?

Да, off site * Ключевое слово здесь - 1035 *.
Я бы поставил раба за пределы площадки, что более логично, чем раба на одной машине.

Вот учебник
http://www.howtoforge.com/mysql_master_master_replication

...