Использование Amazon EBS для горячего резервного копирования MySQL - PullRequest
9 голосов
/ 05 марта 2009

Как вы оцениваете использование моментальных снимков Amazons EBS для горячего резервного копирования MySql?

У меня есть база данных, выполняющая задание пакетной обработки в ec2. Я делаю резервную копию со снимком EBS. Пока что резервные копии выглядят согласованно. Но я боюсь, что они «перестанут быть последовательными, как только я перестану проверять» (принцип неопределенности).

Каков ваш опыт создания резервных копий реляционных баз данных (и, в частности, MySQL) с помощью снимка ebs?

Ответы [ 5 ]

11 голосов
/ 25 октября 2009

Я использовал снимки EBS для резервного копирования моего каталога данных MySQL более года. Это работает отлично. У меня никогда не было проблем с использованием этих снимков в качестве основы для замены (или клонирования) установки MySQL.

Рекомендуется форматировать том EBS с файловой системой, которая допускает зависание, например с XFS. Это позволяет получить непротиворечивый снимок: сбросить память MySQL на диск, заморозить файловую систему, снимок, а затем разморозить. Весь процесс занимает менее 10 секунд (но может занять больше времени, когда база данных интенсивно используется).

См. эту статью Эрика Хаммонда для сценария, который делает все это для вас.

3 голосов
/ 26 января 2011

MySQL имеет репутацию плохого восстановления из-за несовместимого состояния диска, XFS, по сути, приостанавливает ввод-вывод в файловую систему, пока происходит моментальный снимок. Обычно база данных выполняет flush () после создания полной записи в журнале транзакций, которая, по сути, указывает на контрольную точку для файловой системы. В случае журналируемой файловой системы это важно, и по большей части файловая система восстановится до последней действительной записи журнала после монтирования, это не 100%, но это лучше, чем ничего. Большинство систем баз данных используют файл журнала транзакций для «отката» при восстановлении, если файлы базы данных находятся за журналами транзакций, и механизм базы данных будет выполнять откат только настолько, насколько это возможно с учетом содержимого журналов транзакций. Он не будет пытаться откатиться через частично написанную транзакцию. Проблема здесь в том, что MySQL не является лучшим в достижении этого, поэтому это может быть проблемой. Я не нашел надежного решения для этого, я хотел бы представить себе запуск зеркала, приостановка MySQL, пока вы делаете снимок, а затем возобновить синхронизацию может работать, но я не знаю, может ли зеркало MySQL справиться с тем, что зеркало частично недоступно для Некоторое время, а затем сможете наверстать упущенное без полного переотражения, и в этом случае вы можете просто выполнить mysqldump для всех баз данных, поскольку это будет иметь примерно такой же эффект для базы данных, как и запуск полного зеркала. Это еще один вариант работы, который я могу придумать - запустить mysqldump всех баз данных в резервном разделе и сделать снимок. Не дает вам выполнять резервное копирование, поэтому вы не можете делать это часто, и если вы работаете круглосуточно, mysqldump сильно загружает базу данных во время ее работы, что далеко от оптимального.

Другие движки баз данных намного лучше в этом. PostgreSQL очень хорош в восстановлении состояния диска, когда он вообще не рекомендует запускать его в журнализированной файловой системе. У вас также есть возможность архивировать журналы транзакций, чтобы вы могли выполнить откат от последней полной резервной копии до любого момента времени, когда существуют архивированные журналы. Гораздо проще сделать последовательные резервные копии с этим. Oracle позволит вам иметь несколько наборов журналов транзакций, которые переключаются между физическими дисками / разделами EBS, давая вам частые окна для создания непротиворечивого снимка и возможность указать ядру базы данных, что вы хотите сделать это, и не переворачивать пока не скажешь.

В рамках общепринятого мышления LVM имеет возможность сделать снимок всей файловой системы обычно за секунду. Я не знаю, воспользуется ли эта функция моментальным снимком EBS, хотя вы могли бы сделать это вручную. LVM немного сложнее, чем XFS, но в прошлом у меня были проблемы с XFS, из-за чего большое количество файлов находилось в одном каталоге, где ext3 был в порядке. У LVM также есть множество других преимуществ, и определенно стоит посмотреть в любом направлении.

1 голос
/ 09 марта 2014

Я бы предложил использовать LVM в качестве абстрактного слоя для файловой системы БД. Это позволит получить преимущества локальных снимков, которые напоминают «горячее» резервное копирование. Снимки LVM позволяют получать результаты, аналогичные EBS, с преимуществом их использования на любом компьютере (не только на основе Amazon).

Еще одним плюсом является то, что LVM может использовать горячее изменение размера, что особенно удобно, когда вам нужно минимальное время простоя и необходимо увеличить дисковое пространство на лету ( не рекомендуется , но возможно в определенных сценариях)

1 голос
/ 19 мая 2010

Основная проблема, которую я испытываю, - полагаться на моментальные снимки EBS для резервного копирования базы данных на том уровне, на котором они работают. Снимки работают на диске на очень низком уровне и снимают изображение независимо от состояния приложений, пишущих на него. Теоретически ваш резервный образ может быть в середине транзакции или чего-то такого, что может сделать его несколько неловким для восстановления в случае наступления этого времени.

0 голосов
/ 18 января 2012

Вы могли бы рассмотреть возможность использования Amazon RDS для управления вашими базами данных - он работает так же, как стандартный сервер MySQL, и тогда вы можете обвинить Amazon в случае сбоя (не будет). Кроме того, они регулярно выполняют резервное копирование и исправление сервера. Я перенес установку Wordpress и vBulletin, и это заняло, может быть, час.

Только мои 2 ¢!

...