Spec-Zone.ru › MySQL 5.7

6.4.4.7 Миграция ключей между хранилищами ключей Keyring

Миграция ключей keyring копирует ключи из одного хранилища ключей в другое, позволяя администратору базы данных переключить установку MySQL на другое хранилище ключей. Успешная миграция приводит к следующему результату:

  • В целевом хранилище ключей будут ключи, которые у него были до миграции, плюс ключи из исходного хранилища.

  • Исходное хранилище ключей остается неизменным до и после миграции (поскольку ключи копируются, а не перемещаются).

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

В следующих разделах рассматриваются особенности офлайн и онлайн-миграций и описывается, как выполнить миграцию.

  • Офлайн и онлайн миграции ключей

  • Миграция ключей с использованием сервера миграции

  • Миграция ключей с участием нескольких работающих серверов

Офлайн и онлайн миграции ключей

Миграция ключей может быть офлайн или онлайн:

  • Офлайн-миграция: Используется, когда вы уверены, что ни один работающий сервер на локальном хосте не использует исходное или целевое хранилище ключей. В этом случае операция миграции может копировать ключи из исходного хранилища в целевое без возможности изменения содержимого хранилища ключей работающим сервером во время операции.

  • Онлайн-миграция: Используется, когда работающий сервер на локальном хосте использует исходное или целевое хранилище ключей. В этом случае необходимо позаботиться о предотвращении обновления хранилищ ключей сервером во время миграции. Это включает подключение к работающему серверу и инструктирование его приостановить операции keyring, чтобы ключи могли быть безопасно скопированы из исходного хранилища в целевое. После завершения копирования ключей работающий сервер разрешено возобновить операции keyring.

При планировании миграции ключей используйте эти моменты, чтобы решить, должна ли она быть офлайн или онлайн:

  • Не выполняйте офлайн-миграцию, затрагивающую хранилище ключей, которое используется работающим сервером.

  • Приостановка операций keyring во время онлайн-миграции выполняется путем подключения к работающему серверу и установки его глобальной системной переменной keyring_operations в значение OFF перед копированием ключей и ON после копирования ключей. Это имеет несколько последствий:

    • keyring_operations была введена в MySQL 5.7.21, поэтому онлайн-миграция возможна только в том случае, если работающий сервер имеет MySQL 5.7.21 или более позднюю версию. Если работающий сервер старше, вы должны его остановить, выполнить офлайн-миграцию и перезапустить его. Все инструкции по миграции в других местах, которые ссылаются на keyring_operations, подчиняются этому условию.

    • Аккаунт, используемый для подключения к работающему серверу, должен иметь привилегию SUPER, необходимую для изменения keyring_operations.

    • При онлайн-миграции операция миграции позаботится о включении и отключении keyring_operations на работающем сервере. Если операция миграции завершится аварийно (например, если она будет принудительно прервана), возможно, что keyring_operations останется отключенным на работающем сервере, что сделает его неспособным выполнять операции keyring. В этом случае может потребоваться подключиться к работающему серверу и вручную включить keyring_operations с помощью этого оператора:

      SET GLOBAL keyring_operations = ON;
      
  • Онлайн-миграция ключей обеспечивает приостановку операций keyring на одном работающем сервере. Чтобы выполнить миграцию, если несколько работающих серверов используют вовлеченные хранилища ключей, используйте процедуру, описанную в разделе Миграция ключей с участием нескольких работающих серверов.

Миграция ключей с помощью сервера миграции

Начиная с MySQL 5.7.21, MySQL-сервер становится сервером миграции, если он запущен в специальном режиме, поддерживающем миграцию ключей. Сервер миграции не принимает подключения клиентов. Вместо этого он работает только достаточно долго, чтобы мигрировать ключи, а затем завершается. Сервер миграции сообщает об ошибках в консоль (стандартный вывод ошибок).

Для выполнения операции миграции ключей с помощью сервера миграции определите параметры миграции ключей, необходимые для указания вовлечённых плагинов или компонентов хранилища ключей, а также того, является ли миграция офлайн или онлайн:

  • Для указания исходного и целевого плагинов хранилища ключей укажите следующие параметры:

    • --keyring-migration-source: Исходный плагин хранилища ключей, управляющий ключами, подлежащими миграции.

    • --keyring-migration-destination: Целевой плагин хранилища ключей, в который будут скопированы мигрированные ключи.

    Эти параметры сообщают серверу о запуске в режиме миграции ключей. Для операций миграции ключей оба параметра являются обязательными. Исходный и целевой плагины должны отличаться, и сервер миграции должен поддерживать оба плагина.

  • Для офлайн-миграции дополнительных параметров миграции ключей не требуется.

  • Для онлайн-миграции некоторые работающие серверы в настоящее время используют исходное или целевое хранилище ключей. Чтобы запустить сервер миграции, укажите дополнительные параметры миграции ключей, которые указывают, как подключиться к работающему серверу. Это необходимо, чтобы сервер миграции мог подключиться к работающему серверу и попросить его приостановить использование хранилища ключей во время операции миграции.

    Использование любого из следующих параметров означает онлайн-миграцию:

    • --keyring-migration-host: Хост, на котором расположен работающий сервер. Это всегда локальный хост, так как сервер миграции может мигрировать ключи только между хранилищами ключей, управляемыми локальными плагинами.

    • --keyring-migration-user, --keyring-migration-password: Данные учетной записи для подключения к работающему серверу.

    • --keyring-migration-port: Для подключений TCP/IP — номер порта для подключения к работающему серверу.

    • --keyring-migration-socket: Для подключений по Unix-сокету или Windows-именованной трубе — имя сокета или именованной трубы для подключения к работающему серверу.

Дополнительные сведения о параметрах миграции ключей см. в разделе 6.4.4.11, «Параметры команды хранилища ключей».

Запустите сервер миграции с параметрами миграции ключей, указывающими исходное и целевое хранилища ключей и тип миграции (офлайн или онлайн), возможно, с другими параметрами. Учтите следующее:

  • Могут потребоваться и другие параметры сервера, например, параметры конфигурации для двух плагинов хранилища ключей. Например, если keyring_file — источник или приемник, необходимо установить системную переменную keyring_file_data, если расположение файла данных хранилища ключей отличается от стандартного. Возможно, потребуются и другие параметры, не относящиеся к хранилищу ключей. Один из способов указать эти параметры — использование --defaults-file для указания файла параметров, содержащего необходимые параметры.

  • Сервер миграции ожидает, что значения параметров пути будут полными путями. Относительные пути могут не разрешаться так, как вы ожидаете.

  • Пользователь, запускающий сервер в режиме миграции ключей, не должен быть системным пользователем root операционной системы, если не указан параметр --user с именем пользователя, отличным от root, для запуска сервера от этого пользователя.

  • Пользователь, от имени которого запускается сервер в режиме миграции ключей, должен иметь разрешение на чтение и запись любых локальных файлов хранилища ключей, таких как файл данных для плагина на основе файлов.

    Если вы запускаете сервер миграции от системной учётной записи, отличающейся от той, которая обычно используется для запуска MySQL, он может создать каталоги или файлы хранилища ключей, недоступные для сервера во время обычной работы. Предположим, что mysqld обычно запускается от системного пользователя mysql, но вы запускаете сервер миграции, будучи вошедшим под пользователем isabel. Любые новые каталоги или файлы, созданные сервером миграции, будут принадлежать пользователю isabel. Последующий запуск завершится ошибкой, когда сервер, запущенный как системный пользователь mysql, попытается получить доступ к объектам файловой системы, принадлежащим пользователю isabel.

    Чтобы избежать этой проблемы, запустите сервер миграции от системного пользователя root и укажите параметр --user=user_name, где user_name — это системная учётная запись, обычно используемая для запуска MySQL. В качестве альтернативы после миграции проверьте объекты файловой системы, связанные с хранилищем ключей, и измените их владельца и права доступа при необходимости с помощью команд chown, chmod или аналогичных команд, чтобы эти объекты были доступны работающему серверу.

Пример командной строки для офлайн-миграции (введите команду в одну строку):

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_file.so
  --keyring-migration-destination=keyring_encrypted_file.so
  --keyring_encrypted_file_password=password

Пример командной строки для онлайн-миграции:

mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
  --keyring-migration-source=keyring_file.so
  --keyring-migration-destination=keyring_encrypted_file.so
  --keyring_encrypted_file_password=password
  --keyring-migration-host=127.0.0.1
  --keyring-migration-user=root
  --keyring-migration-password=root_password

Сервер миграции ключей выполняет операцию миграции следующим образом:

  1. (Только для онлайн-миграции) Подключение к работающему серверу с использованием параметров подключения.

  2. (Только для онлайн-миграции) Отключение keyring_operations на работающем сервере.

  3. Загрузка исходного и целевого плагинов хранилища ключей.

  4. Копирование ключей из исходного хранилища ключей в целевое.

  5. Выгрузка плагинов хранилища ключей.

  6. (Только для онлайн-миграции) Включение keyring_operations на работающем сервере.

  7. (Только для онлайн-миграции) Отключение от работающего сервера.

Если во время миграции ключей произошла ошибка, целевое хранилище ключей восстанавливается до состояния до миграции.

Важно

Для онлайн-операции миграции сервер миграции позаботится об включении и отключении keyring_operations на работающем сервере. Если сервер миграции завершается аварийно (например, если он принудительно завершен), keyring_operations на работающем сервере может остаться отключённым, что сделает невозможным выполнение операций с хранилищем ключей. В этом случае может потребоваться подключиться к работающему серверу и включить keyring_operations вручную с помощью этой команды:

SET GLOBAL keyring_operations = ON;

После успешной онлайн-операции миграции ключей работающему серверу может потребоваться перезапуск:

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

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

  • Если работающий сервер до миграции использовал исходное хранилище ключей, но должен использовать целевое после миграции, его необходимо перенастроить на использование целевого хранилища ключей и перезапустить. В этом случае учтите, что хотя работающий сервер приостановлен от модификации исходного хранилища ключей во время самой миграции, он не приостановлен в промежутке между миграцией и последующим перезапуском. Следует позаботиться о том, чтобы сервер не изменял исходное хранилище ключей в этом промежутке, так как такие изменения не будут отражены в целевом хранилище.

Миграция ключей с участием нескольких работающих серверов

Онлайн-миграция ключей позволяет приостановить операции с хранилищем ключей на одном работающем сервере. Чтобы выполнить миграцию, если несколько работающих серверов используют вовлечённые хранилища ключей, выполните следующие действия:

  1. Вручную подключитесь к каждому работающему серверу и установите keyring_operations=OFF. Это гарантирует, что ни один работающий сервер не использует исходное или целевое хранилище ключей и выполняет условие для офлайн-миграции.

  2. Используйте сервер миграции для выполнения офлайн-миграции ключей для каждого приостановленного сервера.

  3. Вручную подключитесь к каждому работающему серверу и установите keyring_operations=ON.

Все работающие серверы должны поддерживать системную переменную keyring_operations. Любой сервер, который этого не поддерживает, должен быть остановлен до миграции и запущен после.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/keyring-key-migration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API