升级 Data Grid
将 Data Grid 升级到 8.5
摘要
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 Data Grid 8 升级备注 复制链接链接已复制到粘贴板!
在从一个 Data Grid 8 升级到另一个版本前,请查看本节中的详情。
1.1. 升级到 Data Grid 8.5 复制链接链接已复制到粘贴板!
阅读以下信息,以确保从之前版本的 Data Grid 8 升级到 8.5。
删除
- Kryo 和 Protostuff marshallers 已删除。
- 已删除了扩展统计模块。
- JCACHE CDI 不再被支持。
- 不再支持 Spring 5.x 和 Spring Boot 2.x。
- 不再提供 Red Hat JBoss EAP 模块。
更改类的软件包
以下类已移到不同的软件包中:
-
org.infinispan.util.TimeoutException已移到org.infinispan.commons.TimeoutException -
org.infinispan.util.concurrent.IsolationLevel已移到org.infinispan.configuration.IsolationLevel
删除类、方法和属性
以下方法和属性已被删除:
- All :使用 schema < 10.0 的配置文件。
-
commons:
Start.priority和Stop.priority -
core:
AdvancedCache.with (ClassLoader),AdvancedCache.getEvictionManager (),AdvancedCache.getAsyncInterceptorChain (),AdvancedCache.getComponentRegistry () -
core:
AnyScopeComponentFactory.construct (Class) -
core:
Cache.getListeners () -
core:
ConfigurationBuilder.classLoader (),ConfigurationBuilder.customInterceptors () -
Core:
DataRehashedEvent.getUnionConsistentHash() -
core:
EmbeddedCacheManager.getListeners (),EmbeddedCacheManager.getTransport (),EmbeddedCacheManager.removeCache (String),EmbeddedCacheManager.getGlobalComponentRegistry () -
core:
FlagAffectedCommand.setFlags,FlagAffedctedCommand.addFlags,FlagAffectedCommand.hasFlag -
core:
IntCacheStream.filterKeySegments (Set<Integer>) -
core:
JMXStatisticsConfiguration -
core:
GlobalConfiguration.DEFAULT_MARSHALL_VERSION -
Core;
LocalizedCacheTopology.getDistributionForSegment(int) -
core:
NamedComponentFactory -
core:
PersistenceUtil.loadAndStoreInDataContainer -
core:
TopologyChangedEvent.getConsistentHashAtStart ()和TopologyChangedEvent.getConsistentHashAtEnd () -
core:
Transport.invokeRemotely ()Transport.waitForView ()Transport.backupRemotely ()AbstractTransport -
Core:
ValueMatcher.nonExistentEntryCanMatch -
core:
WriteCommand.updateStatusFromRemoteResponse - core: state transfer pool
-
计数器:
syncStrongCounter和SyncWeakCounter -
热随机客户端:
org.infinispan.client.hotrod.marshall.ProtoStreamMarshaller - 服务器和客户端:密钥存储证书密码
- RocksDB Store: 到期队列大小
- Remote Store: transport factory 和 maxIdle
指标
当 name- as-tags 设为 true 时,JGroups 和跨站点指标名称会改变,其中集群名称和站点的名称不再存在于指标名称中,而是作为标签。
例如,当您将 name -as-tags 设置为 false 时,指标会根据频道命名,从而导致同一目的有多个指标:
当您将 name -as-tags 设置为 true 时,指标会被简化,集群和站点名称会显示为标签:
# TYPE vendor_jgroups_frag4_get_number_of_sent_fragments gauge
# HELP vendor_jgroups_frag4_get_number_of_sent_fragments Number of sent fragments
vendor_jgroups_frag4_get_number_of_sent_fragments{cache_manager="default",cluster="xsite",node="..."} 0.0
vendor_jgroups_frag4_get_number_of_sent_fragments{cache_manager="default",cluster="cluster",node="..."} 2.0
# TYPE vendor_jgroups_frag4_get_number_of_sent_fragments gauge
# HELP vendor_jgroups_frag4_get_number_of_sent_fragments Number of sent fragments
vendor_jgroups_frag4_get_number_of_sent_fragments{cache_manager="default",cluster="xsite",node="..."} 0.0
vendor_jgroups_frag4_get_number_of_sent_fragments{cache_manager="default",cluster="cluster",node="..."} 2.0
SecurityManager
在 Java Development Kit (JDK) 17 中删除 SecurityManager 时,不再支持与 SecurityManager 集成。
jakarta 和 Java EE
-
Data Grid 已更新为只使用
jakarta Referrer软件包。 -
如果您需要旧的
javax …软件包,则应使用 Data Grid 8.4.x。 -
transitional
*-jakartajars (包括jakarta jakarta和javaxxz 软件包)已被删除。
热 Rod 客户端默认设置
Data Grid 引入了对 Hot Rod 客户端属性的更改。
ssl_hostname_validation
添加了新属性 ssl_hostname_validation,默认值为 true。此属性启用基于 RFC 2818 的 TLS 主机名验证。
另外,在启用主机名验证时,需要设置 sni_host_name。
| 属性 | Data Grid 8.5 | 之前的版本 |
|---|---|---|
|
| 2000 ms / 2 秒 | 60000 ms / 60 秒 |
|
| 2000 ms / 2 秒 | 60000 ms / 60 秒 |
|
| 3 | 10 |
|
| 180000 ms / 3 分钟 | 1800000 ms / 30 分钟 |
|
| SCRAM-SHA-512 | SCRAM-SHA-256 |
搜索
Data Grid 8.5 引入了对搜索的以下更改。
索引
-
property属性已被删除。 -
auto-config属性已被删除。 -
index属性已被删除。
索引注解
- Hibernate Search 5 注解不再被支持。
-
@ProtoDoc注解现已弃用。
安全性
PrincipalRoleMapper 现在只适用于组,而不是组和用户主体。使用 cache-manager.security.authorization.group-only-mapping=false 配置使用旧行为。
有关 PrincipalRoleMapper API 的更多信息,请参阅 角色和权限映射程序。
分散的缓存删除
scattered 缓存模式已被删除。改为使用分布式缓存。有关缓存模式的详情,请参考 缓存模式。
全局状态
默认情况下,如果在持久全局状态下找到悬停的锁定文件,则 Data Grid 将不会启动,表示未清理的关闭。您可以通过配置全局状态 unclean-shutdown-action 设置来更改默认行为。如需更多信息,请参阅 全局永久位置。
持久性
availability-interval 的默认值增加到 30 秒。以上默认为 1 秒。
soft-index 文件存储
要计算片段数量,只有缓存片段的数量而不是使用索引片段配置,就像之前完成的一样。
RESP 端点
Data Grid 8.5 对 RESP 端点包括以下更改:
-
RESP 端点缓存现在要求关键存储介质类型为
application/octet-stream。 - 您可以将默认过期时间应用到 RESP 端点使用的缓存配置。
客户端监听程序删除事件传播
要在 CacheEventConverter 上支持新的 includeOldValue 方法更改,客户端监听程序删除事件现在也会传播,即使事件没有删除值。
删除事件默认不包含任何值
NearCache SPI 更新
前面的 NearCache SPI 在并发更新中存在一个问题,其中过时的条目可能存储在接近的缓存中。NearCache SPI 已更新,以解决此问题。
至少从 8.1 升级
如果要从 8.0 升级,您必须首先升级到 8.1。Data Grid 8.0 中的持久数据与以后的版本不兼容二进制数据。要解决这种不兼容的问题,Data Grid 8.2 及更新的版本会在集群启动时自动转换来自 Data Grid 8.1 的现有持久性缓存存储。但是,Data Grid 不会从 Data Grid 8.0 转换缓存存储。
第 2 章 为 Data Grid Server 集群执行滚动升级 复制链接链接已复制到粘贴板!
执行数据网格集群的滚动升级,在不停机或数据丢失的版本之间更改,并通过 Hot Rod 协议迁移数据。
2.1. 设置目标 Data Grid 集群 复制链接链接已复制到粘贴板!
创建一个使用您计划升级到的 Data Grid 版本的集群,然后使用远程缓存存储将源集群连接到目标集群。
先决条件
- 使用目标集群所需的版本安装 Data Grid Server 节点。
确保目标集群的网络属性不会与源集群的网络属性重叠。您应该在 JGroups 传输配置中为目标和源集群指定唯一名称。根据您的环境,您还可以使用不同的网络接口和端口偏移来分隔目标和源集群。
流程
以 JSON 格式创建远程缓存存储配置,允许目标集群连接到源集群。
远程缓存存储在目标集群上,使用 Hot Rod 协议从源集群检索数据。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Data Grid 命令行界面(CLI)或 REST API 将远程缓存存储配置添加到目标集群,以便它可以连接到源集群。
CLI:在目标集群中使用
migrate cluster connect命令。[//containers/default]> migrate cluster connect -c myCache --file=remote-store.json
[//containers/default]> migrate cluster connect -c myCache --file=remote-store.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow REST API:使用一个 POST 请求,该请求在有效负载中包含远程存储配置,并带有
rolling-upgrade/source-connection方法。POST /rest/v2/caches/myCache/rolling-upgrade/source-connection
POST /rest/v2/caches/myCache/rolling-upgrade/source-connectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 对您要迁移的每个缓存重复前面的步骤。
将客户端切换到目标集群,以便它开始处理所有请求。
- 使用目标集群的位置更新客户端配置。
- 重新启动客户端。
如果您需要迁移索引缓存,您必须首先迁移内部 ___protobuf_metadata 缓存,以便源集群中定义的 .proto 模式也会存在于目标集群上。
2.2. 将数据同步到目标集群 复制链接链接已复制到粘贴板!
当您设置目标 Data Grid 集群并将其连接到源集群时,目标集群可以使用远程缓存存储和按需加载数据的客户端请求。要将数据完全迁移到目标集群,以便您可以停用源集群,您可以同步数据。此操作从源集群读取数据并将其写入目标集群。数据会并行迁移到目标集群中的所有节点,每个节点都接收数据的子集。您必须对要迁移到目标集群的每个缓存执行同步。
先决条件
- 使用适当的 Data Grid 版本设置目标集群。
流程
使用 Data Grid 命令行界面(CLI)或 REST API 开始同步您要迁移到目标集群的每个缓存。
CLI:使用
migrate cluster synchronize命令。migrate cluster synchronize -c myCache
migrate cluster synchronize -c myCacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow REST API:将
?action=sync-data参数与 POST 请求一起使用。POST /rest/v2/caches/myCache?action=sync-data
POST /rest/v2/caches/myCache?action=sync-dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当操作完成后,Data Grid 使用复制到目标集群的条目总数进行响应。
断开目标集群中的每个节点与源集群的连接。
CLI:使用
migrate cluster disconnect命令。migrate cluster disconnect -c myCache
migrate cluster disconnect -c myCacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow REST API:指示 DELETE 请求。
DELETE /rest/v2/caches/myCache/rolling-upgrade/source-connection
DELETE /rest/v2/caches/myCache/rolling-upgrade/source-connectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
同步源集群中的所有数据后,滚动升级过程已完成。现在,您可以停用源集群。
第 3 章 在缓存存储之间迁移数据 复制链接链接已复制到粘贴板!
Data Grid 提供了一个 Java 实用程序,用于在缓存存储之间迁移持久性数据。
对于升级数据网格,主要版本之间的功能差异不允许在缓存存储之间向后兼容。您可以使用 StoreMigrator 转换数据,使其与目标版本兼容。
例如,升级到 Data Grid 8.0 将默认的 marshaller 更改为 Protostream。在以前的 Data Grid 版本中,缓存存储使用与 marshalling 的更改不兼容的二进制格式。这意味着 Data Grid 8.0 无法从带有之前 Data Grid 版本的缓存存储中读取。
在其他情况下,Data Grid 版本弃用或删除缓存存储实现,如 JDBC Mixed 和 Binary 存储。在这些情况下,您可以使用 StoreMigrator 转换为不同的缓存存储实现。
3.1. 缓存存储 migrator 复制链接链接已复制到粘贴板!
Data Grid 提供 CLI migrate store 命令,用于为最新的数据网格缓存存储实施重新创建数据。
存储 migrator 从以前的 Data Grid 版本获取缓存存储作为源,并使用缓存存储实现作为目标。
当您运行存储 migrator 时,它会使用您使用 EmbeddedCacheManager 接口定义的缓存存储类型创建目标缓存。存储 migrator 然后将源存储中的条目加载到内存中,然后将其放入目标缓存中。
存储 migrator 还允许您将数据从一种类型的缓存存储迁移到另一种缓存存储。例如,您可以从基于 JDBC 字符串的缓存存储迁移到 SIFS 缓存存储。
存储 migrator 无法将数据从分段缓存存储迁移到:
- 非分段缓存存储。
- 分段缓存存储,它们具有不同的片段数。
3.2. 配置缓存存储 migrator 复制链接链接已复制到粘贴板!
使用 migrator.properties 文件配置源和目标缓存存储的属性。
流程
-
创建
migrator.properties文件。 使用
migrator.properties文件配置源和目标缓存存储的属性。将
source.前缀添加到源缓存存储的所有配置属性中。源缓存存储示例
source.type=SOFT_INDEX_FILE_STORE source.cache_name=myCache source.location=/path/to/source/sifs source.version=<version>
source.type=SOFT_INDEX_FILE_STORE source.cache_name=myCache source.location=/path/to/source/sifs source.version=<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要从分段缓存存储迁移数据,还必须使用
source.segment_count属性配置片段数量。片段的数量必须与 Data Grid 配置中的cluster.hash.numSegments匹配。如果缓存存储的片段数量与对应缓存的片段数量不匹配,则数据网格无法从缓存存储读取数据。将
target.前缀添加到目标缓存存储的所有配置属性中。目标缓存存储示例
target.type=SINGLE_FILE_STORE target.cache_name=myCache target.location=/path/to/target/sfs.dat
target.type=SINGLE_FILE_STORE target.cache_name=myCache target.location=/path/to/target/sfs.datCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.1. 缓存存储 migrator 的配置属性 复制链接链接已复制到粘贴板!
在 StoreMigrator 属性中配置源和目标缓存存储。
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
| 指定源或目标缓存存储的缓存存储类型。
| 必填 |
| 属性 | 描述 | 值示例 | 必填/选填 |
|---|---|---|---|
|
| 要备份的缓存的名称。 |
| 必填 |
|
| 可以使用分段的目标缓存存储的片段数量。
片段数量必须与 Data Grid 配置中的 |
| 选填 |
|
| 指定自定义 marshaller 类。 | 使用自定义 marshallers 时需要此项。 |
|
| 指定允许反序列化的完全限定类名称列表。 | 选填 |
| 指定以逗号分隔的正则表达式列表,用于决定允许哪些类反序列化。 |
| 选填 |
|
指定以逗号分隔的自定义 | 选填 |
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
| 指定底层数据库的 dialect。 | 必填 |
|
|
指定源缓存存储的 marshaller 版本。
*
*
*
*
*
* | 仅用于源存储。 |
|
| 指定 JDBC 连接 URL。 | 必填 |
|
| 指定 JDBC 驱动程序的类。 | 必填 |
|
| 指定数据库用户名。 | 必填 |
|
| 指定数据库用户名的密码。 | 必填 |
|
| 禁用数据库 upsert。 | 选填 |
|
| 指定是否创建表索引。 | 选填 |
|
| 指定表名称的额外前缀。 | 选填 |
|
| 指定列名称。 | 必填 |
|
| 指定列类型。 | 必填 |
|
|
指定 | 选填 |
要从旧的 Data Grid 版本中迁移 Binary 缓存存储,请在以下属性中将 table.string view 改为 table.binary.\* :
-
source.table.binary.table_name_prefix -
source.table.binary.<id\|data\|timestamp>.name -
source.table.binary.<id\|data\|timestamp>.type
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
| 设置数据库目录。 | 必填 |
|
| 指定要使用的压缩类型。 | 选填 |
# Example configuration for migrating from a RocksDB cache store. source.type=ROCKSDB source.cache_name=myCache source.location=/path/to/rocksdb/database source.compression=SNAPPY
# Example configuration for migrating from a RocksDB cache store.
source.type=ROCKSDB
source.cache_name=myCache
source.location=/path/to/rocksdb/database
source.compression=SNAPPY
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
|
设置包含缓存存储 | 必填 |
# Example configuration for migrating to a Single File cache store. target.type=SINGLE_FILE_STORE target.cache_name=myCache target.location=/path/to/sfs.dat
# Example configuration for migrating to a Single File cache store.
target.type=SINGLE_FILE_STORE
target.cache_name=myCache
target.location=/path/to/sfs.dat
| 属性 | 描述 | value |
|---|---|---|
| 必填/选填 |
| 设置数据库目录。 |
| 必填 |
| 设置数据库索引目录。 |
# Example configuration for migrating to a Soft-Index File cache store. target.type=SOFT_INDEX_FILE_STORE target.cache_name=myCache target.location=path/to/sifs/database target.location=path/to/sifs/index
# Example configuration for migrating to a Soft-Index File cache store.
target.type=SOFT_INDEX_FILE_STORE
target.cache_name=myCache
target.location=path/to/sifs/database
target.location=path/to/sifs/index
3.3. 迁移 Data Grid 缓存存储 复制链接链接已复制到粘贴板!
运行存储 migrator 将数据从一个缓存存储迁移到另一个缓存存储。
先决条件
- 获取 Data Grid CLI。
-
创建
migrator.properties文件,以配置源和目标缓存存储。
流程
-
运行
migrate store -p /path/to/migrator.propertiesCLI 命令