6.11 Модернизация схемы метаданных
По мере развития AdminAPI некоторые релизы могут потребовать от вас модернизации метаданных существующих ClusterSets, ReplicaSets и кластеров, чтобы обеспечить их совместимость с более новыми версиями MySQL Shell. Например, добавление InnoDB ReplicaSet в версии 8.0.19 означает, что схема метаданных была модернизирована до версии 2.0. Независимо от того, планируете ли вы использовать InnoDB ReplicaSet или нет, для использования MySQL Shell 8.0.19 или более поздних версий с кластером, развернутым с помощью более ранней версии MySQL Shell, необходимо обновить метаданные вашего кластера.
Без модернизации метаданных вы не можете использовать MySQL Shell для изменения конфигурации кластера, созданного с более ранними версиями. Например, вы можете выполнять только операции чтения с кластером, такие как:
Cluster.status()Cluster.describe()Cluster.options()
Операция dba.upgradeMetadata() сравнивает версию схемы метаданных, найденную в ClusterSet, ReplicaSet или InnoDB Cluster, к которому в данный момент подключен MySQL Shell, с версией схемы метаданных, поддерживаемой этой версией MySQL Shell. Если найденная версия метаданных ниже, запускается процесс модернизации. Функция dba.upgradeMetadata() затем обновляет всех автоматически созданных пользователей MySQL Router, чтобы у них были правильные привилегии. Рукотворно созданные пользователи MySQL Router с именем, не начинающимся с mysql_router_, не обновляются автоматически. Это важный шаг при модернизации ClusterSet, ReplicaSet или InnoDB Cluster, только тогда можно обновить метаданные MySQL Router. Чтобы получить информацию о том, какие из экземпляров MySQL Router, зарегистрированных в ClusterSet, ReplicaSet или Cluster, требуют модернизации метаданных, используйте функцию .listRouters(). Например, чтобы вывести список экземпляров Router, связанных с кластером, используя присвоенную переменную cluster, выполните:
cluster.listRouters({'onlyUpgradeRequired':'true'})
{
"clusterName": "mycluster",
"routers": {
"example.com::": {
"hostname": "example.com",
"lastCheckIn": "2019-11-26 10:10:37",
"roPort": 6447,
"roXPort": 64470,
"rwPort": 6446,
"rwXPort": 64460,
"version": "8.0.18"
}
}
}
В этом примере опция onlyUpgradeRequired включена в функцию listRouters(). onlyUpgradeRequired — это булево значение, которое позволяет фильтрацию, поэтому в возвращаемом объекте JSON будут содержаться только экземпляры маршрутизаторов, поддерживающие более старые версии схемы метаданных и требующие модернизации.
Для модернизации метаданных ClusterSet, ReplicaSet или Cluster подключите глобальную сессию MySQL Shell к вашему ClusterSet, ReplicaSet или Cluster и используйте операцию dba.upgradeMetadata() для модернизации метаданных ClusterSet, ReplicaSet или Cluster до новой версии. Например:
mysql-js> shell.connect('user@example.com:3306')
mysql-js> dba.upgradeMetadata()
InnoDB Cluster Metadata Upgrade
The cluster you are connected to is using an outdated metadata schema version
1.0.1 and needs to be upgraded to 2.0.0.
Without doing this upgrade, no AdminAPI calls except read only operations will
be allowed.
The grants for the MySQL Router accounts that were created automatically when
bootstrapping need to be updated to match the new metadata version's
requirements.
Updating router accounts...
NOTE: 2 router accounts have been updated.
Upgrading metadata at 'example.com:3306' from version 1.0.1 to version 2.0.0.
Creating backup of the metadata schema...
Step 1 of 1: upgrading from 1.0.1 to 2.0.0...
Removing metadata backup...
Upgrade process successfully finished, metadata schema is now on version 2.0.0
Если установленная версия метаданных ниже, запускается процесс модернизации.
Функция dba.upgradeMetadata() принимает следующие опции:
dryRun: это булево значение, используемое для включения пробного выполнения процесса модернизации. ЕслиdryRunиспользуется, функцияdba.upgradeMetadata()определяет, требуется ли модернизация или восстановление метаданных, и сообщает вам об этом, не выполняя фактически операцию.-
interactive: это булево значение, используемое для отключения или включения мастеров в выполнении команды, что означает, что подсказки и подтверждения будут предоставлены или не предоставлены в соответствии с заданным значением. Значение по умолчанию равно режиму мастера MySQL Shell.Эта опция устарела и может быть удалена в будущих версиях MySQL Shell.
Если вы столкнулись с ошибкой, связанной с тем, что у пользователя ClusterSet, ReplicaSet или Cluster отсутствуют привилегии администрирования, используйте соответствующую операцию .setupAdminAccount() с опцией обновления для предоставления пользователю необходимых привилегий:
-
Создание или обновление учетной записи MySQL пользователя с необходимыми привилегиями для администрирования InnoDB Cluster:
<Cluster>.setupAdminAccount(user, options) Создание или обновление учетной записи MySQL пользователя с необходимыми привилегиями для администрирования InnoDB ReplicaSet:
<ReplicaSet>.setupAdminAccount(user, options)
© 2025 Oracle
Licensed under the GPLv2 License.