Глава 6 Работа с зашифрованными таблицами InnoDB
MySQL Enterprise Backup поддерживает зашифрованные табличные пространства InnoDB. Подробную информацию о том, как сервер MySQL шифрует и расшифровывает табличные пространства InnoDB, можно найти в — там объясняются такие понятия, как главный ключ и ключи табличных пространств, которые важны для понимания работы MySQL Enterprise Backup с зашифрованными табличными пространствами InnoDB.
Когда шифрование табличных пространств InnoDB использует централизованное решение управления ключами, эта функция называется “Прозрачное шифрование данных MySQL Enterprise (TDE).”
Ниже приводится краткое описание того, как зашифрованные табличные пространства InnoDB обрабатываются MySQL Enterprise Backup при выполнении операций резервного копирования, восстановления и применения журнала.
Так как плагины keyring_file и keyring_encrypted_file были удалены из сервера MySQL начиная с версии 8.4.0, они больше не поддерживаются MySQL Enterprise Backup.
и поддерживаются MySQL Enterprise Backup. Зашифрованные табличные пространства отката и повтора обрабатываются так же, как и зашифрованные табличные пространства для InnoDB.
Создание резервной копии сервера базы данных с зашифрованными табличными пространствами InnoDB.
Для создания резервной копии зашифрованных табличных пространств InnoDB MySQL Enterprise Backup, пользователю операционной системы, который выполняет MySQL Enterprise Backup, необходимо иметь разрешение на запись для файла ключей на сервере, если на нем используется плагин keyring_aws.
Когда сервер базы данных использует зашифрованные табличные пространства InnoDB, MySQL Enterprise Backup всегда сохраняет главный ключ шифрования в зашифрованном файле внутри резервной копии, независимо от типа плагина или компонента ключей, используемого сервером. Ниже приведен типичный командный запрос для создания резервной копии сервера базы данных, содержащего зашифрованные табличные пространства InnoDB:
$ mysqlbackup --defaults-file=/home/dbadmin/my.cnf --backup-image=/home/admin/backups/my.mbi \
--backup-dir=/home/admin/backup-tmp --encrypt-password="password" backup-to-imageВо время операции резервного копирования mysqlbackup копирует зашифрованные файлы табличных пространств InnoDB в резервную копию и выполняет следующие действия:
mysqlbackup связывается с сервером MySQL, чтобы определить используемый плагин или компонент ключей сервера.
Если сервер использует компонент
component_keyring_encrypted_file, пользователь должен использовать параметр--encrypt-passwordдля передачи mysqlbackup пароля шифрования файла ключей, который был задан на сервере файломcomponent_keyring_encrypted_file.cnf. mysqlbackup затем копирует зашифрованные данные файла ключей с сервера, содержащие главный ключ, используемый для шифрования всех ключей табличных пространств, в папкуmetaрезервной копии и называет файлkeyring_kef; файл шифруется паролем, предоставленным с параметром--encrypt-password. Зашифрованные файлы табличных пространств также копируются в резервную копию.-
Если сервер использует плагин или компонент ключей, отличный от , mysqlbackup обращается к хранилищу ключей, чтобы получить главный ключ и использует его для расшифровки зашифрованных ключей табличных пространств, которые использовались для шифрования табличных пространств InnoDB на сервере. Главный ключ затем помещается в файл данных хранилища ключей, названный
keyring_kefи сохраняется в папкеmetaв резервной копии; файл шифруется паролем пользователя, предоставленным с параметром--encrypt-password.ПримечанияСоздание резервной копии сервера, использующего плагин или компонент ключей, отличный от , поддерживается только для серверов, которые позволяют подключения через сокеты или TCP/IP с использованием TLS; поэтому это не поддерживается, например, когда сервер работает на платформе Windows и допускает только подключения через общую память.
Пользователи, которые не хотят вводить пароль в командной строке или в файле по умолчанию, могут использовать параметр
--encrypt-passwordбез указания значения; mysqlbackup затем попросит пользователя ввести пароль перед началом операции. Это относится ко всем командам, использующим параметр--encrypt-password.Если сервер использует плагин
keyring_hashicorp, используйте параметр--encrypt-passwordдля предоставления секретного идентификатора аутентификации AppRole HashiCorp Vault, который был значением на сервере, подлежащем резервному копированию.
Команда extract или image-to-backup-dir для создания резервной копии образа, содержащей зашифрованные табличные пространства InnoDB, не требует параметра --encrypt-password.
Восстановление резервной копии с зашифрованными табличными пространствами InnoDB. Ниже приведен типичный командный запрос для восстановления резервной копии в одном файле, содержащей зашифрованные табличные пространства InnoDB:
$ mysqlbackup --defaults-file=/usr/local/mysql/my.cnf --backup-image=/home/admin/backups/my.mbi \
--backup-dir=/home/admin/restore-tmp --encrypt-password="password" copy-back-and-apply-logДля операции восстановления необходимо использовать тот же пароль, что и при создании резервной копии сервера базы данных, с помощью параметра --encrypt-password. Во время восстановления mysqlbackup копирует зашифрованные файлы табличных пространств InnoDB на сервер. Также выполняются следующие действия:
Если на сервере, с которого была создана резервная копия, использовался компонент ключей, mysqlbackup восстанавливает зашифрованный файл данных ключей в соответствующее местоположение на сервере, а также создает файл
manifestи конфигурационный файлcomponent_keyring_encrypted_file.cnf(который содержит пароль, используемый с параметром--encrypt-passwordпри восстановлении) на восстановленном сервере, чтобы сервер загружалcomponent_keyring_encrypted_fileпри перезапуске.Если на сервере, с которого была создана резервная копия, использовался компонент ключей, mysqlbackup использует пароль, предоставленный с помощью параметра
--encrypt-password, для расшифровки файла данных ключей и затем восстанавливает его в соответствующее местоположение на сервере. Также создаются файлmanifestи конфигурационный файлcomponent_keyring_file.cnfна восстановленном сервере, чтобы сервер загружал компонентcomponent_keyring_fileпри перезапуске.Если на сервере, с которого была создана резервная копия, использовался любой другой плагин ключей, mysqlbackup восстанавливает зашифрованный файл данных ключей в соответствующее местоположение на сервере. Восстановленный сервер должен быть запущен с
component_keyring_encrypted_file. mysqlbackup создает файлmanifestи конфигурационный файлcomponent_keyring_encrypted_file.cnf(который содержит пароль, используемый с параметром--encrypt-passwordпри восстановлении) на восстановленном сервере, чтобы сервер загружал при перезапуске.
Выполните следующие дополнительные шаги после завершения операции восстановления:
-
Для использования глобального манифеста и конфигурационного файла для запуска компонента ключей:
Скопируйте файл
manifestиз восстановленной директории данных в папку, где находится бинарникmysqld.Скопируйте конфигурационный файл
component_keyring_encrypted_file.cnfилиcomponent_keyring_file.cnf(в зависимости от способа восстановления резервной копии; см. обсуждение выше) из директории восстановления в папку, где находится бинарник компонента.
-
Для использования локального манифеста и конфигурационного файла для запуска компонента ключей:
-
Создайте новый файл
manifestс указанным ниже содержимым в папке, где находится бинарникmysqld:{ "read_local_manifest": true } -
Создайте новый конфигурационный файл
component_keyring_encrypted_file.cnfилиcomponent_keyring_file.cnf(в зависимости от способа восстановления резервной копии; см. обсуждение выше) с указанным ниже содержимым в папке, где находится бинарник компонента:{ "read_local_config": true }
-
Если вы хотите использовать другой плагин или компонент ключей (например, на сервере, с которого была создана резервная копия, использовался keyring_aws, и вы хотите, чтобы на восстановленном сервере использовался он же, или вы просто хотите переключиться на новый компонент или плагин), может быть выполнено переключение.
Для инкрементных резервных копий. Для серии инкрементных резервных копий, если на сервере используется компонент, отличный от component_keyring_encrypted_file, пользователи могут указать другое значение для --encrypt-password для любой полной или инкрементной резервной копии в последовательности резервных копий. Однако, для восстановления этой резервной копии необходимо указать тот же пароль, что и при создании конкретной полной или инкрементной резервной копии. Если используется любой плагин ключей, при запуске сервера после восстановления серии инкрементных резервных копий необходимо предоставить пароль, используемый для восстановления последней инкрементной резервной копии.
Расширенный: Создание и восстановление резервной копии каталога с зашифрованными таблицами InnoDB. Следующая команда типична для создания резервной копии каталога, содержащей зашифрованные таблица InnoDB:
$ mysqlbackup --defaults-file=/home/dbadmin/my.cnf --backup-dir=/home/admin/backup \
--encrypt-password="password" backupСледующая команда типична для подготовки резервной копии с помощью команды apply-log:
$ mysqlbackup --backup-dir=/home/admin/backup --encrypt-password="password" apply-logОбратите внимание, что пароль пользователя, предоставленный во время резервного копирования, должен быть передан с опцией --encrypt-password, так как ключи табличного пространства, а затем и сами табличные пространства должны быть расшифрованы перед применением журнала. То же требование относится к попытке обновления зашифрованной резервной копии с использованием зашифрованной приращения резервной копии с помощью команды apply-incremental-backup:
$ mysqlbackup --backup-dir=/home/admin/backup --incremental-backup-dir=/home/admin/backup-in \
--encrypt-password="password" apply-incremental-backupЕсли вы использовали разные значения для --encrypt-password для полных или приращения резервных копий в последовательности резервного копирования, убедитесь, что вы предоставляете именно тот пароль, который вы использовали для создания отдельной резервной копии, когда выполняете операцию apply-log или apply-incremental-backup.
Далее, команда copy-back восстанавливает подготовленную резервную копию на сервере:
$ mysqlbackup --defaults-file=/usr/local/mysql/my.cnf --backup-dir=/home/admin/backup copy-backОбратите внимание, что опция --encrypt-password не требуется на этом этапе.
Вы можете объединить два этапа apply-log и copy-back в один, выполнив команду copy-back-and-apply-log, для которой требуется опция --encrypt-password:
$ mysqlbackup --defaults-file=/usr/local/mysql/my.cnf --backup-dir=/home/admin/backup \
--encrypt-password="password" copy-back-and-apply-logОграничения. Существуют определенные ограничения, когда MySQL Enterprise Backup работает с зашифрованными таблицами InnoDB:
При частичных резервных копиях с использованием переносимых табличных пространств (то есть, когда используется опция
--use-tts), зашифрованные таблицы InnoDB никогда не включаются в резервную копию. В файле журнала выводится предупреждение всякий раз, когда зашифрованная таблица InnoDB, соответствующая критериям выбора таблиц, была пропущена.Опция
--skip-unused-pagesне оказывает никакого влияния на зашифрованные таблицы InnoDB во время резервного копирования (то есть пустые страницы для этих таблиц не пропускаются).Если сервер выполняет какое-либо действие при работе резервного копирования, полученная резервная копия может стать поврежденной.
© 2025 Oracle
Licensed under the GPLv2 License.