![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эта секция объясняет приготовления, в которых вы нуждаетесь для создания
резервных копий с MySQL Enterprise Backup, типичный цикл
backup-verify-restore и различные сценарии для использования MySQL Enterprise
Backup. Это также включает типовые команды и вывод показывая вам, как
использовать mysqlbackup в различных ситуациях.
Эта секция обрисовывает в общих чертах некоторые приготовления,
необходимые, прежде чем можно будет начать работать с
MySQL Enterprise Backup. Перед поддержкой конкретного сервера базы данных впервые, соберите
некоторую информацию и используйте ее, чтобы принять некоторые решения
планирования, как обрисовано в общих чертах в следующей таблице. Таблица 4.1. Необходимая информация,
чтобы зарезервировать базу данных Информация Где найти Как ее использовать Путь к конфигурационному файлу MySQL. Системные местоположения по умолчанию, жестко заданные параметры
приложений по умолчанию или опция
Предпочтительный способ передать конфигурационную информацию базы
данных mysqlbackup состоит в том,
чтобы использовать опцию
Порт MySQL. Конфигурационный файл MySQL или стартовый скрипт
mysqld. Используется, чтобы соединиться с экземпляром базы данных во время
операций резервного копирования. Определен через опцию
Путь к каталогу данных MySQL. Конфигурационный файл MySQL или стартовый скрипт
mysqld. Используется, чтобы восстановить файлы от экземпляра
базы данных во время операций резервного копирования и скопировать файлы
назад в базу данных во время операции восстановления.
Автоматически восстановлен от соединения с базой данных. ID и пароль привилегированного
пользователя MySQL. Вы делаете запись этого во время установки ваших собственных баз
данных или получаете ее от DBA, поддерживая базы данных, которыми
вы не владеете. Определен опцией Путь, под которым можно сохранить данные резервного
копирования или метаданные, временно или постоянно. Вы выбираете это. Посмотрите
раздел 4.1.3. В целом этот каталог должен быть пустым для
mysqlbackup, чтобы писать данные в него.
Владелец и данные полномочий для файлов (для систем
Linux, Unix и OS X). В каталоге данных MySQL. Если вы выполняете резервную копию и восстанавливаете с использованием
другого пользователя OS, чем тот, который управляет сервером, эта информация
могла бы стать важной. Посмотрите
раздел 4.2.1. Размер файлов журнала отката InnoDB. Вычислен из значений переменных конфигурации
Нужно только, если вы выполняете возрастающие резервные копии,
используя опцию
Уровень, по которому произведены
данные журнала отката. Вычислено из числа последовательности
логических операций InnoDB в различных моментах времени.
Используйте технику, объясненную для опцию
Надо только, если вы выполняете возрастающие резервные копии,
используя
mysqlbackup соединяется с сервером MySQL,
используя параметры, поставляемые опциями Минимальные привилегии для пользователя MySQL, с которым
mysqlbackup работает с сервером, включают: Чтобы создать пользователя MySQL ( Следующие дополнительные привилегии требуются для того, чтобы
использовать определенные функции MySQL Enterprise Backup: Для использования
transportable tablespaces (TTS), чтобы резервировать и
восстановить таблицы InnoDB: Для создания резервных копий на магнитную ленту, используя
System Backup to Tape (SBT) API: Для работы с зашифрованными таблицыми InnoDB:
Для поддержки и восстановления созданных пользователями
таблиц не-InnoDB: Для применения архивирования журнала отката для резервных копий: Установите эти дополнительные привилегии, если вы используете функции,
которые их требуют. Чтобы установить их все, сделайте в Для привилегий, требуемых для использования MySQL Enterprise Backup с
Group Replication, см. главу 9. Следующие дополнительные привилегии могли бы также требоваться
после модернизации сервера: Используя
MySQL Enterprise Backup 8.0.19 или позже впервые
на MySQL Server, который был модернизирован от
8.0.18 или ранее и был поддержан MySQL Enterprise Backup
: Предоставьте эти привилегии, делая эти типовые запросы в
mysql: Если вы работаете с Group Replication с несколькими ведущими,
удостоверьтесь, что эти привилегии предоставляют на всех основных
узлах, см. также главу 9. Эти привилегии для попытки мигрировать таблицу
Используя MySQL Enterprise Backup 8.0.12
или позже впервые на MySQL Server, который был
модернизирован от 8.0.11 или ранее и был поддержан MySQL Enterprise Backup
: Предоставьте эти привилегии, делая эти типовые запросы в
mysql: Если вы работаете с Group Replication с несколькими ведущими,
удостоверьтесь, что эти привилегии предоставляют на всех основных
узлах, см. также главу 9. Эти привилегии нужны для попытки мигрировать таблицу
Выполняя впервые резервную копию
через SBT API с MySQL Enterprise Backup
8.0.21 или позже на MySQL Server, который был
модернизирован от 8.0.20 или ранее и был поддержан MySQL Enterprise Backup
через SBT API
: Предоставьте эти привилегии, делая эти типовые запросы в
mysql: Если вы работаете с Group Replication, удостоверьтесь, что эти привилегии
предоставляют на всех основных узлах, см. также
главу 9. Эти привилегии нужны для попытки мигрировать таблицу
Удостоверьтесь что предел Большинство операций mysqlbackup,
резервное копирование файлов, запись данных или метаданных, обращаются к
определяемому каталогу, называемому
резервным каталогом. См. описание для
Выберите заранее для этого каталога местоположение в файловой системе с
достаточным местом, это может быть даже удаленный сервер.
Вы определяете путь к этому каталогу с помощью опции
При использовании резервного каталога в качестве местоположения, чтобы
сохранить ваши резервные копии, предпочтительно держать каждую резервную
копию в подкаталоге с меткой времени под главным резервным каталогом.
Чтобы заставить mysqlbackup
создать эти подкаталоги автоматически, определите опцию
Чтобы иллюстрировать основные шаги в создании и использовании резервной
копии, рассмотрим как выполнить полное резервное копирование, проверим его, а
затем вернем его на сервер. Linux и Unix-системы:
mysqlbackup
не делает запись принадлежности файла или разрешений файлов, которые
резервируются. Чтобы гарантировать отсутствие проблемы разрешения файла и то,
что сервер, который зарезервирован, будет восстановлен и перезапущен успешно,
настоятельно рекомендовано выполнять mysqlbackup
тем же самым пользователем OS, который управляет сервером MySQL (как правило,
это Для резервных копий mysqlbackup
должен управлять пользователь, который может прочитать все каталоги и файлы
сервера. Чтобы удовлетворить это требование, пользователь OS, который
управляет mysqlbackup, должен, например, быть
владельцем группы файлов сервера и каталогов (как правило,
Для восстановления, если mysqlbackup
не управляет тот же самый пользователь, который управляет сервером, может
быть очень трудно гарантировать, что у сервера есть доступ ко всем
восстановленным файлам сервера, особенно в случае онлайн-восстановления, где
сервер должен быть в состоянии получить доступ к файлам немедленно после
того, как они восстановлены. Для офлайнового восстанавления
вы, возможно, должны были бы, например, задать В следующем примере мы поддерживаем весь MySQL к единственному файлу,
используя команду Вывод повторяет все параметры, используемые операцией резервного
копирования, включая несколько, которые восстанавливаются, автоматически
используя соединение с базой данных. Уникальный идентификатор для этого
задания резервного копирования зарегистрирован в специальных таблицах,
которые mysqlbackup составляет в экземпляре
MySQL, позволяя вам контролировать продолжительные резервные копии и
информацию о предыдущих резервных копиях. Секция окончательного результата
повторяет местоположение данных резервного копирования и предоставляет
значения LSN, которые вы могли бы
использовать, когда вы выполняете
инкрементное резервное
копирование в следующий раз после
полного резервного копирования,
которое было сделано. Можно проверить целостность резервной копии, используя команду
Кроме того, можно также проверить, что резервная копия была успешна,
восстановив данные резервного копирования на ином сервере и запустив
демон MySQL (mysqld)
на новом каталоге данных. Можно тогда выполнить запросы Не пытайтесь проверить резервную копию при помощи
резервного каталога
как каталога данных, чтобы запустить сервер MySQL. Это грохнет сервер и могло
бы также испортить вашу резервную копию. См. детали в
приложении A. Чтобы восстановить MySQL из резервной копии на сервер базы данных: Закройте сервер базы данных. Удалите все файлы в каталоге данных сервера. Также удалите все файлы в
каталогах, определенных опциями
Используйте, например, команду
В примере ниже единственное резервное копирование файлов, созданное в
примере, данном в разделе 4.2.2,
восстановлено, используя команду
Теперь оригинальный каталог базы данных восстановлен из резервной копии.
Старт восстановленного сервера.
Когда следующие параметры настройки InnoDB отличаются на поддерживаемом
и восстановленном сервере, важно сформировать восстановленный сервер с
параметрами настройки от поддержанного сервера (иначе, ваш восстановленный
сервер не может запуститься): Если вы не уверены в тех параметрах настройки для вашего поддержанного
сервера, они были на самом деле сохранены в файле
В зависимости от того, как вы собираетесь запустить
восстановленный сервер, вы, возможно, должны были бы приспособить значение
собственность восстановленного каталога данных. Например, если сервер будет
запущен пользователем Вы теперь готовы запустить восстановленный сервер базы данных.
Для большего количества обсуждений того, как выполнить различные варианты
восстановления, посмотрите раздел 5.1. Чтобы избежать получения большого количества резервных файлов, чтобы
отслеживать, сохранить и транспортировать,
mysqlbackup удобно создает резервные копии в
единственном файле. Это может также упаковать существующий резервный каталог
в единственный файл, распаковать единственный файл назад к резервному
каталогу, перечислить содержание резервной копии, проверить содержание
единственного резервного файла по вложенным контрольным суммам или извлечь
единственный файл в дерево каталогов. Для синтаксиса соответствующих опций
mysqlbackup см.
раздел 20.9. Дополнительно: В то время как
mysqlbackup
может также создать директивную резервную копию (см. описание команды
Поскольку резервное копирование файлов может передаваться по каналу
к другому процессу, такому как резервное копирование на магнитную ленту или
команда, можно использовать технику, чтобы поместить резервную копию на
другое устройство хранения данных или сервер и избежать значительных издержек
хранения на оригинальном сервере базы данных. Чтобы создать резервное копирование файлов, используйте команду
Пример 4.1. Резервное копирование
файлов в абсолютный путь Эта команда создает единственный образ резервной копии на данном
абсолютном пути. Это все еще требует Пример 4.2. Резервное копирование
файлов в относительный путь Когда относительный путь вместо абсолютного пути поставлялся опцией
Пример 4.3. Резервное копирование
файлов на стандартный вывод Следующая команда сбрасывает вывод на стандартный вывод.
Каталог, определенный с опцией Пример 4.4. Преобразовывает существующий резервный
каталог в единственный образ Каталог Пример 4.5. Извлекает существующий
образ, чтобы сделать копию каталога Содержимое образа распаковано в
Пример 4.6. Список файлов
из резервной копии Содержимое образа перечисляется в текстовом виде. Каждая строка указывает
на запись файла или каталога. Пример 4.7. Проверка резервного копирования файлов Следующая команда проверяет, что резервное копирование файлов не
испорчено, не усечено и не повреждено, сверяя значение
контрольной суммы для каждой страницы данных в резервной копии. Пример 4.8. Извлечение резервной
копии файлов в текущий каталог Следующая команда извлекает все содержание из однофайловой резервной
копии файлов в текущий рабочий каталог. Пример 4.9. Извлечение резервной
копии файлов в резервный каталог Следующая команда извлекает все содержание из однофайловой резервной
копии файлов в каталог, заданный опцией Пример 4.10. Выборочная распаковка Да, так можно! Следующая команда извлекает единственный файл
Следующая команда извлекает файл
Следующая команда сбрасывает содержание
Пример 4.11. Выборочное извлечение единственного каталога Следующая команда извлекает единственный каталог
Пример 4.12. Работа с абсолютными путями Так как абсолютные пути извлечены к тем же самым путям в местной
системе, это могло быть проблемой, если вы не имеете разрешение на запись
для этого пути. Можно переотобразить абсолютные пути следующим образом: Первая команда извлекает все абсолютные пути к каталогу
Чтобы ограничить издержки хранения на сервере базы данных, можно передать
данные резервного копирования иному серверу, никогда не храня их в местном
масштабе. Можно достигнуть этого с однофайловым резервным копированием.
Чтобы послать резервную копию файлов в стандартный вывод, используйте команду
Пример 4.13. Резервное копирование
файлов на удаленный хост Следующая команда передает резервную копию как вывод удаленному хосту,
чтобы записать под именем файла
Для простоты вся связь и другие необходимые опции, как предполагается,
определяются в конфигурационном файле по умолчанию.
Пример 4.14. Резервное копирование
файлов на удаленный сервер MySQL Следующая команда передает резервную копию как единственный резервный
файл, который будет восстановлен на удаленном сервере MySQL: Пример 4.15. Передача резервного
каталога удаленному серверу MySQL Следующая команда передает резервный каталог как единственный резервный
файл, который будет восстановлен на удаленном сервере MySQL: Лентопротяжные устройства это доступные устройства хранения данных большой
емкости для данных резервного копирования. MySQL Enterprise Backup
может взаимодействовать с программным обеспечением управления (MMS),
например, Oracle Secure Backup (OSB) для резервирования и восстановления.
Программное обеспечение управления должно поддерживать интерфейс System
Backup To Tape (SBT) Version 2 или выше. Для получения информации о выполнении резервных копирований на магнитную
ленту в сочетании с продуктами MMS, такими как Oracle Secure Backup, см.
главу 11. MySQL Enterprise Backup поддерживает облачное резервирование.
Только однофайловое резервное копирование может быть создано и восстановлено
от облачного хранилища. Все опции mysqlbackup,
совместимые с операциями единственного файла (включая, например,
incremental,
compression,
partial и
encryption),
могут использоваться с облачными резервными копиями. См. приложение B
для некоторых ограничений относительно поддержки облачного хранилища
mysqlbackup. MySQL Enterprise Backup понимает следующие типы облачных хранилищ: Oracle Cloud Infrastructure (OCI) Object Storage. OpenStack Swift или совместимые услуги хранения объектов. Amazon Simple Storage Service (S3) или совместимые
услуги хранения объектов. GCP object storage. Облачная резервная копия создается, используя возможности облака для
mysqlbackup, которые детально описаны в
разделе 20.15.
Вот некоторые типовые команды для создания облачной резервной копии: Пример 4.16. Создания облачной
резервной копии на Oracle Cloud Infrastructure Object Storage Этот пример создает облачную резервную копию в Oracle Cloud
Infrastructure (OCI) Object Storage, используя
Pre-Authenticated Request (PAR) URL. Пример 4.17. Создания инкрементного
облачного резервного копирования в Oracle Cloud Infrastructure Этот пример создает возрастающую облачную резервную копию в
Oracle Cloud Infrastructure (OCI) Object Storage с применением
Pre-Authenticated Request (PAR) URL. Пример 4.18. Создание облачной
резервной копии на OpenStack Пример 4.19. Создание облачной
резервной копии на Amazon S3 Bucket Этот пример создает облачную резервную копию в Amazon S3 bucket. Пример 4.20. Создание инкрементного
резервного копирования в облаке Amazon S3 Bucket Этот пример создает инкрементное резервное копирование в облаке
на Amazon S3 bucket. Пример 4.21. Создание облачной
резервной копии в GCP Storage Service Этот пример создает облачную резервную копию в GCP storage service. Облачная резервная копия всегда использует один поток записи. Кроме того, См. раздел 5.2
о том, как восстановить образ резервной копии из облачного хранилища. Большинство стратегий резервного копирования начинается с полной резервной
копии сервера MySQL, из которой можно восстановить все базы данных и таблицы.
После того, как вы создали
полное резервное копирование, вы могли бы выполнить
возрастающие резервные копии
(которые меньше и быстрее) для следующих нескольких резервных задач.
Вы делаете полное резервное копирование периодически,
чтобы начать цикл снова. Для типовых команд для того, чтобы сделать полное резервное копирование,
посмотрите раздел 4.2.2. Эта секция обрисовывает в общих чертах некоторые вещи, которые надо
рассмотреть, выбирая стратегию создания полного резервного копирования.
Как мы будем видеть, такие факторы как скорость и удобство важны
для ваших решений. Для ясности примеры в этом руководстве часто показывают некоторые
параметры командной строки, которые используются с командами
mysqlbackup. Для удобства и последовательности
можно включить те варианты, которые остаются неизменными для большинства
заданий резервного копирования в секцию Для удобства опция Если вы действительно используете единственный резервный каталог (то есть,
если вы опускаете опцию Для возрастающих резервных копий, которые используют опцию
Если ваш объем данных InnoDB небольшой или если ваша база данных так
занята, что высокий процент данных изменяется между резервными копиями,
вы могли бы хотеть делать полное резервное копирование каждый раз.
Однако, можно обычно сэкономить время и память, делая
полное резервное копирование, а затем несколько возрастающих промежуточных
резервных копий, как описано в
разделе 4.3.3. Создание сжатой резервной копии может сэкономить вам значительное место
и уменьшить использование I/O. С методом сжатия LZ4 издержки
обработки сжатия довольно низкие. В случаях, когда резервные копии базы
данных перемещаются от более быстрой дисковой системы, где активные файлы
базы данных находятся, к возможно более медленному хранилищу, сжатие будет
часто значительно ниже полного времени резервного копирования.
Это может закончиться уменьшением времени восстановления.
В целом мы рекомендуем сжатие LZ4 для большинства пользователей, поскольку
основанные на LZ4 резервные копии часто делаются быстрее.
Однако, проверьте MySQL Enterprise Backup в своей среде, чтобы определить то,
что является самым эффективным подходом. Для большего количества обсуждений
сжатых резервных копий посмотрите
раздел 4.3.4. Если объем данных по вашему серверу MySQL остается неизменным со временем,
можно увеличить скорость и уменьшить необходимое место в памяти для
регулярных резервных копий, поддержав не все данные сервера каждый раз, а
только изменения данных, которые происходили со временем.
Для этого после создания сначала полного резервного копирования, которое
содержит все данные, можно сделать одно из следующего: Выполнение дифференциального резервного копирования.
Каждое дифференциальное
резервное копирование включает все изменения, внесенные в данные, начиная
с последнего полного резервного копирования. Чтобы восстановить данные до,
например, времени Выполните серию инкрементных резервных копий
Каждая инкрементная резервная
копия включает только изменения начиная с предыдущей резервной копии,
которая самостоятельно может быть полным резервным копированием или
инкрементным резервным копированием. Первая резервная копия в возрастающем
ряду это всегда дифференциальное резервное копирование, но после этого каждая
инкрементная резервная копия содержит только изменения, внесенные начиная с
того последнего инкрементного резервного копирования.
Каждое последующее инкрементное резервное копирование таким образом обычно
меньше в размере, чем дифференциальное резервное копирование и быстрее,
это позволяет вам делать очень частые возрастающие резервные копии, а затем
позволяет вам вернуть базу данных более точному моменту времени при
необходимости. Однако восстановление данных с возрастающими резервными
копиями могло бы занять больше времени и больше работы:
в целом, чтобы восстановить данные до, например, времени MySQL Enterprise Backup понимает возрастающее и дифференциальное резервное
копирование. Необходимо выбрать, какую стратегию резервного копирования
принять, смотря на такие факторы как то, сколько памяти вы имеете, как быстро
необходимо быть в состоянии восстановить данные и так далее. MySQL Enterprise Backup рассматривает дифференциальное резервное
копирование как особый случай инкрементного резервного копирования, у
которого есть полное резервное копирование как его основа.
Чтобы создать дифференциальное резервное копирование, просто следуйте
инструкциям ниже для выполнения возрастающих резервных копий и
удостоверьтесь, что вы определяете полное резервное копирование как основу
вашего инкрементного резервного копирования,
необходимо также проигнорировать любые инструкции, которые относятся только к
обработке многочисленных возрастающих резервных копий. MySQL Enterprise Backup 8.0.17 и позже
: можно создать дифференциальное резервное копирование, используя
опцию См. раздел 20.7
для описаний опций mysqlbackup, используемых
для возрастающих резервных копий. Инкрементное резервное копирование
позволено с одним из этих двух вариантов:
Создавая инкрементное резервное копирование, необходимо указать
mysqlbackup на момент времени предыдущего
полного резервного копирования или инкрементного резервного копирования.
Для удобства можно использовать опцию
Чтобы подготовить данные резервного копирования, которые будут
восстановлены, вы объединяете все возрастающие резервные копии с оригинальным
полным резервным копированием. Как правило, вы выполняете новое полное
резервное копирование после определенного промежутка времени,
после которого можно отказаться от более старых данных об
инкрементном резервном копировании. Опция
Изменения таблиц InnoDB определяются на основе содержания
журнала отката Файлы журнала отката работают как кольцевой буфер с более старыми
изменениями, переписываемыми по мере того, как происходят новые операции
DML. Поэтому необходимо взять новые возрастающие резервные
копии по предсказуемому графику, продиктованному размером файлов журнала
и размером данных, произведенных для рабочей нагрузки.
Иначе журнал отката не мог бы уйти назад достаточно далеко, чтобы сделать
запись всех изменений с предыдущего инкрементного резервного копирования,
в этом случае mysqlbackup
решит, что не может продолжать и возвратит ошибку.
Ваш резервный сценарий должен быть в состоянии зафиксировать эту ошибку и
затем выполнить инкрементное резервное копирование с опцией
Например, вот так: Чтобы вычислить размер журнала отката, дайте команду
Значение InnoDB LSN
соответствует числу байтов, написанных в журнал отката.
Чтобы проверить LSN в какой-то момент времени, дайте команду
Этот тип инкрементного резервного копирования не настолько
игнорирует низкие значения
Чтобы гарантировать, что значения LSN совпадают точно между
последовательными возрастающими резервными копиями, рекомендуется, чтобы вы
всегда использовали опцию
Чтобы определить, практичен ли этот тип инкрементного резервного
копирования и эффективен ли он для конкретного случая MySQL: Измерьте, как быстро данные изменяются в файлах журнала отката
InnoDB. Проверьте периодически LSN, чтобы
решить, сколько данных накапливается в течение некоторого числа
часов или дней. Сравните темп накопления журнала отката с размером файлов журнала
отката. Используйте это отношение, чтобы видеть, как часто взять инкрементное
резервное копирование, чтобы избежать вероятности провала резервной копии,
потому что исторические данные недоступны в журнале отката.
Например, если вы производите 1 ГБ данных журнала отката в день и
объединенный размер ваших файлов журнала отката составляет 7 ГБ, вы намечали
бы возрастающие резервные копии более часто, чем один раз в неделю.
Вы могли бы выполнять возрастающие резервные копии каждый день или два, чтобы
избежать потенциальной проблемы, когда внезапный всплеск
обновлений произвел больше данных журнала отката, чем обычно. Определите эффективность времени
инкрементного резервного копирования, используя опции
Резервное сжатие (то есть использование
опций сжатия)
не поддерживается, когда вы выполняете возрастающие резервные копии только с
журналом отката. Если резервное сжатие важно для вас, не используйте опцию
For MySQL Enterprise Backup 8.0.18 и выше:
mysqlbackup понимает создание
возрастающих резервных копий, используя функциональность отслеживания
страницы MySQL Server, которой mysqlbackup
ищет измененные страницы в файлах данных InnoDB, которые были изменены,
начиная с последней резервной копии и затем копирует их.
В целом возрастающие резервные копии, используя отслеживание страницы
быстрее, чем другие виды возрастающих резервных копий, выполненных
mysqlbackup, если большинство данных в базе
данных не было изменено. Использование этой функции требует, чтобы следующее
было сделано на сервере, прежде чем основная резервная копия для
инкрементного резервного копирования будет сделана: Установите компонент Начните отслеживание страницы со следующей определенной
пользователями функцией (UDF): Значение LSN, начиная с которого были прослежены измененные страницы,
возвращено этой UDF: Можно остановить отслеживание страницы со следующим UDF: Вышеупомянутые UDF для отслеживания страницы
требуют привилегии Когда опция Отслеживание страницы функционирует правильно на сервере, и это
было позволено (с помощью Число измененных страниц составляет меньше 50% общего количества
страниц, если это не так mysqlbackup
бросает ошибку, когда
mysqlbackup должен быть запущен с
достаточной памятью, чтобы обработать все отслеженные страницы в памяти.
Если недостаточно памяти, mysqlbackup
бросает ошибку и затем завершается. Вот некоторые рекомендации для проверки
наличия достаточной памяти для операции: Значение по умолчанию 400 [MB] для опции
Отслеживание страниц использует буферы памяти, формируемые для
mysqlbackup для сортировки страниц.
Определите количество буферов, необходимых для сортировки страницы: Прежде, чем запустить резервирование, выполните следующий запрос
на сервере, чтобы определить Выполните такой запрос на сервере, чтобы получить число измененных
страниц, с того момента, когда основная резервная копия была создана
(повторите вопрос, если это возвращает отрицательную величину): Каждой измененной странице нужны 8 байтов в буфере сортировки.
Так что умножьте У каждого буфера есть предел в 16 мегабайтов (16777216 байтов).
Так что разделите число байтов, необходимых для буферов сортировки,
вычисленное на последнем шаге, на 16777216 и округлите результат до
следующего целого числа, чтобы получить количество буферов,
необходимых для сортировки. Удостоверьтесь, что для опции
Предел памяти по умолчанию 400 МБ должен быть в состоянии поддержать
до 25 буферов (до 18 буферов только для облачных резервных копий),
увеличьте предел памяти, если вам нужно больше буферов, чем это, изменяя
значение Когда опция Оптимистическое инкрементное резервное копирование, с другой стороны,
ищет только измененные страницы в файлах данных InnoDB, которые были
изменены, начиная с последней резервной копии, таким образом сэкономив
некоторое ненужное время просмотра. Оптимистическое инкрементное резервное
копирование может быть выполнено, определив
Так как эта особенность использует время изменения файлов в
каталоге данных сервера, две вещи должны оставаться неизменными, начиная с
предыдущей резервной копии: (1) системное время на сервере и (2)
местоположение каталога данных. Иначе резервная копия могла бы потерпеть
неудачу или могло бы быть произведено непоследовательное
инкрементное резервное копирование. Оптимистические возрастающие резервные копии не могут быть выполнены с
Если применена опция Для этих и других случаев, в которых оптимистическое инкрементное
резервное копирование нежелательно, выполните инкрементное резервное
копирование полного просмотра или инкрементное резервное копирование,
используя отслеживание страницы (для MySQL Enterprise Backup 8.0.18
и позже). Посмотрите раздел
4.1.2 для привилегий, требуемых для
mysqlbackup, чтобы выполнить оптимистическое
инкрементное резервное копирование. Также посмотрите
здесь о том, как
использовать две особенности вместе в расписании резервного копирования. For MySQL Enterprise Backup 8.0.17 и ранее
: резервная копия полного просмотра это метод по умолчанию для
возрастающих резервных копий, который используется, если никакое значение
не определяется для Особенность инкрементного резервного копирования, прежде всего
предназначается для таблиц InnoDB или не-InnoDB таблиц, которые используются
только для чтения или редко обновлены.
Возрастающие резервные копии обнаруживают изменения на уровне
страниц в
файлах данных InnoDB в противоположность строкам таблицы,
каждая страница, которая изменилась, резервируется целиком.
Таким образом экономии пространства и времени не точно пропорциональны
проценту измененных строк или колонок InnoDB. Для не-InnoDB файлов весь файл всегда включается в инкрементное резервное
копирование, это означает, что экономия ресурсов менее значительна, чем в
случае с таблицами InnoDB. Никакие двоичные файлы журнала не копируются в инкрементное резервное
копирование, если применена опция
the Эти примеры используют mysqlbackup,
чтобы сделать инкрементное резервное копирование сервера MySQL, включая все
базы данных и таблицы. Мы показываем две альтернативы: использование опции
С опцией Скажите mysqlbackup запросить
Дополнительно:
Для директивных резервных копий определите каталог предыдущей резервной
копии (полной или возрастающей) с
В следующем примере используется опция
В следующем примере выполняется инкрементное резервное копирование,
подобное показанному выше, но
оптимистичное. Дополнительно:
Используйте следующую команду, чтобы создать возрастающую директивную
резервную копию с использованием
Можно также использовать опцию
Число также зарегистрировано в файле
Чтобы создать образ инкрементного резервного копирования с
В следующем примере На регулярной основе, определенной по дате или объему деятельности
базы данных, делайте больше возрастающего или
дифференциального резервного копирования. Произвольно, периодически начинайте цикл снова, делая
полную несжатую или
сжатую резервную копию.
Как правило, этот этап происходит, когда можно заархивировать и убрать самые
старые данные резервного копирования. О том как восстановить вашу базу данных, используя возрастающие резервные
копии, посмотрите
раздел 5.1.3. Чтобы сэкономить дисковое пространство, можно сжать резервные файлы данных
InnoDB при помощи опции Резервное сжатие работает только для таблиц InnoDB. После того, как файлы
табличного пространства InnoDB сжаты во время резервной копии, они получают
расширение Когда есть неиспользуемое место в файле табличного пространства InnoDB,
весь файл копируется во время несжатой резервной копии. Выполните сжатую
резервную копию, чтобы избежать издержек хранения
для неиспользуемого места. Файлы журнала реле и двоичного журнала сжаты и сохранены с расширением
Вы не можете использовать опцию
Можно также выбрать алгоритм сжатия, чтобы использовать опцию
Это типовая команда для того, чтобы сделать сжатое
однофайловое резервное копирование: Дополнительно: Это типовая команда
для того, чтобы сделать сжатую директивную резервную копию: Это типовая команда для того, чтобы сделать сжатую и
подготовленную
директивную резервную копию: См. ограничение, которое
относится к сжатым резервным копиям в приложении B. По умолчанию все файлы в каталоге данных включены в резервную копию, чтобы
резервная копия включала данные из всех механизмов хранения MySQL, любых
сторонних механизмов хранения и даже любые файлы не базы данных в том
каталоге. Эта секция объясняет варианты, которые можно использовать, чтобы
резервировать выборочно или исключить данные. Есть различные способы создать различные виды частичной резервной копии с
MySQL Enterprise Backup: Включая или исключая определенные таблицы по их именам.
Это использует опции
Каждая таблица сравнена с регулярным выражением, определенным
Включая некоторые или все таблицы InnoDB, но не другие типы таблицы.
Это использует опцию Игнорирование файлов, которые присутствуют в каталоге данных MySQL, но
на самом деле не части MySQL. Это использует опцию
Достижение кратного числа эффектов выбора при помощи
комбинации вышеупомянутых вариантов. Выборочное резервирование таблиц InnoDB, используя
transportable
tablespaces (TTS). Это использует опции
Для получения дополнительной информации синтаксиса обо всех включенных
вариантах посмотрите раздел
20.8. Как правило, частичную резервную копию более трудно восстановить,
чем полное резервное копирование, потому что данные резервного копирования не
могли бы включать необходимые взаимосвязанные части, чтобы составить полный
экземпляр MySQL. В частности у таблиц InnoDB есть внутренние ID и другие
значения данных, которые могут вернуться только тому же самому экземпляру,
но не иному серверу MySQL. Всегда полностью проверьте процедуру
восстановления любых частичных резервных копий, чтобы понять
соответствующие процедуры и ограничения. Следующее это некоторые образцы команды для частичных резервных копий. Включая все таблицы с именами, начинающимися с
emp: Взятие резервной копии всех таблиц кроме таблиц из баз данных
mysql и
performance_schema: Взятие резервной копии всех таблиц в базе данных
sales, но исключая таблицу с именем
hardware. Взятие резервной копии всех таблиц в базе данных
sales reps, но исключая таблицу с именем
euro-asia (специальные символы, например, пробелы
или тире поддерживаются частичными резервными опциями): Резервирование всех таблиц InnoDB: Можно также сделать сжатые
и другие виды резервных копий при помощи соответствующих вариантов команды. Информация в этом подразделе только для использования устаревшей опции
Как правило, частичную резервную копию более трудно восстановить, чем
полное резервное копирование, потому что данные резервного копирования не
могут включать необходимые взаимосвязанные части, чтобы составить полный
экземпляр MySQL. В частности у таблиц InnoDB есть внутренние ID
и другие значения данных, которые могут вернуться только тому же самому
экземпляру, но не иному серверу MySQL. Всегда полностью проверьте процедуру
восстановления любых частичных резервных копий, чтобы понять
соответствующие процедуры и ограничения. С опцией Частичная резервная копия с Для таблиц, хранимых InnoDB вне системного табличного пространства,
частичная резервная копия включает только те таблицы, имена которых
соответствуют регулярному выражению, определенному опцией
Эта операция требует таблиц, не учитываемых для сохранения в отдельных
файлах Таблицы InnoDB, составленные с выключенной опцией
Для каждой таблицы с файлом данных последовательность формы
Резервный каталог содержит файл журнала резервного копирования и копии
файлов данных InnoDB. ВАЖНО: Поскольку системное
табличное пространство InnoDB содержит метаданные о таблицах InnoDB от всех
баз данных, восстанавливая частичную резервную копию на сервере, который
включает другие базы данных, можно заставить систему потерять след тех таблиц
InnoDB в других базах данных. Всегда восстанавливайте частичные резервные
копии на новом экземпляре сервера MySQL без любых других таблиц InnoDB,
которые вы хотите сохранить. Пример 4.22. Создание несжатой
частичной резервной копии таблиц InnoDB В этом примере мы формировали MySQL так, чтобы у некоторых таблиц InnoDB
были свои собственные табличные пространства. Мы делаем частичную резервную
копию включая только те таблицы InnoDB в базе данных Запустите mysqlbackup с опцией
Подкаталог резервного каталога для базы данных
Пример 4.23. Создание сжатой частичной резервной копии Мы формировали MySQL так, чтобы у каждой таблицы InnoDB было свое
собственное табличное пространство. Мы делаем частичную резервную копию
включая только те таблицы InnoDB, имя которых начинается с Запустите mysqlbackup с опциями
Резервный каталог для базы данных Оптимистическая резервная копия это особенность улучшения работы для
поддержки и восстановления огромных баз данных, в которых только
небольшое количество таблиц часто изменяются. Во время горячего резервного копирования огромной базы данных
огромные файлы журнала отката могли быть произведены на сервере, когда
резервная копия происходит. Поскольку файлы журнала отката растут
быстрее, чем они могут быть обработаны
mysqlbackup, операция резервного копирования
может на самом деле потерпеть неудачу, когда
mysqlbackup не может догнать циклы журнала
отката, и LSN переписаны сервером, прежде чем они будут прочитаны
mysqlbackup. Кроме того, шаг
Оптимистическая резервная копия уменьшает проблемы, деля процесс
резервного копирования на две внутренних фазы, которые
очевидны для пользователей: Оптимистическая фаза: В этой первой фазе таблицы, которые
вряд ли будут изменены во время процесса резервного копирования (называемые
далее бездействующими таблицами), определенные
пользователем с опцией
Нормальная фаза: В этой второй фазе таблицы, которые не поддерживаются
в первой фазе (называемые занятыми таблицыми),
поддерживаются способом, подобным тому, как они обрабатываются в обычной
резервной копии: файлы InnoDB копируются сначала, затем другие
соответствующие файлы копируются или обрабатываются с различными
блокировками, применяемыми к базе данных в разное время.
Журналы отката, отмены и системное табличное пространство также
поддерживается в этой фазе. Оптимистическая резервная копия происходит каждый раз, когда используется
опция Оптимистическая резервная копия не может быть выполнена для
инкрементного резервного копирования или резервной копии, используя
transportable tablespaces (TTS). Не выполняйте операцию DDL на сервере параллельно с оптимистической
резервной копией или резервная копия потерпит неудачу. Следующие примеры иллюстрируют, как сделать
оптимистическую резервную копию. Пример 4.24. Оптимистическая резервная копия, используя опцию
В этом примере таблицы, которые были изменены с полудня 16 мая 2011,
рассматривают как занятые таблицы и поддерживают в нормальной фазе
оптимистической резервной копии, все другие таблицы
поддерживаются в оптимистической фазе: Пример 4.25. Оптимистическая резервная
копии, используя опцию В этом примере все таблицы рассматривают как бездействующие таблицы и
поддерживают в оптимистической фазе оптимистической резервной копии: Пример 4.26. Оптимистическая резервная
копии, используя опцию В этом примере таблицы в Когда вы используете обе опции Пример 4.27. Оптимистические и частичные резервные копии, используя
опции В этом примере таблицы в Используя совместно
оптимистическое резервное копирование и
оптимистическое инкрементное резервное копирование
в вашем расписании резервного копирования, можно ускорить резервные копии для
огромных баз данных, особенно когда только относительно небольшое количество
таблиц было изменено с определенного времени и не много таблиц изменяется на
частой основе. Ниже дана типовая последовательность команд, иллюстрирующих
еженедельное расписание резервного копирования, которое использует эти две
особенности, это также включает шаги для восстановления
данных к определенному дню. Опция Поддержание графика регулярного резервного копирования является важной
мерой для предотвращения потери данных. Эта секция обсуждает некоторые
простые средства для подготовки графика для MySQL Enterprise Backup. Linux и Unix-платформы: можно
настроить работу cron на системе для запланированного резервного копирования.
Есть два типа задач cron. Чтобы настроить пользовательскую работу cron,
которая принадлежит и управляется конкретным
пользователем, делают следующее: Войдите в систему как пользователь, который управляет MySQL
Enterprise Backup и используйте следующую команду, чтобы вызвать редактор
для создания (или изменения) crontab: В редакторе добавьте запись, подобную этой, к crontab,
затем сохраните свои изменения (удостоверьтесь, что содержание обеих строк
ниже появляется в одной строке в crontab): Эта запись crontab вызывает mysqlbackup,
чтобы создать резервную копию в каталоге
Чтобы настроить системную работу cron, которая принадлежит и управляется
Проверьте документацию своей платформы для получения дальнейшей информации
относительно различных способов настроить задачи cron
для различных типов графиков. Windows: используйте Task Scheduler.
Проверьте документацию на свою платформу Windows для инструкций. Когда системные администраторы пытаются настроить MySQL и MySQL Enterprise
Backup в окружающей среде, которая использует распределенную файловую систему
(DFS) или storage access network (SAN), сервер MySQL, каталог данных сервера,
MySQL Enterprise Backup и резервный каталог могут существовать на различных
физических серверах. Когда это происходит, на операции
mysqlbackup можно было бы повлиять.
Операция, которая, скорее всего, испытает негативное влияние, является
горячим резервным копированием, успех которого зависит от: Каждая страница файла данных последовательно копируется,
то есть, все байты на странице соответствуют тому же самому LSN. Никакая скопированная страница не более старая, чем время, которое
отмечает начало временной продолжительности, которую
резервная копия использует. Журнал отката последовательно копируется, означая, что непрерывный
сегмент журнала отката копируется, а именно все изменения с начала временного
периода, которого резервная копия должна касаться, до конца операции
резервного копирования. Каждый блок скопированного журнала отката
должен быть последовательным. Условие 1 легко достижимо с большей частью DFS или SAN.
Условие 2 может остаться невыполненным, даже когда условие 1 было
удовлетворено: например, mysqlbackup
мог скопировать все страницы табличного пространства правильно за исключением
одной страницы, для которой mysqlbackup
включал старую версию в копию. Если LSN той старой версии страницы будет
меньшим, чем LSN, увиденный в первый раз
mysqlbackup в начале процесса резервного
копирования, получающаяся резервная копия будет дефектной.
Этот пример показывает, что mysqlbackup
может быть проблемой при выполнении горячего резервного копирования, если это
видит записи файловой системы, выполняемые в правильном порядке,
то есть, порядке, в котором сервер выполнил их. Относительно условия 3, в отличие от страниц файла данных, блоки журнала
отката написаны последовательно, что означает, что условие 3 легче выполнить,
чем условия 1 и 2, особенно используя функцию архивации
журнала отката, доступную в MySQL Server 8.0.17. Однако, если
mysqlbackup достигает самого высокого LSN на
скопированных страницах файла данных прежде, чем столкнуться с концом журнала
отката, резервная копия терпит неудачу. Неудача происходит также, если
mysqlbackup читает испорченный блок журнала
когда-либо во время копирования журнала отката. Обе этих неудачи могут
произойти, если mysqlbackup не видит ту же
самую историю состояний файловой системы, как сервер MySQL. Поэтому, чтобы использовать mysqlbackup с
DFS или SAN, важно удостовериться, что
mysqlbackup видит все записи
файловой системы в том же самом порядке, как сервер MySQL их делает.
Условие, скорее всего, будет удовлетворено, когда
mysqlbackup и сервер MySQL будут работать на
том же самом сервере, но это условие вряд ли будет всегда выполняться,
когда это не так.
Глава 4. Резервирование сервера базы данных
4.1. Перед первой резервной копией
4.1.1. Соберите информацию о базе данных
--defaults-file
в стартовом скрипте
mysqld.--defaults-file
. Когда информация о связи и
формате данных доступна от конфигурационного файла, вы больше не должны
предоставлять отдельно большую часть упомянутой ниже информации.
--port
mysqlbackup.
Спецификация не необходима, если информация доступна от
конфигурационного файла MySQL.--password
mysqlbackup. Запрошен на терминале, если
опция --password
дана без аргумента пароля.innodb_log_file_size
и
innodb_log_files_in_group
.
Используйте технику, объясненную для опции
--incremental-with-redo-log-only
.--incremental-with-redo-log-only
вместо
--incremental
.
Размер журнала отката InnoDB и уровень поколения диктуют, как часто
необходимо выполнить возрастающие резервные копии.--incremental-with-redo-log-only
.--incremental-with-redo-log-only
вместо
--incremental
.
Размер журнала отката InnoDB и уровень поколения
диктуют, как часто необходимо выполнить возрастающие резервные копии.
4.1.2.
Предоставьте привилегии администратору резервного копирования MySQL
--user
и
--password
. Указанный
user
нуждается в определенных привилегиях.
Можно создать нового пользователя с ограниченным набором привилегий или
использовать административную учетку, например, root.
Вот привилегии, требуемые mysqlbackup:SELECT
на всех базах данных и таблицах для блокировок
таблицы, которые защищают резервные копии от несоответствия, вызванного
параллельными операциями DDL.BACKUP_ADMIN
на всех базах данных и таблицах.RELOAD
на всех базах данных и таблицах.SUPER
, чтобы включить и отключить регистрацию и
оптимизировать блокировку, чтобы минимизировать разрушение
обработки базы данных.REPLICATION CLIENT
, чтобы получить позицию
двоичного журнала,
которая сохранена резервной копией.PROCESS
, чтобы обработать
запросы с ALGORITHM = INPLACE
.CREATE
, INSERT
,
DROP
и UPDATE
на таблицах
mysql.backup_progress
и mysql.backup_history
, а
также SELECT
и ALTER
на
mysql.backup_history
.mysqlbackup
в этом примере) и задать вышеупомянутые привилегии для пользователя,
соединяющегося от localhost, сделайте в mysql
:
CREATE USER 'mysqlbackup'@'localhost' IDENTIFIED BY '
password
';
GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.*
TO `mysqlbackup`@`localhost`;
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE, SELECT, ALTER ON mysql.backup_history
TO 'mysqlbackup'@'localhost';
LOCK TABLES
для поддержки таблиц.
CREATE
для восстановления таблиц.DROP
для удаления таблиц, если восстановление терпит
неудачу по некоторым причинам.FILE
для восстановления таблиц
во внешних табличных пространствах за пределами каталога данных сервера.
CREATE
, INSERT
,
DROP
и UPDATE
на таблице
mysql.backup_sbt_history
.ENCRYPTION_KEY_ADMIN
,
чтобы позволить ротацию ключа шифрования InnoDB.LOCK TABLES
на всех схемах, содержащих созданные
пользователями не-InnoDB таблицы.
, чтобы вызвать
определенную пользователями функцию
INNODB_REDO_LOG_ARCHIVE
.
innodb_redo_log_archive_start()
mysql
:
GRANT LOCK TABLES, CREATE, DROP, FILE ON *.* TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_sbt_history
TO 'mysqlbackup'@'localhost';
GRANT ENCRYPTION_KEY_ADMIN ON *.* TO 'mysqlbackup'@'localhost';
GRANT INNODB_REDO_LOG_ARCHIVE ON *.* TO 'mysqlbackup'@'localhost';
ALTER
на mysql.backup_progress
.CREATE
, INSERT
и DROP
на
mysql.backup_progress_old
.CREATE
, INSERT
, DROP
и
ALTER
на mysql.backup_progress_new
.
GRANT ALTER ON mysql.backup_progress TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP ON mysql.backup_progress_old
TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_progress_new
TO 'mysqlbackup'@'localhost';
mysql.backup_progress
к более новому формату (см.
приложение F), они больше не необходимы после
первой операции резервного копирования MySQL Enterprise Backup 8.0.19
или позже на сервере, поэтому они могут быть отменены.CREATE
, INSERT
и DROP
на
mysql.backup_history_old
.CREATE
, INSERT
, DROP
и
ALTER
на mysql.backup_history_new
.
GRANT CREATE, INSERT, DROP ON mysql.backup_history_old
TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_history_new
TO 'mysqlbackup'@'localhost';
mysql.backup_history
к более новому формату (см.
приложение D), и они больше не необходимы после
первой операции резервного копирования MySQL Enterprise Backup 8.0.12
или позже, поэтому они могут быть отменены.ALTER
на mysql.backup_sbt_history
.CREATE
, INSERT
и
DROP
на mysql.backup_sbt_history_old
.CREATE
, INSERT
, DROP
и
ALTER
на mysql.backup_sbt_history_new
.
GRANT ALTER ON mysql.backup_sbt_history TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP ON mysql.backup_sbt_history_old
TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_sbt_history_new
TO 'mysqlbackup'@'localhost';
mysql.backup_sbt_history
к более новому формату (см.
приложение E), они больше не необходимы после
первой операции резервного копирования MySQL Enterprise Backup 8.0.21
или позже с использованием SBT API на сервере, поэтому
они могут быть отменены.MAX_QUERIES_PER_HOUR
не установлен для пользователя mysqlbackup,
чтобы получить доступ к серверу, или операции резервного копирования могут
неожиданно потерпеть неудачу.4.1.3.
Определите местоположение для резервного каталога
--backup-dir
.--backup-dir
.--with-timestamp
при запуске mysqlbackup.
4.2. Типичный цикл Backup/Verify/Restore
4.2.1. Пользователь OS для управления mysqlbackup
mysql
). Если это невозможно, обратите внимание
на следующие рекомендации:mysql
) как его основной или вторичной группы.umask
пользователю перед тем, как восстанавливать и урегулировать разрешения
восстановленных файлов, используя серию команд
chmod
и chown
, чтобы оригинальные разрешения для
файлов были воспроизведены.
4.2.2. Поддержка всего экземпляра MySQL
backup-to-image
, которая появляется в конце типовой команды.
Мы определяем часть информации о связи для базы данных, используя опции
--user
и --host
(и --password
, чтобы
mysqlbackup запросил пароль).
Местоположение и имя файла для единственного резервного копирования файлов
определяются, используя опцию
--backup-image
, а местоположение пустого каталога, чтобы
хранить временные файлы поставляется опцией
--backup-dir
.
$ mysqlbackup --user=mysqlbackup --password --host=127.0.0.1 \
--backup-image=/home/mysqlbackup/backups/my.mbi \
--backup-dir=/home/mysqlbackup/backup-tmpbackup-to-image
MySQL Enterprise BackupVer 8.0.16-commercial for linux-glibc2.12 on x86_64
(MySQL Enterprise - Commercial)
Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of
their respective owners.
Starting with following command line ...
mysqlbackup --user=mysqlbackup --password --host=127.0.0.1
--backup-image=/home/mysqlbackup/backups/my.mbi
--backup-dir=/home/mysqlbackup/backup-tmp backup-to-image
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'backup-to-image' run mysqlbackup
prints "mysqlbackup completed OK!".
190402 12:56:04 MAININFO: Starting to log actions.
Enter password:
190402 12:56:09 MAININFO: No SSL options specified.
190402 12:56:09 MAININFO: MySQL server version is '8.0.16-commercial'
190402 12:56:09 MAININFO: MySQL server compile os version is 'linux-glibc2.12'
190402 12:56:09 MAININFO: Got some server configuration information
from running server.
190402 12:56:09 MAININFO: Backup directory exists: '/home/mysqlbackup/backup-tmp'
190402 12:56:09 MAININFO: MySQL server version_comment is
'MySQL Enterprise Server - Commercial'
190402 12:56:09 MAININFO: Server is not a community server.
190402 12:56:09 MAININFO: KEF target path: '/home/mysqlbackup/backup-tmp/meta/keyring_kef'
190402 12:56:09 MAININFO: TDE Keyring service initialized.
190402 12:56:09 MAININFO: MEB logfile created at
/home/mysqlbackup/backup-tmp/meta/MEB_2019-04-02.12-56-09_image_backup.log
--------------------------------------------------------------------
Server Repository Options:
--------------------------------------------------------------------
datadir= /home/admin/bin/mysql-commercial-8.0.16/datadir/
innodb_data_home_dir =
innodb_data_file_path = ibdata1:12M:autoextend
innodb_log_group_home_dir = /home/admin/bin/mysql-commercial-8.0.16/datadir/
innodb_log_files_in_group = 2
innodb_log_file_size = 50331648
innodb_undo_directory = /home/admin/bin/mysql-commercial-8.0.16/datadir/
innodb_undo_tablespaces = 2
innodb_buffer_pool_filename = ib_buffer_pool
innodb_page_size = 16384
innodb_checksum_algorithm = crc32
--------------------------------------------------------------------
Backup Config Options:
--------------------------------------------------------------------
datadir = /home/mysqlbackup/backup-tmp/datadir
innodb_data_home_dir = /home/mysqlbackup/backup-tmp/datadir
innodb_data_file_path = ibdata1:12M:autoextend
innodb_log_group_home_dir = /home/mysqlbackup/backup-tmp/datadir
innodb_log_files_in_group = 2
innodb_log_file_size = 50331648
innodb_undo_directory = /home/mysqlbackup/backup-tmp/datadir
innodb_undo_tablespaces = 2
innodb_buffer_pool_filename = ib_buffer_pool
innodb_page_size = 16384
innodb_checksum_algorithm = crc32
Backup Image Path = /home/mysqlbackup/backups/my.mbi
190402 12:56:09 MAININFO: Unique generated backup id for this is 15542241696070511
190402 12:56:09 MAININFO: Creating 14 buffers each of size 16777216.
190402 12:56:09 MAININFO: Full Image Backup operation starts with following threads
1 read-threads6 process-threads1 write-threads
190402 12:56:09 MAININFO: Found checkpoint at lsn 19840686.
190402 12:56:09 MAININFO: Starting log scan from lsn = 19840512 at
offset = 32256 and checkpoint = 19840686 in file
/home/admin/bin/mysql-commercial-8.0.16/datadir/ib_logfile0.
190402 12:56:09 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/backup-my.cnf.
190402 12:56:09 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/meta/backup_create.xml.
190402 12:56:09 RDR1INFO: Starting to copy all innodb files...
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/ibdata1.
190402 12:56:09 RDR1INFO: Starting to copy all undo files...
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/undo_002.
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/undo_001.
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/sys/sys_config.ibd.
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/pets/cats.ibd.
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/mysql/backup_history.ibd.
190402 12:56:09 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/mysql.ibd.
190402 12:56:10 RDR1INFO: Completing the copy of innodb files.
190402 12:56:10 RDR1INFO: Requesting a dump of the InnoDB buffer pool
190402 12:56:10 RDR1INFO: Waiting for the dump of the InnoDB buffer
pool to complete
190402 12:56:10 RDR1INFO: The dump of the InnoDB buffer pool completed
190402 12:56:10 RDR1INFO: Binary Log Basename: '/home/admin/bin/mysql-commercial-8.0.16/datadir/binlog'
190402 12:56:10 RDR1INFO: Binary Log Index:'/home/admin/bin/mysql-commercial-8.0.16/datadir/binlog.index'
190402 12:56:10 RDR1INFO: Relay Channel:'group_replication_applier'
190402 12:56:10 RDR1INFO: Relay Log Basename: '/home/admin/bin/mysql-commercial-8.0.16/datadir/admin-XuBox-relay-bin-group_replication_applier'
190402 12:56:10 RDR1INFO: Relay Log Index:'/home/admin/bin/mysql-commercial-8.0.16/datadir/admin-XuBox-relay-bin-group_replication_applier.index'
190402 12:56:10 RDR1INFO: Relay Channel:'group_replication_recovery'
190402 12:56:10 RDR1INFO: Relay Log Basename: '/home/admin/bin/mysql-commercial-8.0.16/datadir/admin-XuBox-relay-bin-group_replication_applier-group_replication_recovery'
190402 12:56:10 RDR1INFO: Relay Log Index:'/home/admin/bin/mysql-commercial-8.0.16/datadir/admin-XuBox-relay-bin-group_replication_recovery.index'
190402 12:56:10 RDR1INFO: Starting to copy Binlog files...
190402 12:56:10 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/binlog.000001.
190402 12:56:10 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/binlog.000002.
190402 12:56:10 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/binlog.000003.
190402 12:56:10 RDR1INFO: Starting to lock instance for backup...
190402 12:56:10 RDR1INFO: No SSL options specified.
190402 12:56:10 RDR1INFO: The server instance is locked for backup.
190402 12:56:10 RDR1INFO: Starting to read-lock tables...
190402 12:56:10 RDR1INFO: No tables to read-lock.
190402 12:56:10 RDR1INFO: Opening backup source directory
'/home/admin/bin/mysql-commercial-8.0.16/datadir'
190402 12:56:10 RDR1INFO: Starting to copy non-innodb files in subdirs of
'/home/admin/bin/mysql-commercial-8.0.16/datadir'
190402 12:56:10 WTR1INFO: Adding database directory: datadir/mysql
190402 12:56:10 WTR1INFO: Adding database directory:
datadir/performance_schema
190402 12:56:10 RDR1INFO: Completing the copy of all non-innodb files.
190402 12:56:10 WTR1INFO: Adding database directory: datadir/pets
190402 12:56:10 WTR1INFO: Adding database directory: datadir/sys
190402 12:56:10 RDR1INFO: Requesting consistency information...
190402 12:56:10 RDR1INFO: Locked the consistency point for 3089 microseconds.
190402 12:56:10 RDR1INFO: Consistency point server_uuid
'a01aa59f-5567-11e9-ad69-08002759ceb5'.
190402 12:56:10 RDR1INFO: Consistency point gtid_executed ''.
190402 12:56:10 RDR1INFO: Consistency point binary_log_file 'binlog.000004'.
190402 12:56:10 RDR1INFO: Consistency point binary_log_position 379.
190402 12:56:10 RDR1INFO: Consistency point InnoDB lsn 19840686.
190402 12:56:10 RDR1INFO: Consistency point InnoDB lsn_checkpoint 19840686.
190402 12:56:10 RDR1INFO: Requesting completion of redo log
copy after LSN 19840686.
190402 12:56:10 RLR1INFO: Redo log reader waited = 0.00 ms for logs to generate.
190402 12:56:10 RLW1INFO: A copied database page was modified at 19840686.
(This is the highest lsn found on a page)
190402 12:56:10 RLW1INFO: Scanned log up to lsn 19840686.
190402 12:56:10 RDR1INFO: Copying /home/admin/bin/mysql-commercial-8.0.16/datadir/binlog.000004.
190402 12:56:10 RDR1INFO: Completed the copy of binlog files...
190402 12:56:10 RDR1INFO: The server instance is unlocked after 0.085 seconds.
190402 12:56:10 RDR1INFO: Reading all global variables from the server.
190402 12:56:10 RDR1INFO: Completed reading of all 548 global variables
from the server.
190402 12:56:10 RDR1INFO: Writing server defaults files 'server-my.cnf' and
'server-all.cnf' for server '8.0.16-commercial' in
'/home/mysqlbackup/backup-tmp'.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/meta/backup_variables.txt.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/datadir/ibbackup_logfile.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/server-all.cnf.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/server-my.cnf.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/meta/backup_content.xml.
190402 12:56:10 RDR1INFO: Copying meta file /home/mysqlbackup/backup-tmp/meta/image_files.xml.
190402 12:56:10 MAININFO: Full Image Backup operation completed successfully.
190402 12:56:10 MAININFO: Backup image created successfully.
190402 12:56:10 MAININFO: Image Path = /home/mysqlbackup/backups/my.mbi
190402 12:56:10 MAININFO: MySQL binlog position:
filename binlog.000004, position 379
-------------------------------------------------------------
Parameters Summary
-------------------------------------------------------------
Start LSN: 19840512
End LSN: 19840686
-------------------------------------------------------------
mysqlbackup completed OK!
4.2.3. Проверка резервной копии
validate
.
Следующее это типовая команда для проверки образа резервной копии и вывод
для успешной проверки:
$
mysqlbackup --backup-image=/home/mysqlbackup/backups/my.mbi validate
MySQL Enterprise BackupVer 8.0.16-commercial for linux-glibc2.12 on x86_64
(MySQL Enterprise - Commercial)
Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of
their respective owners.
Starting with following command line ...
bin/mysqlbackup --backup-image=/home/mysqlbackup/backups/my.mbi validate
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'validate' run mysqlbackup
prints "mysqlbackup completed OK!".
190401 17:27:14 MAININFO: Starting to log actions.
190401 17:27:14 MAININFO: Backup Image MEB version string: 8.0.16 [2019-03-2618:51:33]
190401 17:27:14 MAININFO: MySQL server version is '8.0.16'
190401 17:27:14 MAININFO: TDE Keyring service initialized.
190401 17:27:14 MAININFO: Creating 14 buffers each of size 16777216.
190401 17:27:14 MAININFO: Validate operation starts with following threads
1 read-threads6 process-threads
190401 17:27:14 MAININFO: Validating image ... /home/mysqlbackup/backups/my.mbi
190401 17:27:14 PCR1INFO: Validate: [Dir]: meta
190401 17:27:14 PCR1INFO: Validate: [Dir]: datadir/mysql
190401 17:27:14 PCR1INFO: Validate: [Dir]: datadir/performance_schema
190401 17:27:14 PCR1INFO: Validate: [Dir]: datadir/pets
190401 17:27:14 PCR1INFO: Validate: [Dir]: datadir/sys
190401 17:27:14 MAININFO: Total files as specified in image: 137
190401 17:27:14 MAININFO: datadir/ibdata1 validated.
190401 17:27:14 MAININFO: datadir/undo_002 validated.
190401 17:27:14 MAININFO: datadir/undo_001 validated.
190401 17:27:14 MAININFO: datadir/sys/sys_config.ibd validated.
190401 17:27:14 MAININFO: datadir/pets/cats.ibd validated.
190401 17:27:14 MAININFO: datadir/mysql/backup_history.ibd validated.
190401 17:27:14 MAININFO: datadir/mysql.ibd validated.
190401 17:27:14 MAININFO: Validate operation completed successfully.
190401 17:27:14 MAININFO: Backup Image validation successful.
190401 17:27:14 MAININFO: Source Image Path = /home/mysqlbackup/backups/my.mbi
mysqlbackup completed OK!
SHOW
,
чтобы проверить базу данных и структуры таблиц и выполнить запросы, чтобы
проверить более подробную информацию базы данных. Посмотрите
раздел 4.2.4
для основных шагов для восстановления резервной копии и см.
главу 5 для более подробных инструкций.4.2.4. Восстановление базы данных
--innodb_data_home_dir
,
--innodb_log_group_home_dir
и
--innodb_undo_directory
, если каталоги отличаются
от каталога данных.copy-back-and-apply-log
, которая преобразовывает сырую
резервную копию в подготовленную резервную копию, обновляя ее к
последовательному статусу, а затем копирует таблицы, индексы, метаданные и
любые другие необходимые файлы на целевой сервер. Для различных опций,
которые можно определить для этой операции, посмотрите
раздел 19.3.copy-back-and-apply-log
. Следующие опции используются:--datadir
задает местоположение каталога данных для восстановления данных.
Необходимо определить это для любой операции восстановления
в командной строке или в файле по умолчанию.--backup-image
обеспечивает путь к резервной копии файлов.--backup-dir
обеспечивает местоположение пустого каталога, чтобы хранить некоторые
временные файлы, созданные во время восстановления.
$ mysqlbackup --datadir=/home/admin/bin/mysql-commercial-8.0.16/datadir \
--backup-image=/home/mysqlbackup/backups/my.mbi \
--backup-dir=/home/mysqlbackup/backup-tmp \
copy-back-and-apply-log
MySQL Enterprise BackupVer 8.0.16-commercial for linux-glibc2.12 on x86_64
(MySQL Enterprise - Commercial)
Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of
their respective owners.
Starting with following command line ...
mysqlbackup --datadir=/home/admin/bin/mysql-commercial-8.0.16/datadir
--backup-image=/home/mysqlbackup/backups/my.mbi
--backup-dir=/home/mysqlbackup/backup-tmp copy-back-and-apply-log
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'copy-back-and-apply-log' run mysqlbackup
prints "mysqlbackup completed OK!".
190402 16:56:37 MAININFO: Starting to log actions.
190402 16:56:37 MAININFO: Backup directory exists: '/home/mysqlbackup/backup-tmp'
190402 16:56:37 MAININFO: Backup Image MEB version string: 8.0.16 [2019-03-2618:51:33]
190402 16:56:37 MAININFO: MySQL server version is '8.0.16'
190402 16:56:37 MAIN WARNING: If you restore to a server of a different
version, the innodb_data_file_path parameter might have a
different default. In that case you need to add
'innodb_data_file_path=ibdata1:12M:autoextend' to the
target server configuration.
190402 16:56:37 MAIN WARNING: If you restore to a server of a different
version, the innodb_log_files_in_group parameter might have a
different default. In that case you need to add
'innodb_log_files_in_group=2' to the target server configuration.
190402 16:56:37 MAIN WARNING: If you restore to a server of a different
version, the innodb_log_file_size parameter might have a
different default. In that case you need to add
'innodb_log_file_size=50331648' to the target server configuration.
190402 16:56:37 MAININFO: Server is not a community server.
190402 16:56:37 MAININFO: KEF source path:
'/home/mysqlbackup/backup-tmp/meta/keyring_kef'
190402 16:56:37 MAININFO: KEF target path:
'/home/admin/bin/mysql-commercial-8.0.16/datadir/keyring_kef'
190402 16:56:37 MAININFO: TDE Keyring service initialized.
190402 16:56:37 MAININFO: MEB logfile created at
/home/mysqlbackup/backup-tmp/meta/MEB_2019-04-02.16-56-37_copy_back_img_to_datadir.log
--------------------------------------------------------------------
Server Repository Options:
--------------------------------------------------------------------
datadir= /home/admin/bin/mysql-commercial-8.0.16/datadir
innodb_data_home_dir = /home/admin/bin/mysql-commercial-8.0.16/datadir
innodb_data_file_path= ibdata1:12M:autoextend
innodb_log_group_home_dir= /home/admin/bin/mysql-commercial-8.0.16/datadir
innodb_log_files_in_group= 2
innodb_log_file_size = 50331648
innodb_undo_directory= /home/admin/bin/mysql-commercial-8.0.16/datadir
innodb_undo_tablespaces= 2
innodb_buffer_pool_filename= ib_buffer_pool
innodb_page_size = Null
innodb_checksum_algorithm= crc32
--------------------------------------------------------------------
Backup Config Options:
--------------------------------------------------------------------
datadir= /home/mysqlbackup/backup-tmp/datadir
innodb_data_home_dir = /home/mysqlbackup/backup-tmp/datadir
innodb_data_file_path= ibdata1:12M:autoextend
innodb_log_group_home_dir= /home/mysqlbackup/backup-tmp/datadir
innodb_log_files_in_group= 2
innodb_log_file_size = 50331648
innodb_undo_directory= /home/mysqlbackup/backup-tmp/datadir
innodb_undo_tablespaces= 2
innodb_buffer_pool_filename= ib_buffer_pool
innodb_page_size = 16384
innodb_checksum_algorithm= crc32
190402 16:56:37 MAININFO: Creating 14 buffers each of size 16777216.
190402 16:56:37 MAININFO: Copy-back-and-apply-log operation starts
with following threads
1 read-threads6 process-threads1 write-threads
190402 16:56:37 PCR1INFO: Copying database directory: meta
190402 16:56:37 RDR1INFO: Copying ibdata1.
190402 16:56:37 RDR1INFO: Copying undo_002.
190402 16:56:37 RDR1INFO: Copying undo_001.
190402 16:56:37 RDR1INFO: Copying sys/sys_config.ibd.
190402 16:56:37 RDR1INFO: Copying pets/cats.ibd.
190402 16:56:37 RDR1INFO: Copying mysql/backup_history.ibd.
190402 16:56:37 RDR1INFO: Copying mysql.ibd.
190402 16:56:37 RDR1INFO: Copying binlog.000001.
190402 16:56:37 RDR1INFO: Copying binlog.000002.
190402 16:56:37 RDR1INFO: Copying binlog.000003.
190402 16:56:37 PCR3INFO: Copying database directory: mysql
190402 16:56:37 PCR3INFO: Copying database directory: performance_schema
190402 16:56:37 PCR3INFO: Copying database directory: pets
190402 16:56:37 PCR3INFO: Copying database directory: sys
190402 16:56:37 RDR1INFO: Copying binlog.000004.
190402 16:56:37 MAININFO: Total files as specified in image: 138
190402 16:56:37 MAININFO: MySQL server version is '8.0.16-commercial'
190402 16:56:37 MAININFO: Restoring ...8.0.16-commercial version
190402 16:56:37 MAININFO: Copy-back operation completed successfully.
190402 16:56:37 MAININFO: Source Image Path = /home/mysqlbackup/backups/my.mbi
190402 16:56:37 MAININFO: MySQL server version is '8.0.16-commercial'
190402 16:56:37 MAININFO: Restoring ...8.0.16-commercial version
190402 16:56:37 MAININFO: Creating 14 buffers each of size 65536.
190402 16:56:37 MAININFO: Apply-log operation starts with following threads
1 read-threads1 process-threads6 apply-threads
190402 16:56:37 MAININFO: Using up to 100 MB of memory.
190402 16:56:37 MAININFO: ibbackup_logfile's creation parameters:
start lsn 19841024, end lsn 19841405,
start checkpoint 19841405.
190402 16:56:37 MAININFO: Loading the space id : 0, space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/ibdata1.
190402 16:56:37 MAININFO: Apply log: Loading the undo space id : 4294967278,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/undo_002.
190402 16:56:37 MAININFO: Apply log: Loading the undo space id : 4294967279,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/undo_001.
190402 16:56:37 MAININFO: Loading the space id : 3,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/mysql/backup_history.ibd.
190402 16:56:37 MAININFO: Loading the space id : 2,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/pets/cats.ibd.
190402 16:56:37 MAININFO: Loading the space id : 1,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/sys/sys_config.ibd.
190402 16:56:37 MAININFO: Loading the space id : 4294967294,
space name : /home/admin/bin/mysql-commercial-8.0.16/datadir/mysql.ibd.
190402 16:56:37 PCR1INFO: Starting to parse redo log at lsn = 19841394,
whereas checkpoint_lsn = 19841405.
190402 16:56:37 PCR1INFO: Doing recovery: scanned up to log sequence number 19841405.
190402 16:56:37 PCR1INFO: Starting to apply a batch of log records to the database....
InnoDB: Progress in percent:
190402 16:56:37 PCR1INFO: Updating last checkpoint to 19841405 in redo log/
190402 16:56:37 PCR1INFO: Setting log file size to 50331648
190402 16:56:37 PCR1INFO: Setting log file size to 50331648
190402 16:56:37 PCR1INFO: Log file header:
format = 3
pad1 = 0
start lsn = 19841024
checkpoint lsn = 19841405
checksum = 2051460933
creator = MEB 8.0.16
190402 16:56:37 PCR1INFO: We were able to parse ibbackup_logfile up to lsn 19841405.
190402 16:56:37 PCR1INFO: Last MySQL binlog file position 0 379, file name binlog.000004
190402 16:56:37 PCR1INFO: The first data file is
'/home/admin/bin/mysql-commercial-8.0.16/datadir/ibdata1'
and the new created log files are at '/home/admin/bin/mysql-commercial-8.0.16/datadir'
190402 16:56:37 MAININFO: No Keyring file to process.
190402 16:56:37 MAININFO: Apply-log operation completed successfully.
190402 16:56:37 MAININFO: Full Backup has been restored successfully.
mysqlbackup completed OK! with 3 warnings
backup-my.cnf
во время резервной копии,
можно найти файл во временном каталоге, который вы определили с
--backup-dir
,
когда вы восстановили образ резервной копии, или в резервном каталоге,
который вы могли создать, распаковав образ резервной копии, используя
команду extract
.
Если значения этих опций отличаются от их значений в целевом сервере,
добавьте их к конфигурационному файлу, который вы используете, чтобы
запустить целевой сервер впоследствии, альтернативно можно также передать их
как параметры командной строки mysqld.mysql
, используйте следующую команду,
чтобы изменить признак владельца каталога данных и файлов под ним к
mysql
и атрибут группы к mysql
.
$
chown -R mysql:mysql
/path/to/datadir
4.3. Резервные сценарии и примеры
4.3.1. Создание однофайловой резервной копии
backup
)
вместо однофайловой резервной копии, однофайловый формат предпочтителен в
большинстве случаев: с ним легче обращаться и определенные функции
mysqlbackup
не поддерживаются для директивных резервных копий,
например, резервная копия в облако или на ленту с использованием System
Backup to Tape (SBT) API. Всюду по руководству директивную резервную копию
главным образом рассматривают как продвинутую тему, информация и примеры для
директивных резервных копий отмечены тэгом
дополнительно, как этот параграф.backup-to-image
. Следующие примеры иллюстрируют, как выполнить резервное копирование
файлов и другие связанные операции.--backup-dir
,
который используется, чтобы хранить временный вывод,
статус и файлы метаданных.
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--backup-image=/backups/sales.mbi --backup-dir=/backup-tmp \
backup-to-image
--backup-image
, путь взят относительно
резервного каталога.
Поэтому в этом примере получающееся резервное копирование файлов создается
как /backups/sales.mbi
.
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --backup-image=sales.mbi \
--backup-dir=/backups backup-to-image
--backup-dir
,
используется в качестве временного каталога.
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --backup-dir=/backups \
--backup-image=- backup-to-image > /backup/mybackup.mbi
backup-dir
архивирован в файл
/backup/my.mbi
.
mysqlbackup --backup-image=/backup/my.mbi --backup-dir=/var/mysql/backup \
backup-dir-to-image
backup-dir
.
mysqlbackup --backup-dir=/var/backup --backup-image=/backup/my.mbi \
image-to-backup-dir
mysqlbackup --backup-image=/backup/my.mbi list-image
mysqlbackup --backup-image=/logs/fullimage.mivalidate
mysqlbackup --backup-image=/var/my.mbi extract
--backup-dir
.
mysqlbackup --backup-image=/var/my.mbi --backup-dir=/var/backup extract
meta/comments.txt
из образа резервной копии
my.mbi
в локальный путь
./meta/comments.txt
.
mysqlbackup --backup-image=/var/my.mbi \
--src-entry=meta/comments.txt extract
meta/comments.txt
из образа резервной копии
my.mbi
в указанный путь
/tmp/mycomments.txt
с помощью опции
--dst-entry
.
mysqlbackup --backup-image=/var/my.mbi \
--src-entry=meta/comments.txt \
--dst-entry=/tmp/mycomments.txt extract
meta/comments.txt
(из файла резервной копии
my.mbi
) на стандартный вывод.
mysqlbackup --backup-image=/var/my.mbi --src-entry=meta/comments.txt \
--dst-entry=- extract
meta
из образа резервной копии
my.mbi
в путь локальной файловой системы
./meta
. Все содержание каталога
meta
извлечено, включая любые подкаталоги.
Заметьте слэш (/
) в конце значения meta/
для
--src-entry
,
без которого все файлы или каталоги, содержащие последовательность
meta
в их путях, будут извлечены.
mysqlbackup --backup-image=/backup/my.mbi --src-entry=meta/ extract
mysqlbackup --backup-image=/backup/my.mbi --src-entry=/ \
--dst-entry=/myroot extract
mysqlbackup --backup-image=/backup/my.mbi --src-entry=. extract
/myroot
в местной системе.
Вторая команда извлекает все относительные пути к текущему каталогу.4.3.1.1. Трансляция данных резервного
копирования к другому устройству или серверу
backup-to-image
без опции --backup-image
.
Можно также определить --backup-image=-
, чтобы
сделать очевидным то, что данные посылают в stdout.
Чтобы передать данные, вы используете резервное копирование файлов в
сочетании с особенностями операционной системы, такими как каналы,
ssh
или что-то вроде этого, которые берут запись от стандартного
вывода и создают эквивалентный файл в удаленной системе. Можно сохранить
резервную копию файлов непосредственно в удаленной системе или вызвать с
командой copy-back-and-apply-log
на другом конце, чтобы вернуть
резервную копию удаленному серверу MySQL.my_backup.img
(--backup-dir=/tmp
определяет каталог для того, чтобы хранить
временные файлы, а не файл окончательного результата):
mysqlbackup --defaults-file=~/my_backup.cnf --backup-image=- \
--backup-dir=/tmp backup-to-image | \
ssh
<user name>
@<remote host name>
\
'cat > ~/backups/my_backup.img'
ssh
может быть заменен другим протоколом связи, например,
ftp
, cat
может быть заменена другой командой
(например, dd или
tar для нормального архивирования).
mysqlbackup--backup-dir=backup --backup-image=---compress backup-to-image | \
ssh
<user name>
@<remote host name>
\
'mysqlbackup --backup-dir=backup_tmp --datadir=/data \
--innodb_log_group_home_dir=. --uncompress --backup-image=- \
copy-back-and-apply-log'
mysqlbackup --backup-image=- --backup-dir=/path/to/my/backup \
backup-dir-to-image | \
ssh
<user name>
@<remote host name>
\
'mysqlbackup --backup-dir=backup_tmp --datadir=/data --backup-image=- \
copy-back-and-apply-log'
4.3.1.2. Резервирование, чтобы записать на ленту
4.3.1.3. Резервирование в облачное хранилище
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--backup-dir=/home/dbadmin/backuptmp \
--with-timestamp --backup-image=- --cloud-service=OCI \
--cloud-par-url=
<bucket_PAR_URL>
\
--cloud-object=backup.bk backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--backup-dir=/home/dbadmin/backuptmp --with-timestamp \
--backup-image=- --cloud-service=OCI \
--cloud-par-url=
<bucket_PAR_URL>
--cloud-object=backup-inc.bk \
--incremental --incremental-base=history:last_backup \
backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--include-tables=testdb.t1 --use-tts=with-full-locking \
--cloud-service=openstack--cloud-container=
<swift container>
\
--cloud-user-id=<keystone user>
\
--cloud-password=<keystone password>
\
--cloud-region=<keystone region>
\
--cloud-tenant=<keystone tenant>
\
--cloud-identity-url=<keystone url>
\
--cloud-trace=1 --cloud-object=image_800.mbi \
--backup-dir=/home/dba/opbackuptmpdir \
--backup-image=- backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--cloud-service=s3 --cloud-aws-region=
<aws region>
\
--cloud-access-key-id=<aws access key id>
\
--cloud-secret-access-key=<aws secret access key>
\
--cloud-bucket=<s3 bucket name>
\
--cloud-object-key=<aws object key>
\
--backup-dir=/home/dba/s3backupdir --with-timestamp \
--backup-image=- backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--cloud-service=s3 --cloud-aws-region=
<aws region>
\
--cloud-access-key-id=<aws access key id>
\
--cloud-secret-access-key=<aws secret access key>
\
--cloud-bucket=<s3 bucket name>
\
--cloud-object-key=<aws object key>
\
--backup-dir=/home/dba/s3backupdir --with-timestamp \
--backup-image=- --incremental \
--incremental-base=history:last_backup backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --cloud-service=GCP \
--cloud-bucket=
<bucket name>
\
--cloud-object=<object name>
\
--cloud-access-key=<access name>
\
--cloud-secret-key=<secret key>
\
--backup-dir=/home/dba/backupdir --with-timestamp \
--backup-image=- backup-to-image
backup-to-image
, все другие операции
mysqlbackup
для однофайлового резервного копирования
(
backup-dir-to-image
,
list-image
,
validate
,
image-to-backup-dir
,
extract
,
copy-back
и
copy-back-and-apply-log
) также могут быть выполнены с
облачным хранилищем (см. приложение B
для некоторых ограничений).
4.3.2. Создание полного резервного копирования
Опции в командной строке
или в конфигурационном файле?
[mysqlbackup]
конфигурационного файла MySQL, который вы поставляете
mysqlbackup.
mysqlbackup также берет опции из секции
[mysqld]
, если они присутствуют там. Помещение вариантов в
конфигурационный файл может упростить управление, например, помещая
информацию о порте в конфигурационный файл, можно избежать потребности
редактировать скрипты каждый раз, когда экземпляр базы данных переключается
на иной порт. См. главу 21 для получения
дополнительной информации об использовании конфигурационных файлов.Использовать единственный резервный
каталог или подкаталоги с меткой времени?
--with-timestamp
создает исключительно подкаталоги, названные в
соответствии с резервным
каталогом, чтобы хранить данные резервного копирования (постоянные или
временные) и метаданные. Подкаталоги с меткой времени делают более простым
установку периодов хранения, позволяя легкое удаление и архивацию данных
резервного копирования, которые превысили определенный возраст.--with-timestamp
), определите новое
уникальное имя каталога для каждого задания резервного копирования.--incremental-base
, чтобы определить каталог, содержащий
предыдущую резервную копию, чтобы сделать имена каталогов предсказуемыми, вы
могли бы предпочесть не использовать опцию
--with-timestamp
и производить последовательность имен каталогов
вашим скриптом резервирования вместо этого.Всегда полное резервное копирование или
полное резервное копирование плюс возрастающие резервные копии?
Использовать сжатие или нет?
4.3.3.
Создание дифференциального или инкрементного резервного копирования
t
, вы просто восстанавливаете сначала полное
резервное копирование, затем поверх него дифференциальное резервное
копирование, взятое в течение времени t
.t
,
вы начинаете с восстановления полного резервного копирования, затем
восстанавливаете возрастающие резервные копии по порядку,
пока не дойдете до инкрементной резервной копии, взятой в течение времени t.
--incremental-base=history:last_full_backup
.--incremental
и
--incremental-with-redo-log-only
. См.
здесь
описание их различий.--incremental-base
, чтобы автоматически получить необходимый
log sequence number (LSN)
из метаданных, сохраненных в предыдущем резервном каталоге или на сервере.
Или можно определить явное значение LSN, используя параметр
--start-lsn
,
предоставляя mysqlbackup последний LSN из
предыдущего полного резервного копирования или инкрементного резервного
копирования (см.
ограничения, которые применяются, используя опцию
--start-lsn
).
Создание возрастающих резервных копий, используя только журнал отката
--incremental-with-redo-log-only
может предложить некоторые выгоды по сравнению с
--incremental
для создания инкрементного резервного копирования:InnoDB
.
Так как у файлов журнала отката есть фиксированный размер, который вы знаете
заранее, он может потребовать меньше I/O, чтобы прочитать изменения из них,
чем просмотр файлов табличного пространства InnoDB, чтобы определить
местонахождение измененных страниц, в зависимости от размера вашей базы
данных, объема деятельности DML и размера файлов журнала отката.--incremental
.SHOW VARIABLES LIKE 'innodb_log_file%'
и на основе ее вывода, увеличьте
innodb_log_file_size
значением
innodb_log_files_in_group
.
Чтобы вычислить размер журнала отката на физическом уровне, изучите каталог
datadir
MySQL и сложите размеры файлов, соответствующих образцу
ib_logfile*
.SHOW ENGINE INNODB STATUS
и посмотрите заголовок LOG
.
Планируя вашу стратегию резервного копирования, делайте запись значений LSN
периодически и вычитайте более раннее из текущего, чтобы вычислить, сколько
данных производится каждый час, день и так далее.--start-lsn
как обычная опция --incremental
. Например, вы не можете сделать
полное резервное копирование и затем сделать серию резервных копий
--incremental-with-redo-log-only
с использованием того же самого
значения --start-lsn
. Удостоверьтесь, что определили точный
конец LSN предыдущей резервной копии как начало LSN следующего инкрементного
резервного копирования, не используйте произвольные значения.--incremental-base
, когда вы используете опцию
--incremental-with-redo-log-only
.--incremental
и
--incremental-with-redo-log-only
, чтобы подтвердить, работает ли
метод резервной копии журнала отката быстрее и с меньшими издержками, чем
традиционный метод инкрементного резервного копирования.
Результат может зависеть от размера ваших данных, объема деятельности DML и
размера ваших файлов журнала отката. Сделайте свое тестирование на сервере с
реалистическим объемом данных и реалистической рабочей нагрузкой.
Например, если у вас есть огромные файлы журнала отката,
их чтение в ходе инкрементного резервного копирования могло бы занять
больше времени, чем чтение файлов данных InnoDB, используя традиционную
возрастающую технику. С другой стороны, если ваш объем данных большой, читать
все файлы данных, чтобы найти несколько измененных страниц,
могло бы быть менее эффективным, чем обработка намного меньших
файлов журнала отката.--incremental-with-redo-log-only
.
Инкрементное резервное копирование, используя отслеживание страницы
mysqlbackup
,
который идет с MySQL Enterprise Server 8.0, этой командой в
mysql:
INSTALL COMPONENT "file://component_mysqlbackup";
SELECT mysqlbackup_page_track_set(true);
SELECT mysqlbackup_page_track_get_start_lsn();
SELECT mysqlbackup_page_track_set(false);
BACKUP_ADMIN
.
--incremental
используется без любого определенного значения,
mysqlbackup выполняет инкрементное резервное
копирование, используя функциональность отслеживания страницы.
Пользователь может также определять
--incremental=page-track
, чтобы заставить
mysqlbackup использовать функциональность
отслеживания страницы. Однако, для использования функциональности
отслеживания страницы для возрастающих резервных копий нужно
соответствовать ряду требований:SELECT
mysqlbackup_page_track_set(true)
) прежде, чем основная резервная копия
была создана, если это не так mysqlbackup
бросает ошибку, когда
--incremental=page-track
, или выполняет инкрементное резервное копирование полного
просмотра вместо этого, когда не задана
--incremental
.--incremental=page-track
, или выполняет инкрементное резервное копирование полного
просмотра вместо этого, когда не задана
--incremental
.
--limit-memory
позволяет mysqlbackup обрабатывать
приблизительно 800 ГБ измененных данных. Приспособьте значение опции
согласно вашему размеру данных.end_lsn
для основной резервной копии:
SELECT end_lsn FROM mysql.backup_history WHERE exit_state = 'SUCCESS' AND
backup_type != 'TTS' AND server_uuid = @@server_uuid
ORDER BY end_time DESC, end_lsn DESC LIMIT 0,1;
SELECT mysqlbackup_page_track_get_changed_page_count(<the above end_lsn>, 0);
changed_page_count
, полученное на последнем
шаге, на 8, чтобы получить число байтов, необходимых
для буфера сортировки.
--number-of-buffers
не меньше, чем количество необходимых буферов
сортировки вычисленное на последнем шаге. Помните, что могут быть более
измененные страницы, созданные в то время, как вы делаете это вычисление,
таким образом, может быть надо дать mysqlbackup
еще несколько дополнительных буферов.
--limit-memory
.Полный просмотр против
оптимистического инкрементного резервного копирования
--incremental
установлена в full-scan
,
mysqlbackup выполняет инкрементное резервное
копирование полного просмотра, в котором просматривает все файлы данных
InnoDB в каталоге данных сервера, чтобы найти страницы, которые были
изменены после того, как последняя резервная копия была сделана, а затем
копирует те страницы. Инкрементное резервное копирование полного просмотра не
может быть очень эффективным, если мало таблиц были
изменены с последнего резервирования.
--incremental=optimistic
. В то время как оптимистическая резервная
копия могла бы сократить время резервного копирования, у нее
есть следующие ограничения:
--incremental-with-redo-log-only
, для которого
mysqlbackup читает файлы журнала отката вместо
того, чтобы просмотреть файлы в каталоге данных.
--start-lsn
, полный просмотр выполняется, даже если определяется
--incremental=optimistic
, в этом случае mysqlbackup
не может определить момент времени, для которого предыдущая резервная копия
последовательна, и таким образом нет временной структуры, чтобы определить,
какие файлы были недавно изменены.
--incremental
.
Другие соображения для возрастающих резервных копий
--start-lsn
.
Чтобы включать файлы двоичного журнала в течение периода, покрытого
инкрементным резервным копированием, используйте опцию
--incremental-base
, которая предоставляет необходимую информацию для
mysqlbackup, чтобы гарантировать, что никакой
промежуток не существует между данными, включенными в предыдущую резервную
копию и текущим инкрементным резервным копированием.Примеры возрастающих резервных копий
--incremental-base
и опции
--start-lsn
.--incremental-base
вы не должны отслеживать LSN
между одной резервной копией и следующей. Вместо этого можно сделать
одно из следующего:end_lsn
из последней успешной
резервной копии не-TTS, как
зарегистрировано в таблице backup_history
сервера, применив
--incremental-base
=history:last_backup
или
history:last_full_backup
(для 8.0.17 и позже).--incremental-base=dir:
,
mysqlbackup
выяснит отправную точку для этой резервной копии на основе метаданных.
Поскольку вам нужен известный набор имен каталогов, вы могли бы хотеть
использовать жестко заданные имена или произвести последовательность имен в
вашем собственном резервном скрипте вместо того, чтобы использовать опцию
directory_path
--with-timestamp
. Если ваша последняя резервная копия была
однофайловой, можно использовать
--incremental-base=dir:
,
чтобы обеспечить местоположение временного каталога, заданного
directory_path
--backup-dir
во время последней резервной копии.
--incremental-base=history:last_backup
, чтобы
mysqlbackup получил LSN последней
успешной (не-TTS) полной или частичной резервной копии из таблицы
mysql.backup_history
и выполнил инкрементное резервное копирование, базирующееся на этом.
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--incremental --incremental-base=history:last_backup \
--backup-dir=/home/dbadmin/temp_dir \
--backup-image=incremental_image1.bi backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/dbadmin/temp_dir \
--backup-image=incremental_image1.bi backup-to-image
--incremental-base=dir:
,
резервная копия сохраняется в местоположении, определенном
directory_path
--incremental-backup-dir
:
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --incremental \
--incremental-base=dir:/incr-backup/wednesday \
--incremental-backup-dir=/incr-backup/thursday backup
--start-lsn
,
чтобы определить, где инкрементное резервное копирование должно начаться.
Необходимо сделать запись LSN предыдущей резервной копии, о которой сообщает
mysqlbackup в конце резервной копии:
mysqlbackup: Was able to parse the log up to lsn 2654255716
meta/backup_variables.txt
каталога, указанного
--backup-dir
во время изготовления резервной копии. Подставляйте это число
mysqlbackup через опцию
--start-lsn
. Инкрементное резервное копирование тогда включает
все изменения, которые были после
указанного LSN.--start-lsn
, используйте следующую команду, определяя через
--backup-dir
резервный каталог, который, в этом случае, является каталогом для хранения
метаданных для резервной копии и некоторых временных файлов:
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --incremental \
--start-lsn=2654255716 --with-timestamp --backup-dir=/incr-tmp \
--backup-image=/incr-backup/incremental_image.bi \
backup-to-image
--backup-image
не предоставляет полный путь к файлу образа,
который будет создан, образ инкрементного резервного копирования создается
под каталогом, определенным
--backup-dir
:
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --incremental \
--start-lsn=2654255716 --with-timestamp \
--backup-dir=/incr-images \
--backup-image=incremental_image1.bi backup-to-image
Поддержание расписания резервного копирования:
4.3.4. Создание сжатой резервной копии
--compress
. Сжатие позволяет вам держать больше данных резервного
копирования или сэкономить время передачи, посылая данные резервного
копирования на другой сервер. Кроме того, сжатие часто приводит к более
быстрым резервным копиям из-за уменьшенного IO..ibz
. Чтобы избежать тратить впустую циклы CPU, не
экономя дополнительное дисковое пространство, --compress
не пытается сжать таблицы, которые были уже сжаты на сервере (см.
Creating Compressed Tables),
тем не менее, такие файлы табличного пространства также сохранены с
расширением .ibz
в резервной копии..bz
, будучи включенными в
сжатую резервную копию.--compress
для возрастающих резервных копий, созданных
только с журналом отката (то есть с опцией
--incremental-with-redo-log-only
).--compress-method
, а используя ZLIB или алгоритм сжатия
LZMA, уровень сжатия опцией
--compress-level
. См.
раздел 20.6.
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --compress \
--backup-image=backup.img backup-to-image
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --compress-method=zlib \
--compress-level=5 backup
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --compress-method=zlib \
--compress-level=5 backup-and-apply-log
4.3.5. Создание частичной резервной копии
--include-tables
или
--exclude-tables
.
--include-tables
или
--exclude-tables
. Если регулярное выражение соответствует
полностью полностью определенному имени таблицы (в форме
db_name.table_name)
, таблица включена или исключена для
резервной копии. Используемый синтаксис регулярного выражения является
расширенной формой, определенной в стандарте
POSIX 1003.2.
Опции были осуществлены с библиотекой регулярных выражений RE2.
--only-innodb
.
--only-known-file-types
.--use-tts
и
--include-tables
или
--exclude-tables
(или обе).
mysqlbackup --host=localhost --user=mysqluser --protocol=TCP --port=3306 \
--backup-dir=$MEB_TEMP_BACKUP_DIR \
--backup-image=$MEB_BACKUPS_DIR/my.mbi \
--include-tables="\.emp" backup-to-image
mysqlbackup --host=localhost --user=mysqluser --protocol=TCP --port=3306 \
--backup-dir=$MEB_TEMP_BACKUP_DIR \
--backup-image=$MEB_BACKUPS_DIR/my.mbi \
--exclude-tables="^(mysql|performance_schema)\." backup-to-image
mysqlbackup --host=localhost --user=mysqluser --protocol=TCP --port=3306 \
--backup-dir=$MEB_TEMP_BACKUP_DIR \
--backup-image=$MEB_BACKUPS_DIR/my.mbi \
--include-tables="^sales\." --exclude-tables="^sales\.hardware$" \
backup-to-image
mysqlbackup --host=localhost --user=mysqluser --protocol=TCP --port=3306 \
--backup-dir=$MEB_TEMP_BACKUP_DIR \
--backup-image=$MEB_BACKUPS_DIR/my.mbi \
--include-tables="^sales reps\." \
--exclude-tables="^sales reps\.euro-asia" backup-to-image
mysqlbackup --host=localhost --user=mysqluser --protocol=TCP --port=3306 \
--backup-dir=$MEB_TEMP_BACKUP_DIR \
--backup-image=$MEB_BACKUPS_DIR/my.mbi --only-innodb \
backup-to-image
Создание частичной резервной
копии с устаревшими опциями
--include
.
Для создания частичных резервных копий используйте опции
--include-tables
и
--exclude-tables
.--include
mysqlbackup может сделать резервную копию,
которая включает некоторые таблицы InnoDB, но не все.--include
всегда содержит
системное табличное пространство InnoDB и все таблицы в нем.--include
.
. Чтобы поместить таблица InnoDB вне системного табличного
пространства, создайте его в то время, как опция
table_name
.ibdinnodb_file_per_table
включена.
Каждый файл .ibd
хранит
данные и индексы только одной таблицы.innodb_file_per_table
, сохранены как обычно в
системном табличном
пространстве InnoDB и не могут быть исключены из резервной копии.db_name.table_name
сравнена с регулярным выражением,
определенным опцией
--include
. Если регулярное выражение соответствует полной
последовательности db_name.table_name
, таблица включен в
резервную копию. Используемый синтаксис регулярного выражения является
расширенной формой, определенной в стандарте
POSIX 1003.2.
На Unix-системах укажите регулярное выражение соответственно, чтобы
предотвратить интерпретацию метазнаков оболочкой.
Эта опция была реализована с библиотекой регулярных выражений RE2.test
,
имя которых начинается с ib
. Содержание каталога базы данных для
базы данных test
показано ниже. Из этих 10 таблиц шесть
(alex1
, alex2
,
alex3
, blobt3
,
ibstest0
, ibstest09
)
сохранены в отдельных файлах данных (файлы .ibd
).
$
ls /sqldata/mts/test
alex2.ibdibstest0.ibd alex1.ibdblobt3.ibdalex3.ibdibtest09.ibd
--include
:
# Back up some InnoDB tables.
$ mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--include="^test\.ib.*" backup
# Contents in the backup directory's subdirectory for the test database:
$
ls /sqldata-backup/test
ibstest0.ibd ibtest09.ibd
test
содержит только резервные копии таблиц
ibstest0
и ibtest09
, потому что другие таблицы
InnoDB не соответствуют образцу ^test\.ib.*
.alex
или blob
. Содержание каталога для базы данных
test
показано ниже.
$
ls /sqldata/mts/test
alex2.ibdibstest0.ibdalex1.ibdblobt3.ibdalex3.ibdibtest09.ibd
--compress
и
--include
:
$ mysqlbackup --defaults-file=/home/dbadmin/my.cnf --compress \
--include=".*\.(alex|blob).*" backup
test
показан ниже.
Файлы .ibz
это сжатые файлы данных таблиц.
$
ls /sqldata-backup/test
alex1.ibz alex2.ibz alex3.ibz blobt3.ibz
4.3.6.
Создание оптимистической резервной копии
apply-log
для
подготовки резервной копии для
восстановления может занять очень долгое время, так как
mysqlbackup имеет огромные файлы
ibbackup_logfile
(созданные из больших файлов
журнала отката) для резервной копии. Проблемы усилены, когда ресурсы I/O,
доступные для чтения и написания журналов отката, недостаточны во время
процессов резервирования и восстановления.optimistic-time
или исключением с опцией
optimistic-busy-tables
), резервируются без блокировок.
И потому что те таблицы, как ожидают, не будут изменены, прежде чем резервная
копия будет закончена, журналы отката, отмены и системные табличные
пространства не резервируются mysqlbackup в
этой фазе вообще.
optimistic-time
или
optimistic-busy-tables
. Как использовать варианты см. подробные
описания для них в
разделе 20.10. Если как ожидалось список бездействующих таблиц,
определенных оптимистическими опциями, не изменится во время резервной копии
(или даже если это изменится незначительно),
большинство пользователей найдет, что полное время резервного копирования
уменьшается значительно по сравнению с обычной резервной копией,
поскольку размер данных о журнале отката, которые будут поддержаны, будет
намного меньшим. Кроме того, восстановления время
для резервной копии, будет также уменьшено, так как операция
apply-log
будет намного быстрее из-за меньшего журнала отката.
Однако, если оказывается, что список бездействующих таблиц изменен
значительно во время процесса резервного копирования,
выгоды выполнения оптимистического метода станут ограниченными и в худшем
случае оптимистическая резервная копия могла бы на самом деле занять больше
времени, а для однофайлового резервного копирования, размер резервной копии
будет больше, соответствуя обычной резервной копии. Поэтому пользователи
должны быть осторожными в идентификации, какие таблицы
бездействующие, а какие
заняты, пытаясь выполнить
оптимистическую резервную копию.optimistic-time=
.YYMMDDHHMMSS
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--optimistic-time=110516120000 \
--backup-image=
<image-name>
\
--backup-dir=<temp-dir>
\
backup-to-image
optimistic-time=now
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-time=now \
--backup-image=
<image-name>
\
--backup-dir=<temp-dir>
\
backup-to-image
optimistic-busy-tables
mydatabase
с
префиксом имени mytables-
рассматриваются как занятые таблицы и поддерживаются в нормальной фазе
оптимистической резервной копии, все другие таблицы
поддерживаются в оптимистической фазе:
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--optimistic-busy-tables="^mydatabase\.mytables-.*" \
--backup-image=
<image-name>
\
--backup-dir=<temp-dir>
backup
optimistic-time
и
optimistic-busy-tables
и они вступают в конфликт при
определении, какие таблицы должны быть занятыми,
optimistic-busy-tables
имеет приоритет перед
optimistic-time
, например:optimistic-busy-tables
и
optimistic-time
совместноmydatabase
с префиксом
mytables-
рассматриваются как занятые таблицы и
поддерживаются в нормальной фазе, даже если они не были изменены с 16 мая
2010, времени, определенного optimistic-time
:
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--optimistic-busy-tables="^mydatabase\.mytables-.*" \
--optimistic-time=100516--backup-image=
<image-name>
\
--backup-dir=<temp-dir>
backup
Используя оптимистические резервные копии и оптимистические возрастающие
резервные копии вместе
# A full optimistic backup performed on 2017/02/04, Sat, at 1130 PM.
# The --optimistic-time option is used to specify an optimistic time of 2016/08/16, 0800 PM
mysqlbackup --defaults-file=/home/admin/my.cnf --optimistic-time=160816200000 \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_full_201702042330.bi \
--with-timestamp backup-to-image
# A sequence of optimistic incremental backups are then performed on each the following six days at 1130 PM
# On Sunday, 2017/02/05
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702052330.bi \
--with-timestamp backup-to-image
# On Monday, 2017/02/06
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702062330.bi \
--with-timestamp backup-to-image
# On Tuesday, 2017/02/07
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702072330.bi \
--with-timestamp backup-to-image
# On Wednesday, 2017/02/08
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702082330.bi \
--with-timestamp backup-to-image
# On Thursday, 2017/02/09
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702092330.bi \
--with-timestamp backup-to-image
# On Friday, 2017/02/10
mysqlbackup --defaults-file=/home/admin/my.cnf \
--incremental=optimistic --incremental-base=history:last_backup \
--backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_incremental__201702102330.bi \
--with-timestamp backup-to-image
# Another full optimistic backup is performed on Saturday, 2017/02/11
mysqlbackup --defaults-file=/home/dbadmin/my.cnf \
--optimistic-time=110516200000 --backup-dir=/home/admin/temp_dir \
--backup-image=/home/admin/backups/mydb_full_201702112330.bi \
--with-timestamp backup-to-image
# Restore the database to its state at Tuesday, 2017/02/07, at 11:30 PM
# First, restore the full optimistic backup taken on the Saturday before, which was 2017/02/04:
mysqlbackup --defaults-file=/etc/my.cnf \
--backup-image=/home/admin/backups/mydb_full_201702042330.bi \
--backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql \
--with-timestamp copy-back-and-apply-log
# Next, restore the optimistic incremental taken on the Sunday, Monday, and Tuesday that follow:
mysqlbackup --defaults-file=/etc/my.cnf \
--backup-image=/home/admin/backups/mydb_incremental__201702052330.bi \
--backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql \
--incremental --with-timestamp copy-back-and-apply-log
mysqlbackup --defaults-file=/etc/my.cnf \
--backup-image=/home/admin/backups/mydb_incremental__201702062330.bi \
--backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql \
--incremental --with-timestamp copy-back-and-apply-log
mysqlbackup --defaults-file=/etc/my.cnf \
--backup-image=/home/admin/backups/mydb_incremental__201702072330.bi \
--backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql \
--incremental --with-timestamp copy-back-and-apply-log
4.3.7. Резервирование из данных в памяти
--exec-when-locked
позволяет вам определить команду (вместе с
желаемыми аргументами команды), чтобы работать около конца резервной копии в
то время, как не-InnoDB таблицы базы данных все еще заблокированы.
Эта команда может скопировать или создать дополнительные файлы в резервном
каталоге. Например, можно использовать этот выбор, чтобы зарезервировать
таблицы MEMORY
командой mysqldump,
храня вывод в резервном каталоге. Чтобы задержать любое переназначение или
подстановку переменных до окончания выполнения команды, приложите значение
опции в одинарных кавычках.4.3.8.
Создание запланированного резервного копирования
shell> crontab -e
@daily /
path-to-mysqlbackup
/mysqlbackup -uroot --backup-dir=/path-to-backup-folder
/cronbackups
--with-timestamp --backup-image=my.mib backup-to-image&>/dev/null
cronbackups
ежедневно в 00:00:00
.
Выводы из stderr
и stdout
перенаправляются в
/dev/null/, таким образом, они не вызовут другие действия со стороны сервера
Cron (например, уведомления по электронной почте пользователю).root
, создайте файл в каталоге
/etc/cron.d
и поместите него подобную запись
crontab, как показанная выше, добавляя пользователя
(root
в следующем примере) перед командой
mysqlbackup:
@daily root /
path-to-mysqlbackup
/mysqlbackup -uroot --backup-=/path-to-backup-folder
/cronbackups \
--with-timestamp --backup-image=my.mib backup-to-image&>/dev/null
4.4. Создание резервных копий с
распределенной файловой системой (DFS) или Storage Access Network (SAN)
Найди своих коллег! |
Вы можете
направить письмо администратору этой странички, Алексею Паутову.