升级数据平面
将 Data Grid 升级到 8.3
摘要
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.3 复制链接链接已复制到粘贴板!
阅读以下信息,以确保成功从以前的 Data Grid 8 升级到 8.3:
使用基于文件的缓存存储升级部署
从 Data Grid 8.3 开始,基于文件的缓存存储默认为软索引 SoftIndexFileStore,而不是单文件 SingleFileStore。在 Data Grid 8.2 及更早版本中,对于基于文件的缓存存储,single FileStore 是默认设置。
升级后,任何带有 13.0 或更高版本的 schema 版本的文件存储配置都会自动迁移到 SoftIndexFileStore。
如果您从以前的版本升级到 Data Grid 8.3,且您的缓存包含带有 soft-index-file-store 元素的任何配置,您应该将该配置转换为使用 file-store 元素。有关模式更改和修改您的数据平面缓存配置的详情,请参阅迁移文档。
使用多个端点配置升级数据平面服务器部署
从 Data Grid Server 8.3 开始,您可以使用安全域配置端点,以及带有 端点 元素的 Hot Rod 或 REST 连接器。endpoint 元素 打包多个 endpoint 元素。
如果您要从 8.2 或更早版本升级 Data Grid Server,并且您的配置包含 endpoint 元素的任何子元素,则必须迁移您的配置以使用 endpoint 元素。
至少从 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 集群执行滚动升级 复制链接链接已复制到粘贴板!
执行 Data Grid 集群的滚动升级,以便在不停机或数据丢失的情况下在版本间有所变化,并通过 Hot Rod 协议迁移数据。
2.1. 设置目标数据平面集群 复制链接链接已复制到粘贴板!
创建一个集群,它使用您要升级的 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:使用
rolling-upgrade/source-connection方法解释在有效负载中包含远程存储配置的 POST 请求。POST /v2/caches/myCache/rolling-upgrade/source-connection
POST /v2/caches/myCache/rolling-upgrade/source-connectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 对要迁移的每个缓存重复前面的步骤。
将客户端切换到目标集群,以便它开始处理所有请求。
- 使用目标集群的位置更新客户端配置。
- 重启客户端。
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:使用带有 POST 请求的
?action=sync-data参数。POST /v2/caches/myCache?action=sync-data
POST /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 /v2/caches/myCache/rolling-upgrade/source-connection
DELETE /v2/caches/myCache/rolling-upgrade/source-connectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
同步源集群中的所有数据后,滚动升级过程已完成。现在,您可以弃用源集群。
第 3 章 在缓存存储间迁移数据 复制链接链接已复制到粘贴板!
Data Grid 提供了在缓存存储之间迁移数据的 Java 工具。
在升级 Data Grid 时,主版本之间的功能差异不允许缓存存储间的向后兼容性。您可以使用 StoreMigrator 转换数据,使其与目标版本兼容。
例如,升级到 Data Grid 8.0 将默认的 marshaller 改为 Protostream。在以前的版本中,缓存存储使用二进制格式,它与 marshalling 的更改不兼容。这意味着 Data Grid 8.0 无法从之前 Data Grid 版本的缓存存储中读取。
在其他情况下,Data Grid 版本弃用或删除缓存存储实现,如 JDBC Mixed 和 Binary 存储。在这些情况下,您可以使用 StoreMigrator 转换为不同的缓存存储实现。
3.1. 缓存存储 migrator 复制链接链接已复制到粘贴板!
Data Grid 提供 StoreMigrator.java 工具,用于为最新的 Data Grid 缓存存储实施重新创建数据。
StoreMigrator 从以前的 Data Grid 版本作为源获取缓存存储,并使用缓存存储实施作为目标。
运行 StoreMigrator 时,它会使用 EmbededCacheManager 接口定义的缓存存储类型创建目标缓存。然后 StoreMigrator 将源存储中的条目加载到内存中,然后将它们放入目标缓存中。
StoreMigrator 还允许您将数据从一种类型的缓存存储迁移到另一个类型。例如,您可以从基于 JDBC 字符串的缓存存储迁移到 RocksDB 缓存存储。
StoreMigrator 无法将数据从片段缓存存储迁移到:
- 非分段缓存存储。
- 分段缓存存储具有不同片段数。
3.2. 获取缓存存储 migrator 复制链接链接已复制到粘贴板!
StoreMigrator 作为 Data Grid 工具库 infinispan-tools 的一部分提供,并包含在 Maven 存储库中。
流程
为
StoreMigrator配置pom.xml,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 配置缓存存储 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
在
migrator.properties中配置目标缓存存储。使用
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.3.1. 缓存存储 migrator 的配置属性 复制链接链接已复制到粘贴板!
在 StoreMigrator 属性中配置源和目标缓存存储。
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
| 指定源或目标的缓存存储类型。
| 必填 |
| 属性 | 描述 | 值示例 | 必填/选填 |
|---|---|---|---|
|
| 命名存储后端的缓存。 |
| 必填 |
|
| 指定可以使用分段的目标缓存存储的片段数。
片段数量必须与 Data Grid 配置中的 换句话说,缓存存储的片段数量必须与对应缓存的片段数匹配。如果片段数量不同,Data Grid 无法从缓存存储中读取数据。 |
| 选填 |
| 属性 | 描述 | 必填/选填 |
|---|---|---|
|
| 指定底层数据库的分割。 | 必填 |
|
|
指定源缓存存储的 marshaller 版本。
Data Grid 7.2.x 的 slirp
Data Grid 7.3.x 发行
*
Data Grid 8.1.x 的 slirp
Data Grid 8.2.x 的 slirp
Data Grid 8.3.x 的 slirp | 只适用于源存储。 |
|
| 指定自定义 marshaller 类。 | 使用自定义 marshallers 时需要此项。 |
|
|
指定以以下格式载入的自定义 | 选填 |
|
| 指定 JDBC 连接 URL。 | 必填 |
|
| 指定 JDBC 驱动程序的类。 | 必填 |
|
| 指定数据库用户名。 | 必填 |
|
| 指定数据库用户名的密码。 | 必填 |
|
| 设置数据库主版本。 | 选填 |
|
| 设置数据库次要版本。 | 选填 |
|
| 禁用数据库 upsert。 | 选填 |
|
| 指定是否创建了表索引。 | 选填 |
|
| 指定表名称的额外前缀。 | 选填 |
|
| 指定列名称。 | 必填 |
|
| 指定列类型。 | 必填 |
|
|
指定 two | 选填 |
要从二进制缓存迁移到旧的 Data Grid 版本中,请在以下属性中将 table.string 变为 table.binary.\ the :
-
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.
# 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.
# 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 Soft-Index File cache store.
# 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.4. 迁移数据平面缓存存储 复制链接链接已复制到粘贴板!
运行 StoreMigrator,将数据从一个缓存存储迁移到另一个缓存存储中。
先决条件
-
获取
infinispan-tools.jar。 -
创建
migrator.properties文件来配置源和目标缓存存储。
流程
如果从源构建
infinispan-tools.jar,请执行以下操作:-
将您的源和目标数据库(如 JDBC 驱动程序)的
infinispan-tools.jar和依赖项添加到您的 classpath 中。 -
指定
migrator.properties文件作为StoreMigrator的参数。
-
将您的源和目标数据库(如 JDBC 驱动程序)的
如果您从 Maven 存储库拉取
infinispan-tools.jar,请运行以下命令:mvn exec:java