6.10 Модернизация схемы метаданных
По мере развития 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, к которому в настоящее время подключен MySQL Shell, с версией схемы метаданных, поддерживаемой этой версией MySQL Shell. Если найденная версия метаданных ниже, запускается процесс модернизации. Функция dba.upgradeMetadata() затем обновляет всех автоматически созданных пользователей MySQL Router, чтобы они имели правильные привилегии. Рукотворно созданные пользователи MySQL Router с именем, не начинающимся с mysql_router_, не обновляются автоматически. Это важный шаг в модернизации вашего набора кластеров (ClusterSet), набора реплик (ReplicaSet) или кластера InnoDB; только после этого можно модернизировать метаданные MySQL Router. Чтобы просмотреть информацию о том, какие из экземпляров MySQL Router, зарегистрированных в наборе кластеров (ClusterSet), наборе реплик (ReplicaSet) или кластере, требуют модернизации метаданных, используйте функцию .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"
}
}
}
В этом примере в функцию listRouters() включен параметр onlyUpgradeRequired. onlyUpgradeRequired — это булево значение, которое включает фильтрацию, поэтому в возвращаемом объекте JSON содержатся только экземпляры маршрутизаторов, которые поддерживают более старые версии схемы метаданных и требуют модернизации.
Для модернизации метаданных набора кластеров (ClusterSet), набора реплик (ReplicaSet) или кластера подключите глобальную сессию MySQL Shell к вашему набору кластеров (ClusterSet), набору реплик (ReplicaSet) или кластеру и используйте операцию dba.upgradeMetadata() для модернизации метаданных набора кластеров (ClusterSet), набора реплик (ReplicaSet) или кластера до новых метаданных. Например:
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()определяет, требуется ли модернизация или восстановление метаданных, и сообщает вам об этом, не выполняя фактически операцию.
Если вы столкнулись с ошибкой, связанной с тем, что у пользователя администрирования набора кластеров (ClusterSet), набора реплик (ReplicaSet) или кластера отсутствуют привилегии, используйте соответствующую операцию .setupAdminAccount() с параметром обновления, чтобы предоставить пользователю правильные привилегии:
-
Создание или модернизация учетной записи пользователя MySQL с необходимыми привилегиями для администрирования кластера InnoDB:
<Cluster>.setupAdminAccount(user, options) Создание или модернизация учетной записи пользователя MySQL с необходимыми привилегиями для администрирования набора реплик InnoDB:
<ReplicaSet>.setupAdminAccount(user, options)
© 2025 Oracle
Licensed under the GPLv2 License.