Утилита migrate-cache-configuration.sh#
В дистрибутив DataGrid входит консольная утилита, предназначенная для миграции конфигураций кешей на кластер DataGrid — Cache Configurations Migration Tool. Утилита сравнивает текущую конфигурацию кешей кластера с новой, создает недостающие кеши, индексы и поля.
Утилита Cache Configurations Migration Tool поддерживает Spring XML-конфигурацию кешей и предоставляет функциональности:
создание новых кешей;
создание новых таблиц;
создание полей в таблицах;
удаление полей в таблицах;
создание новых индексов.
Сборка утилиты#
Выполните следующую команду для сборки утилиты:
mvn clean install -Dmaven.test.skip=true
Результат сборки — архив target/ignite-migrate-cache-configuration.zip.
Конфигурация утилиты#
Перед запуском конфигурации утилиты:
Разместите скрипт
mirgate-cache-configuration.shв каталогеIGNITE_HOME/bin/migrate-cache-configuration.sh.Убедитесь в том, что в
classpathна всех узлах кластера присутствует каталогlibs/ignite-migrate-cache-configuration.
Утилита использует IgniteLogger из конфигурации клиентского узла для логирования и логируется в отдельный файл как отдельное приложение migrate-cache-configuration.
Конфигурирование JVM-опций#
JVM-параметры можно задать:
переменной окружения
MIGRATE_CACHE_CFG_JVM_OPTS:export MIGRATE_CACHE_CFG_JVM_OPTS="-Dgroup.id=test_group_id -Dnode.id=test_node_id -Dmodule.id=igniteSE -Dconfig-store.disabled=False"при инициализации клиентского узла в XML-конфигурации (указывается в
serverExampleConfig.xml):XML#<!-- Добавьте свойство 'depends-on' к beans, которые работают с системными переменными. --> <bean id="igniteConfigurator" class="com.sbt.core.commons.config_spring.PlatformPlaceholderConfigurer" depends-on="addSystemProperties"> ... </bean> <!-- Конфигурирование системных переменных. --> <bean id="systemProperties" class="java.lang.System" factory-method="getProperties"/> <bean id="addSystemProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="systemProperties" /> <property name="targetMethod" value="putAll" /> <property name="arguments"> <util:map map-class="java.util.HashMap"> <entry key="group.id" value="test_group_id"/> <entry key="node.id" value="test_node_id"/> <entry key="module.id" value="igniteSE"/> <entry key="config-store.disabled" value="False"/> </util:map> </property> </bean>
Использование утилиты#
Синтаксис команды:
migrate-cache-configuration.sh <Путь к XML-конфигурации клиентского узла> <Путь к XML-конфигурации кешей> [--migrate] [--help]
Запуск без ключей выводит информацию об изменениях режиме «read-only».
Описание параметров:
Ignite Cfg Path— путь к XML-конфигурации клиентского узла;Caches Cfg Path— путь к XML-конфигурации кешей.
Описание ключей:
--help— вывод справочной информации;--migrate— запуск для миграции конфигурации кешей на кластер DataGrid.
Вывод утилиты Cache Configurations Migrate Tool содержит информацию:
конфигурацию кластера до вызова утилиты;
вычисленные изменения;
произведенные действия;
конфигурацию кластера после вызова утилиты.
Пример вывода утилиты#
Вывод утилиты при выполнении команды миграции migrate-cache-configuration.sh <Путь к XML-конфигурации клиентского узла> <Путь к XML-конфигурации кешей> [--migrate]:
...
Cluster info before migration:
...
Cache configurations changes:
New caches:
[cacheName=new-cache1]
[cacheName=new-cache2]
Table changes [cacheName=test-static-cache, tableName=test-static-cache]
Dropped fields:
[name=ORGID]
New fields:
[name=name, type=java.lang.String]
New indexes:
[indexName=PERSON_NAME_ASC_IDX]
[indexName=PERSON_ID_ASC_NAME_ASC_IDX]
...
New caches created [cacheNames=[new-cache1, new-cache2]]
Executed SQL [sql=ALTER TABLE PERSON DROP COLUMN IF EXISTS "ORGID"]
Executed SQL [sql=ALTER TABLE PERSON ADD COLUMN IF NOT EXISTS "NAME" VARCHAR]
Executed SQL [sql=CREATE INDEX IF NOT EXISTS PERSON_NAME_ASC_IDX ON PERSON ("name" ASC)]
Executed SQL [sql=CREATE INDEX IF NOT EXISTS PERSON_ID_ASC_NAME_ASC_IDX ON PERSON ("id" ASC, "name" ASC)]
...
Cluster info after migration:
...
где:
cacheName=new-cache1— имя/имена новых кешей;tableName=test-static-cache— имена новых таблиц;name=name, type=java.lang.String— имена и типы новых полей в таблицах;indexName=PERSON_NAME_ASC_IDX— имена новых новых индексов.