Плагин для работы с кеш-дампами#
Внимание
Функциональность находится в статусе Alpha. Она может содержать ошибки, которые не обнаружили во время синтетического тестирования. В процессе эксплуатации могут возникать проблемы в работе. Эта версия может содержать не все запланированные функции и возможности. Разработчики могут добавлять новые функции или улучшать существующие в следующих релизах.
Введение#
Кеш-дамп (далее — дамп) — консистентная копия данных кеша, которая записана в файлах на диске. Структура файла дампа — список. В файле друг за другом записаны каждая пара «ключ-значение» соответствующей партиции.
Чтобы защитить данные, при хранении для каждой пары «ключ-значение» вычисляется циклический избыточный код (CRC).
Дампы компактнее, чем полные снепшоты. Это связано с тем, что полные снепшоты сохраняют физическую структуру Page memory, поэтому сохраняются и все накладные расходы на организацию эффективного файлового хранилища.
Кроме данных, дамп содержит всю необходимую для обработки информацию:
данные кеша;
конфигурация кеша;
файлы
binary metadata;файлы
marshaller;метаданные дампа.
Ключевые отличия дампа от полного снепшота:
дамп можно формировать для in-memory кешей;
в дампе не хранятся индексы;
размер дампа существенно меньше, чем PDS;
есть утилита и API для оффлайн-обработки сохраненных в дампе данных.
Совпадающие с полными снепшотами свойства дампов:
В начале снятия происходит PME.
Есть потеря производительности во время снятия.
Повышенный расход Java heap во время снятия.
Не нужно останавливать пользовательскую нагрузку. Дамп можно снимать одновременно с пользовательскими операциями.
Работа с дампами#
Функциональность дампов состоит из двух модулей:
Снятие дампа — выполняется на кластере DataGrid с помощью команды
control.sh --dump. Для запуска команды снятия дампа нужны праваADMIN_SNAPSHOT.Восстановление (чтение) дампа — выполняется с помощью утилиты
ignite-dump-reader.sh. Утилита восстановления соединяется с кластером с помощью указанной в опциях конфигурации. Нужны права на создание кеша и вставку в него данных.
Снятие и проверка дампа#
Команды снятия и проверки дампа интегрированы в control.sh.
Синтаксис команды снятия дампа:
control.(sh|bat) --dump create --name name [--dest path] [--only-primary] [[--groups group1[,group2,....,groupN]]|[--in-memory-only]] [--compress] [--encrypt]
Опции:
Имя |
Значение по умолчанию |
Описание |
|---|---|---|
|
- |
Имя дампа |
|
|
Каталог для хранения дампа. Если не указан, дамп будет записан в каталог для хранения снепшотов |
|
|
Создавать дамп только primary-партиций кеша |
|
|
Имена кеш-групп, которые должны быть включены в дамп (через запятую) |
|
|
Включить в дамп только in-memory кеши |
|
|
Включить сжатие файлов дампа партиций в формате |
|
|
Шифровать данные перед записью на диск |
Ограничения:
Следует задавать только одну из опций —
--in-memory-onlyили--groups.Если обе опции
--in-memory-onlyи--groupsзаданы одновременно, возникнет ошибка.Если обе опции
--in-memory-onlyи--groupsне заданы, в дамп попадут все кеши, в том числе persistent-кеши.
Синтаксис команды проверки дампа:
control.(sh|bat) --dump check --name name [--src path]
Опции:
Имя |
Значение по умолчанию |
Описание |
|---|---|---|
|
- |
Имя дампа |
|
|
Каталог, где расположены файлы дампа. Если не указан, будет использован каталог хранения снепшотов по умолчанию |
Ограничение скорости при снятии дампа#
Для ограничения скорости снятия дампа используйте свойство snapshotTransferRate, которое задает ограничение в байт/с.
Конфигурация и использование аналогичны ограничителю скорости при снятии снепшота. Подробнее — в подразделе «Работа со снепшотами» раздела «Утилита control».
Восстановление дампа#
Восстановление дампа производится с помощью ignite-dump-reader.sh.
Опции:
Имя |
Значение по умолчанию |
Описание |
|---|---|---|
|
- |
Полный путь к директории с дампом |
|
|
Флаг восстановления кешей. Если флаг указан, данные дампа будут вставлены в кластер |
|
|
URL для соединения тонкого клиента с кластером |
|
|
Путь к XML-файлу с конфигурационным файлом Spring. Ожидается наличие bean |
|
|
Путь к XML-файлу с конфигурационным файлом Spring. Ожидается наличие bean |
|
|
Не создавать кеши |
|
|
Игнорировать сохраненное в дампе значение |
|
|
Количество потоков, которые обрабатывают дамп. Каждый поток одновременно обрабатывает |
|
|
Имена кеш-групп из дампа, которые нужно обработать |
|
|
Если каталог с дампом содержит данные с нескольких узлов и значение опции — |
|
|
Если больше |
|
|
Если установлено |
|
|
|
|
|
Настройка |
|
|
Настройка |
|
|
Настройка |
|
|
Настройка |
|
|
Настройка |
|
|
Вставлять данные с использованием сохраненной версии и вызовов |
|
|
Имя класса, который реализует интерфейс |
Восстановления дампа на кластере с включенным плагином безопасности через толстого клиента#
При запуске восстановления дампа на кластере с включенным плагином безопасности через толстого клиента нужно указать дополнительные JVM-опции для клиента:
DIGNITE_CLUSTER_NAME;DIGNITE_CLUSTER_TYPE.
При использовании Cipher Suites TLS_RSA_WITH_NULL_SHA256 для серверных узлов и толстых клиентов нужно дополнительно разрешить их использование в java.security. Если изменения невозможно внести локально, используйте собственный файл java.security с исправленными опциями через JVM-опцию -Djava.security.properties=/opt/ignite/server/config/java.security с путем к каталогу, где хранится файл конфигурации.
Также нужно следить за размером heap: при больших объемах данных требуется большой размер heap. Например, при использовании синтетических данных потребовалось 16 Гб данных на дамп размером 140 Гб. Задается через JVM-опции -Xmx16g -Xms16g. Размер heap и настройку GC нужно подбирать исходя из испытаний на стендах для нагрузочного тестирования.
Пример команды для экспорта JVM-опций:
export CONTROL_JVM_OPTS="-DIGNITE_CLUSTER_NAME=ise -DIGNITE_CLUSTER_TYPE=dev -Djava.security.properties=/opt/ignite/server/config/java.security -Xmx16g -Xms16g"
Внимание
Кеши, которые создали через клиентские узлы (thick clients) или серверные узлы, должны восстанавливаться с использованием клиентского узла (
--client-node-config). Восстановление через тонкий клиент возможно, но часть конфигурации кеша может быть утеряна.
Шифрование дампов#
Для защиты конфиденциальных данных, которые содержатся в дампе, он может быть зашифрован стандартными средствами шифрования DataGrid — EncryptionSPI.
Снятие зашифрованного дампа#
Порядок снятия зашифрованного дампа:
В начале снятия на каждом узле создается новый ключ шифрования —
EncryptionSPI#create().С помощью этого ключа шифруется каждая пара «ключ-значение», которая записывается на диск.
Данные записываются на диск в зашифрованном виде. Незашифрованных данных на диске нет.
Ключ шифрования шифруется с помощью мастер-ключа —
EncryptionSPI#getMasterKeyName()— и в зашифрованном виде сохраняется в метафайле дампа.Цифровая подпись мастер-ключа
EncryptionSPI#masterKeyDigest()сохраняется в метафайле дампа.
Чтобы создать зашифрованный дамп:
Настройте
EncryptionSPIдля серверных узлов (например, через конфигурацию Spring XML):
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
...
<property name="encryptionSpi">
<bean class="org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionSpi">
<property name="keyStorePath" value="/path/to/key_storage.jks" />
<property name="keyStorePassword" value="key_storage_password" />
</bean>
</property>
...
</bean>
Проверка для зашифрованного дампа производится так же, как для незашифрованного, с помощью команды:
control.(sh|bat) --dump check --name name [--src path]
Создайте дамп с опцией
--encrypt.
Восстановление зашифрованного дампа#
Алгоритм восстановления зашифрованного дампа:
Проверяется соответствие мастер-ключа при чтении и снятии. Затем сравнивается подпись из метафайла дампа и то, что вернет
EncryptionSPI#masterKeyDigest()при чтении. При несовпадении выдается ошибка.Расшифровывается ключ шифрования, который сохранен в метафайле дампа —
EncryptionSPI#decryptKey.Расшифровывается каждая запись в памяти. Незашифрованные данные не записываются на диск и существуют только в памяти.
Внутри каждой записи хранится CRC (его значение хранится в зашифрованном виде). После расшифровки проверяется CRC открытых данных. При несовпадении выдается ошибка.
Чтобы восстановить зашифрованный дамп:
Настройте
EncryptionSPIв конфигурационном файле.Пример конфигурации для тонкого клиента:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="client.cfg" class="org.apache.ignite.configuration.ClientConfiguration"> <property name="addresses"> <list> <value>localhost:10800</value> </list> </property> </bean> <bean id="encSpi" class="org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionSpi"> <property name="keyStorePath" value="/path/to/key_storage.jks" /> <property name="keyStorePassword" value="key_storage_password" /> </bean> </beans>Восстановите дамп командой:
./bin/ignite-dump-reader.sh --dump <path-to-dump> --restore --thin-config <path-to-thin-client-config.xml>или
./bin/ignite-dump-reader.sh --dump <path-to-dump> --restore --client-node-config <path-to-client-node-config.xml>где
path-to-thin-client-config.xml— путь к файлу конфигурации тонкого клиента;path-to-client-node-config.xml— путь к файлу конфигурации клиентского узла.
Логирование#
Логирование при снятии#
Логирование при снятии дампов происходит аналогично логированию при снятии снепшотов.
Логирование при восстановлении#
При работе утилиты восстановления дампов ignite-dump-reader.sh события записываются в отдельный log-файл. Путь к этому log-файлу выводится в терминале при запуске ignite-dump-reader.sh.
Пример вывода ignite-dump-reader.sh:
...
[18:27:25] Quiet mode.
[18:27:25] ^— Logging to file '/opt/ignite/server/logs/dump-reader-85bcc08d.log'
[18:27:25] ^— Logging by 'Log4J2Logger [quiet=true, config=null]'
[18:27:25] ^— To see *FULL* console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat}
...
где /opt/ignite/server/logs/dump-reader-85bcc08d.log — путь к log-файлу утилиты восстановления дампов.
Сценарий работы#
Рекомендуемый сценарий работы с дампами:
По расписанию или перед работами администратор снимает дамп.
Примечание
Целостность данных можно проверить с помощью утилиты
controlс опциями--dump check.Данные дампа хранятся на каждом узле. Локально сохраняются партиции, которые расположены на узле в момент снятия дампа.
Для уменьшения объема хранения и увеличения скорости восстановления используйте режим
--only-primary.Для восстановления после потери всех серверов кластера данные дампа нужно скопировать во внешнее хранилище.
Чтобы восстановить дамп, запустите утилиту восстановления на каждом узле, где хранятся данные дампа.
Примечание
Утилита обрабатывает только локальные данные.
Если данные дампа аккумулированы во внешнем хранилище, достаточно запустить один экземпляр утилиты. Она обработает данные со всех узлов, которые есть внутри локального дампа.
Внимание
Проверка дампа оказывает существенное влияние на производительность узла, поэтому не рекомендуется выполнять проверку под нагрузкой.
Режим восстановления --for-cdc#
Режим предназначен для реплицированного восстановления данных с помощью кеша CDC.
При указании флага данные из дампа будут вставлены в кеш с помощью вызовов putConflict с указанием сохраненной версии пары «ключ-значение».
В этом режиме будет использоваться conflictResolver — это позволяет отбросить из дампа те пары «ключ-значения», которые уже есть в кеше в более «новом» состоянии.
Предполагаемый сценарий восстановления после сбоя межкластерной репликации:
Репликация была запущена, затем остановлена.
Включите репликацию в обычном режиме.
Снимите дамп на активном кластере.
Внимание
В случае репликации в режиме Active-Active дампы нужно снять на обоих кластерах.
Сделайте восстановление (restore) дампа на кластере с опцией
--for-cdc:При вставке из дампа каждой пары «ключ-значение» будет известны ее значение и версия на активном кластере. Будет использоваться
conflictResolver.Те пары «ключ-значение», которые к моменту восстановления дампа уже были реплицированы CDC, останутся без изменений.
Те пары «ключ-значение», которых еще нет на кластере в момент восстановления, будут загружены из дампа.
Пример использования#
Снимите дамп командой:
./control.sh --dump create --name first_dump Control utility [ver. 2.16.0-SNAPSHOT#20231113-sha1:fd8757e4] 2023 Copyright(C) Apache Software Foundation User: user Time: YYYY-MM-DDT18:39:15.985 Command [DUMP] started Arguments: --dump create --name first_dump -------------------------------------------------------------------------------- Dump "first_dump" was created. Command [DUMP] finished with code: 0 Control utility has completed execution at: YYYY-MM-DDT18:39:18.436 Execution time: 2451 ms ...В log узла будет выведена информация:
[18:39:16,187][INFO][pub-#126][IgniteSnapshotManager] Cluster-wide snapshot operation started [snpName=first_dump, grps=[cache-1, cache-2], incremental=true, incrementIndex=-1] ... [18:39:16,204][INFO][exchange-worker-#75][CreateDumpFutureTask] Start cache dump [name=first_dump, grps=[540204198, 540204199]] [18:39:16,208][INFO][exchange-worker-#75][CreateDumpFutureTask] Start group dump [name=cache-1, id=540204198] [18:39:16,216][INFO][exchange-worker-#75][CreateDumpFutureTask] Start group dump [name=cache-2, id=540204199] ... [18:39:18,231][INFO][snapshot-runner-#133][CreateDumpFutureTask] Finish group dump [name=cache-1, id=540204198, time=2023, iterEntriesCnt=1000000, writtenIterEntriesCnt=1000000, changedEntriesCnt=0] [18:39:18,328][INFO][snapshot-runner-#134][CreateDumpFutureTask] Finish group dump [name=cache-2, id=540204199, time=2112, iterEntriesCnt=10000, writtenIterEntriesCnt=10000, changedEntriesCnt=0] [18:39:18,333][INFO][snapshot-runner-#133][IgniteSnapshotManager] Snapshot metafile has been created: /Users/user/bin/apache-ignite-2.16.0-SNAPSHOT-bin/work/snapshots/first_dump/0_0_0_0_0_0_0_1_lo0_10_8_148_42_127_0_0_1_47500.smf ... [18:39:18,418][INFO][disco-notifier-worker-#68][IgniteSnapshotManager] Cluster-wide snapshot operation finished successfully: SnapshotOperationRequest [reqId=7708da52-0e7d-4f96-b4a8-f5ede66070d3, snpName=first_dump, snpPath=null, nodes=HashSet [a2940478-4601-4117-a081-edae464acd9a], grps=ArrayList [cache-1, cache-2], opNodeId=a2940478-4601-4117-a081-edae464acd9a, err=null, startStageEnded=true, startTime=1700149156184, incremental=false, incIdx=-1, onlyPrimary=false, dump=true]Удалите кеши командой:
./control.sh --cache destroy --destroy-all-cachesВывод команды:
Warning! The command will destroy 2 caches: cache-1, cache-2. If you continue, the cache data will be impossible to recover. Press 'y' to continue . . . y Control utility [ver. 2.16.0-SNAPSHOT#20231113-sha1:fd8757e4] 2023 Copyright(C) Apache Software Foundation User: user Time: YYYY-MM-DDT18:44:13.634 Command [CACHE] started Arguments: --cache destroy --destroy-all-caches -------------------------------------------------------------------------------- The following caches have been stopped: cache-1, cache-2. Command [CACHE] finished with code: 0 Control utility has completed execution at: YYYY-MM-DDT18:44:16.955 Execution time: 3321 msВосстановите дамп командой:
./bin/ignite-dump-reader.sh --dump <path-to-dump> --restore --thin localhost:10800Вывод команды:
[18:49:25,611][INFO][main][DumpReader] >>> __________ ________________ ___ __ ____ ______ ___ _______ ___ _______ >>> / _/ ___/ |/ / _/_ __/ __/ / _ \/ / / / |/ / _ \ / _ \/ __/ _ | / _ \/ __/ _ \ >>> _/ // (_ / // / / / / _/ / // / /_/ / /|_/ / ___/ / , _/ _// __ |/ // / _// , _/ >>> /___/\___/_/|_/___/ /_/ /___/ /____/\____/_/ /_/_/ /_/|_/___/_/ |_/____/___/_/|_| >>> >>> ver. 2.16.0-SNAPSHOT#20231113-sha1:fd8757e4 >>> 2023 Copyright(C) Apache Software Foundation >>> >>> Ignite documentation: http://ignite.apache.org >>> ConsistentId: /Users/user/bin/apache-ignite-2.16.0-SNAPSHOT-bin/work/snapshots/first_dump >>> Consumer: RestoreThinClientDumpConsumer [cfg=ClientConfiguration [addrFinder=null, tcpNoDelay=true, timeout=0, sndBufSize=32768, rcvBufSize=32768, binaryCfg=null, sslMode=DISABLED, sslClientCertKeyStorePath=null, sslClientCertKeyStorePwd=null, sslTrustCertKeyStorePath=null, sslTrustCertKeyStorePwd=null, sslClientCertKeyStoreType=null, sslTrustCertKeyStoreType=null, sslKeyAlgorithm=null, sslTrustAll=false, sslProto=TLS, sslCtxFactory=null, userName=null, userPwd=null, txCfg=ClientTransactionConfiguration [dfltIsolation=REPEATABLE_READ, dfltConcurrency=PESSIMISTIC, dfltTxTimeout=0], partitionAwarenessEnabled=true, partitionAwarenessMapperFactory=null, clusterDiscoveryEnabled=true, reconnectThrottlingPeriod=30000, reconnectThrottlingRetries=3, retryLimit=0, retryPolicy=org.apache.ignite.client.ClientRetryAllPolicy@45c8e616, asyncContinuationExecutor=null, heartbeatEnabled=false, heartbeatInterval=30000, autoBinaryConfigurationEnabled=true]] [18:49:25,797][INFO][main][DumpReader] Resolved directory for serialized binary metadata: /Users/user/bin/apache-ignite-2.16.0-SNAPSHOT-bin/work/snapshots/first_dump/db/binary_meta/0_0_0_0_0_0_0_1_lo0_10_8_148_42_127_0_0_1_47500 [18:49:25,859][INFO][main][DumpReaderStartupLog] Thin Client Dump Consumer [cfg=ClientConfiguration [addrFinder=null, tcpNoDelay=true, timeout=0, sndBufSize=32768, rcvBufSize=32768, binaryCfg=null, sslMode=DISABLED, sslClientCertKeyStorePath=null, sslClientCertKeyStorePwd=null, sslTrustCertKeyStorePath=null, sslTrustCertKeyStorePwd=null, sslClientCertKeyStoreType=null, sslTrustCertKeyStoreType=null, sslKeyAlgorithm=null, sslTrustAll=false, sslProto=TLS, sslCtxFactory=null, userName=null, userPwd=null, txCfg=ClientTransactionConfiguration [dfltIsolation=REPEATABLE_READ, dfltConcurrency=PESSIMISTIC, dfltTxTimeout=0], partitionAwarenessEnabled=true, partitionAwarenessMapperFactory=null, clusterDiscoveryEnabled=true, reconnectThrottlingPeriod=30000, reconnectThrottlingRetries=3, retryLimit=0, retryPolicy=org.apache.ignite.client.ClientRetryAllPolicy@45c8e616, asyncContinuationExecutor=null, heartbeatEnabled=false, heartbeatInterval=30000, autoBinaryConfigurationEnabled=true]] [18:49:25,957][INFO][main][DumpReaderStartupLog] Restoring type mappings [18:49:25,959][INFO][main][DumpReaderStartupLog] Restoring binary types [18:49:25,992][INFO][main][DumpReaderStartupLog] Creating cache [cfg=CacheConfiguration [name=cache-1, grpName=null, memPlcName=null, storeConcurrentLoadAllThreshold=5, rebalancePoolSize=4, rebalanceTimeout=10000, evictPlc=null, evictPlcFactory=null, onheapCache=false, sqlOnheapCache=false, sqlOnheapCacheMaxSize=0, evictFilter=null, eagerTtl=true, dfltLockTimeout=0, nearCfg=null, platformCfg=null, writeSync=PRIMARY_SYNC, storeFactory=null, storeKeepBinary=false, loadPrevVal=false, aff=RendezvousAffinityFunction [parts=1024, mask=1023, exclNeighbors=false, exclNeighborsWarn=false, backupFilter=null, affinityBackupFilter=null], cacheMode=PARTITIONED, atomicityMode=ATOMIC, backups=0, invalidate=false, tmLookupClsName=null, rebalanceMode=ASYNC, rebalanceOrder=0, rebalanceBatchSize=524288, rebalanceBatchesPrefetchCnt=3, maxConcurrentAsyncOps=500, sqlIdxMaxInlineSize=-1, writeBehindEnabled=false, writeBehindFlushSize=10240, writeBehindFlushFreq=5000, writeBehindFlushThreadCnt=1, writeBehindBatchSize=512, writeBehindCoalescing=true, maxQryIterCnt=1024, affMapper=org.apache.ignite.internal.processors.cache.CacheDefaultBinaryAffinityKeyMapper@2f54a33d, rebalanceDelay=0, rebalanceThrottle=0, interceptor=null, longQryWarnTimeout=3000, qryDetailMetricsSz=0, readFromBackup=true, nodeFilter=IgniteAllNodesPredicate [], sqlSchema=null, sqlEscapeAll=false, cpOnRead=true, topValidator=null, partLossPlc=IGNORE, qryParallelism=1, evtsDisabled=false, encryptionEnabled=false, diskPageCompression=DISABLED, diskPageCompressionLevel=null]] [18:49:26,040][INFO][main][DumpReaderStartupLog] Creating cache [cfg=CacheConfiguration [name=cache-2, grpName=null, memPlcName=null, storeConcurrentLoadAllThreshold=5, rebalancePoolSize=4, rebalanceTimeout=10000, evictPlc=null, evictPlcFactory=null, onheapCache=false, sqlOnheapCache=false, sqlOnheapCacheMaxSize=0, evictFilter=null, eagerTtl=true, dfltLockTimeout=0, nearCfg=null, platformCfg=null, writeSync=PRIMARY_SYNC, storeFactory=null, storeKeepBinary=false, loadPrevVal=false, aff=RendezvousAffinityFunction [parts=1024, mask=1023, exclNeighbors=false, exclNeighborsWarn=false, backupFilter=null, affinityBackupFilter=null], cacheMode=PARTITIONED, atomicityMode=ATOMIC, backups=0, invalidate=false, tmLookupClsName=null, rebalanceMode=ASYNC, rebalanceOrder=0, rebalanceBatchSize=524288, rebalanceBatchesPrefetchCnt=3, maxConcurrentAsyncOps=500, sqlIdxMaxInlineSize=-1, writeBehindEnabled=false, writeBehindFlushSize=10240, writeBehindFlushFreq=5000, writeBehindFlushThreadCnt=1, writeBehindBatchSize=512, writeBehindCoalescing=true, maxQryIterCnt=1024, affMapper=org.apache.ignite.internal.processors.cache.CacheDefaultBinaryAffinityKeyMapper@3315d2d7, rebalanceDelay=0, rebalanceThrottle=0, interceptor=null, longQryWarnTimeout=3000, qryDetailMetricsSz=0, readFromBackup=true, nodeFilter=IgniteAllNodesPredicate [], sqlSchema=null, sqlEscapeAll=false, cpOnRead=true, topValidator=null, partLossPlc=IGNORE, qryParallelism=1, evtsDisabled=false, encryptionEnabled=false, diskPageCompression=DISABLED, diskPageCompressionLevel=null]] [18:49:26,107][INFO][main][DumpReaderStartupLog] Streaming entries [grp=540204198, part=907, cnt=0] [18:49:26,383][INFO][main][DumpReaderStartupLog] Partition consumed [grp=540204198, part=907, cnt=976] .... [18:49:27,002][INFO][main][DumpReaderStartupLog] Partition consumed [grp=540204198, part=268, cnt=977]Проверьте, что данные присутствуют в кеше, с помощью команды:
./bin/control.sh --cache scan cache-1Вывод команды:
Control utility [ver. 2.16.0-SNAPSHOT#20231113-sha1:fd8757e4] 2023 Copyright(C) Apache Software Foundation User: user Time: YYYY-MM-DDT18:53:57.979 Command [CACHE] started Arguments: --cache scan cache-1 -------------------------------------------------------------------------------- Key Class Key Value Class Value java.lang.Long 0 java.lang.Long 0 java.lang.Long 1024 java.lang.Long 1024 ... java.lang.Long 7168 java.lang.Long 7168