В чем разница между XtraBackup и rsync?

11

Да, я собираюсь обуздать их обоих ... Однако я хотел бы знать ...

  • Что делает XtraBackup сверх rsync -ac src dest?
  • Что такого особенного в XtraBbackup?
  • Как XtraBackup взаимодействует с mysqld?
randomx
источник
1
Это один из тех вопросов, которые я слышал о XtraBackup, но боюсь задавать вопросы о ледоколе. Я люблю эти типы вопросов !!! +1 !!!
RolandoMySQLDBA
1
@RolandoMySQLDBA: Мне нравится провоцировать мысли и заставлять людей делиться знаниями. Вот так мы поправляемся, верно? Быть одиноким рейнджером не очень весело. :-)
randomx

Ответы:

16

rsync - это просто побитовая побайтная копия данных с места на другое. Вы бы выполнили несколько rsyncs до последнего rsync, что очень быстро. Затем вы должны полностью отключить MySQL и выполнить еще одну rsync.

XtraBackup - это всеобъемлющий инструмент, который ведет себя как rsync, но имеет целенаправленную цель в жизни. Он может начать с копирования всех данных InnoDB и табличных пространств. Он имеет возможность создавать контрольные точки внутри и выполнять аварийное восстановление InnoDB на месте, чтобы обеспечить идеальное резервное копирование на определенный момент времени. XtraBackup также имеет дополнительную функцию, которая позволяет создавать инкрементные резервные копии. Еще одной дополнительной функцией является создание файлов журналов InnoDB, также созданных с помощью восстановления после сбоя на месте. Существует также некоторое программное обеспечение-обертка, обеспечивающее замороженное копирование таблиц MyISAM.

Оба метода великолепны. XtraBackup просто внедряет транзакционные возможности InnoDB в большую часть начального копирования. Xtrabackup создает файлы, которые могут быть помещены в установленную инфраструктуру MySQL. Честно говоря, XtraBackup предоставляет инструментальное резервное копирование и материализованные, очень удобные файлы InnoDB.

Использование rsync заставляет вас управлять процессом копирования несколько раз и завершать его отключением mysql, требуя одного вмешательства rsync.

Использование одного над другим может быть личным предпочтением. Необходимо признать одну вещь: XtraBackup делает резервные копии, которые несколько больше, чем скопированные данные. Я оставляю выбор метода читателю этого вопроса.

Я предпочитаю rsync, потому что он прост в использовании, я могу определить конкретный момент времени до начала процесса, у меня также есть полный контроль над блокировкой или выключением mysqld, когда такое управление может быть выполнено, и в любом порядке, который я назначу ,

Оба стиля резервного копирования имеют одну общую черту: с XtraBackup фактический момент времени является движущейся целью до завершения процесса резервного копирования, и вам нужно доверять XtraBackup (пока 200 000 загрузок. Facebook является одним из крупнейших пользователей это. Это заработало много доверия). Другими словами, если я запускаю XtraBackup в полночь, а резервное копирование длится до 2:20, то фактический момент времени резервного копирования - 2:20. Использование rsync имеет ту же проблему с движущейся целью, потому что вы должны выполнить несколько rsync вручную, а затем определить, когда следует выполнить «остановку mysql службы» до окончательного rsync.

Эти методы отличаются тем, что mysqld должен быть отключен с помощью метода rsync, тогда как XtraBackup действует независимо от mysqld. Фактически, XtraBackup не очень сильно взаимодействует с mysqld, за исключением случаев работы с таблицами MyISAM через программу-оболочку. XtraBackup пытается создать полностью функциональные файлы данных и журналов InnoDB, используя операции механизма хранения InnoDB, отличные от mysqld.

Выключение mysql очень необходимо для метода rsync по очень важной причине: буферный пул InnoDB может содержать «грязные страницы», которые представляют собой страницы данных и индексов (1 страница = 16 КБ), которые не были записаны обратно на диск. Использование rsync не фиксирует ожидающие изменения данных в пуле буферов InnoDB. Чтобы ускорить завершение работы mysqld для окончательного rsync, выполните эту команду:

SET GLOBAL innodb_max_dirty_pages_pct = 0;

Эта команда позволит свести к минимуму количество грязных страниц. Эта команда должна быть выполнена примерно за час до того, как вы выполните метод резервного копирования rsync. Это может даже помочь XtraBackup, хотя XtraBackup не требует завершения работы mysql.

RolandoMySQLDBA
источник