4.3.5 Создание частичной резервной копии
По умолчанию, все файлы в подкаталогах базы данных в каталоге данных включаются в резервную копию, так что резервная копия включает данные из всех движков хранения MySQL, любых сторонних движков хранения и даже любые не относящиеся к базе данных файлы в этом каталоге. Этот раздел объясняет доступные параметры для выборочного резервного копирования или исключения данных.
Существуют различные способы создания разных видов частичных резервных копий с помощью MySQL Enterprise Backup:
-
Включение или исключение определённых таблиц по их именам. Для этого используется параметр
--include-tablesили--exclude-tables.Каждая таблица проверяется по регулярному выражению, указанному с параметром
--include-tablesили--exclude-tables. Если регулярное выражение соответствует полному квалифицированному имени таблицы (в форматеdb_name.table_name)), таблица включается или исключается из резервной копии. Используется синтаксис регулярных выражений расширенного формата, определённый в стандарте POSIX 1003.2. Параметры были реализованы с использованием библиотеки регулярных выражений RE2. Включение некоторых или всех таблиц InnoDB, но не других типов таблиц. Для этого используется параметр
--only-innodb.Исключение файлов, присутствующих в каталоге данных MySQL, но не являющихся частью экземпляра MySQL. Для этого используется параметр
--only-known-file-types.Достижение нескольких эффектов выбора с помощью комбинации вышеуказанных параметров.
Резервное копирование выбранных таблиц InnoDB с использованием . Для этого используются параметры
--use-ttsи--include-tablesили--exclude-tables(или оба).
Подробности синтаксиса всех используемых параметров см. в разделе 20.8 «Параметры частичного резервного копирования и восстановления».
Частичное резервное копирование, как правило, сложнее восстановить, чем полное резервное копирование, поскольку данные резервной копии могут не включать необходимые взаимосвязанные части для формирования полного экземпляра MySQL. В частности, таблицы InnoDB имеют внутренние идентификаторы и другие значения данных, которые могут быть восстановлены только в том же экземпляре, а не на другом сервере MySQL. Всегда полностью тестируйте процедуру восстановления для любых частичных резервных копий, чтобы понять соответствующие процедуры и ограничения.
Ниже приведены примеры команд для частичных резервных копий.
Включение всех таблиц с именами, начинающимися с “emp”, в резервную копию:
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
Создание резервной копии всех таблиц, за исключением таблиц из баз данных “mysql” и “performance_schema”:
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
Создание резервной копии всех таблиц в базе данных “sales”, но исключение таблицы с именем “hardware”
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
Создание резервной копии всех таблиц в базе данных “sales reps”, но исключение таблицы с именем “euro-asia” (специальные символы, такие как пробелы или дефисы, поддерживаются параметрами частичного резервного копирования):
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
Создание резервной копии всех таблиц InnoDB:
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 вместо этого.
Частичное резервное копирование, как правило, сложнее восстановить, чем полное резервное копирование, поскольку данные резервной копии могут не включать необходимые взаимосвязанные части для формирования полного экземпляра MySQL. В частности, таблицы InnoDB имеют внутренние идентификаторы и другие значения данных, которые могут быть восстановлены только в том же экземпляре, а не на другом сервере MySQL. Всегда полностью тестируйте процедуру восстановления для любых частичных резервных копий, чтобы понять соответствующие процедуры и ограничения.
С помощью параметра --include, mysqlbackup может создать резервную копию, включающую некоторые таблицы InnoDB, но не другие:
Частичная резервная копия с параметром
--includeвсегда содержит табличное пространство системы InnoDB и все таблицы внутри него.Для таблиц InnoDB, хранящихся за пределами табличного пространства системы, частичная резервная копия включает только те таблицы, имена которых соответствуют регулярному выражению, заданному с параметром
--include.
Для этого требуется, чтобы исключаемые таблицы хранились в отдельных файлах. Чтобы разместить таблицу InnoDB вне системного табличного пространства, создайте её при включённом параметре конфигурации MySQL. Каждый table_name.ibd.ibd файл содержит данные и индексы только одной таблицы.
Таблицы InnoDB, созданные с выключенным innodb_file_per_table параметром, хранятся обычно в InnoDB, и не могут быть исключены из резервной копии.
Для каждой таблицы с файлом данных на уровне таблицы проверяется строка в формате db_name.table_name по регулярному выражению, заданному параметром --include. Если регулярное выражение соответствует всей строке db_name.table_name, таблица включается в резервную копию. Используется синтаксис регулярных выражений расширенного формата, определённый в стандарте POSIX 1003.2. В системах Unix-подобных систем используйте правильные кавычки для регулярного выражения, чтобы предотвратить интерпретацию символов метакоманд оболочки. Эта функция реализована с использованием библиотеки регулярных выражений RE2.
Созданный каталог резервной копии содержит файл журнала резервной копии и копии файлов данных InnoDB.
ВАЖНО: Поскольку табличное пространство системы InnoDB содержит метаданные о таблицах InnoDB из всех баз данных в экземпляре, восстановление частичной резервной копии на сервере, включающем другие базы данных, может привести к потере следа этих таблиц InnoDB в других базах данных. Всегда восстанавливайте частичные резервные копии на новом экземпляре сервера MySQL без других таблиц InnoDB, которые вы хотите сохранить.
Пример 4.22 Создание несжатой частичной резервной копии таблиц InnoDB
В этом примере мы настроив MySQL таким образом, что некоторые таблицы InnoDB имеют собственные табличные пространства. Мы создаём частичную резервную копию, включающую только те таблицы InnoDB в базе данных test, имя которых начинается с ib. Ниже показано содержимое каталога базы данных для базы данных test. Из этих 10 таблиц шесть (alex1, alex2, alex3, blobt3, ibstest0, ibstest09) хранятся в файлах данных на уровне таблицы (файлы .ibd).
$ ls /sqldata/mts/test
alex2.ibd ibstest0.ibd alex1.ibd blobt3.ibd alex3.ibd ibtest09.ibd
Мы запускаем mysqlbackup с параметром --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.*.
Пример 4.23 Создание сжатой частичной резервной копии
Мы настроили MySQL таким образом, что каждая таблица InnoDB имеет своё собственное табличное пространство. Мы создаём частичную резервную копию, включающую только те таблицы InnoDB, имена которых начинаются с alex или blob. Ниже показано содержимое каталога базы данных для базы данных test.
$ ls /sqldata/mts/test
alex2.ibd ibstest0.ibd alex1.ibd blobt3.ibd alex3.ibd ibtest09.ibd
Мы запускаем mysqlbackup с параметрами --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
© 2025 Oracle
Licensed under the GPLv2 License.