升级 Data Grid


Red Hat Data Grid 8.1

将 Data Grid 升级到 8.1

Red Hat Customer Content Services

摘要

了解影响从之前版本迁移的 Data Grid 8.1 中的更改,然后完成升级部署并迁移数据的步骤。

Red Hat Data Grid

Data Grid 是一个高性能分布式内存数据存储。

无架构数据结构
将不同对象存储为键值对的灵活性。
基于网格的数据存储
旨在在集群中分发和复制数据。
弹性扩展
动态调整节点数量,以便在不中断服务的情况下满足需求。
数据互操作性
从不同端点在网格中存储、检索和查询数据。

Data Grid 文档

红帽客户门户网站中提供了 Data Grid 的文档。

Data Grid 下载

访问红帽客户门户上的 Data Grid 软件下载

注意

您必须有一个红帽帐户才能访问和下载数据中心软件。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 为 Data Grid 服务器执行滚动升级

执行数据网格集群的滚动升级,以便在版本之间更改,而不会停机或数据丢失。滚动升级通过 Hot Rod 将您的数据同时迁移到目标版本。

1.1. 设置目标集群

创建一个运行目标 Data Grid 版本的集群,并使用远程缓存存储从源集群加载数据。

先决条件

  • 使用目标升级版本安装 Data Grid 集群。
重要

确保目标集群的网络属性不会与源集群的网络属性重叠。您应该在 JGroups 传输配置中为目标和源集群指定唯一名称。根据您的环境,您还可以使用不同的网络接口并指定端口偏移来保持目标和源集群分开。

流程

  1. 在目标集群上为您要从源集群迁移的每个缓存添加一个 RemoteCacheStore

    远程缓存存储使用 Hot Rod 协议从远程网格集群检索数据。将远程缓存存储添加到目标集群时,它可以从源集群中完全加载数据来处理客户端请求。

  2. 将客户端切换到目标集群,以便它开始处理所有请求。

    1. 使用目标集群的位置更新客户端配置。
    2. 重新启动客户端。

1.1.1. Rolling 升级的远程缓存存储

您必须使用特定的远程缓存存储配置来执行滚动升级,如下所示:

<persistence passivation="false"> 
1

   <remote-store xmlns="urn:infinispan:config:store:remote:11.0"
                 cache="myDistCache" 
2

                 protocol-version="2.5" 
3

                 hotrod-wrapping="true" 
4

                 raw-values="true" 
5

                 segmented="false"> 
6

      <remote-server host="127.0.0.1" port="11222"/> 
7

   </remote-store>
</persistence>
Copy to Clipboard Toggle word wrap
1
禁用 passivation。用于滚动升级的远程缓存存储必须禁用传递。
2
与源集群中的缓存名称匹配。目标集群使用远程缓存存储从此缓存中加载数据。
3
与源集群的 Hot Rod 协议版本匹配。2.5 是最低版本,适用于任何升级路径。您不需要设置另一个 Hot Rod 版本。
4
确保条目以合适的格式嵌套为 Hot Rod 协议。
5
以原始格式将数据存储在远程缓存存储中。这样可确保客户端直接使用远程缓存存储中的数据。
6
为远程缓存存储禁用分段。只有在目标集群中的片段数量与源集群中的缓存数量匹配时,才应为远程缓存启用分段存储。
7
指向源集群的位置。

1.2. 将数据同步到目标集群

当目标集群正在运行并处理使用远程缓存存储的客户端请求时,您可以按需加载数据,您可以将源集群的数据同步到目标集群。

此操作从源集群读取数据并将其写入目标集群。数据会并行迁移到目标集群中的所有节点,每个节点都接收数据的子集。您必须在 Data Grid 配置中为每个缓存执行同步。

流程

  1. 在您要迁移到目标集群的数据网格配置中启动每个缓存的同步操作。

    使用 Data Grid REST API,并通过 ?action=sync- data 参数调用 POST 请求。例如,要将名为"myCache"的数据从源集群同步到目标集群,请执行以下操作:

    POST /v2/caches/myCache?action=sync-data
    Copy to Clipboard Toggle word wrap

    当操作完成后,Data Grid 使用复制到目标集群的条目总数进行响应。

    或者,您可以通过在 RollingUpgradeManager MBean 上调用 synchronizeData (migratorName=hotrod) 来使用 JMX。

  2. 断开目标集群中的每个节点与源集群的连接。

    例如,要从源集群断开"myCache"缓存,请调用以下 POST 请求:

    POST /v2/caches/myCache?action=disconnect-source
    Copy to Clipboard Toggle word wrap

    要使用 JMX,请在 RollingUpgradeManager MBean 上调用 disconnectSource (migratorName=hotrod)

后续步骤

同步源集群中的所有数据后,滚动升级过程已完成。现在,您可以停用源集群。

第 2 章 在缓存存储之间迁移数据

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 转换为不同的缓存存储实现。

2.1. 缓存存储 Migrator

Data Grid 提供 StoreMigrator.java 工具,它为最新的数据网格缓存存储实施重新创建数据。

StoreMigrator 从以前的 Data Grid 版本获取缓存存储作为源,并使用缓存存储实施作为目标。

运行 StoreMigrator 时,它会使用您使用 EmbeddedCacheManager 接口定义的缓存存储类型创建目标缓存。StoreMigrator 然后从源存储加载条目到内存中,然后将其放入目标缓存中。

StoreMigrator 还允许您将数据从一种类型的缓存存储迁移到另一种缓存存储。例如,您可以从基于 JDBC 字符串的缓存存储迁移到单文件缓存存储。

重要

StoreMigrator 无法将数据从分段缓存存储迁移到:

  • 非分段缓存存储。
  • 分段缓存存储,它们具有不同的片段数。

2.2. 获取 Store Migrator

StoreMigrator 作为 Data Grid 工具库 infinispan-tools 的一部分,并包含在 Maven 存储库中。

流程

  • StoreMigrator 配置 pom.xml,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.infinispan.example</groupId>
        <artifactId>jdbc-migrator-example</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
          <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-tools</artifactId>
          </dependency>
          <!-- Additional dependencies -->
        </dependencies>
    
        <build>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>exec-maven-plugin</artifactId>
              <version>1.2.1</version>
              <executions>
                <execution>
                  <goals>
                    <goal>java</goal>
                  </goals>
                </execution>
              </executions>
              <configuration>
                <mainClass>org.infinispan.tools.store.migrator.StoreMigrator</mainClass>
                <arguments>
                  <argument>path/to/migrator.properties</argument>
                </arguments>
              </configuration>
            </plugin>
          </plugins>
        </build>
    </project>
    Copy to Clipboard Toggle word wrap

2.3. 配置 Store Migrator

migrator.properties 文件中为源和目标缓存存储设置属性。

流程

  1. 创建 migrator.properties 文件。
  2. migrator.properties 中配置源缓存存储。

    1. 使用 source 预先填充所有配置属性,如下例所示:

      source.type=SOFT_INDEX_FILE_STORE
      source.cache_name=myCache
      source.location=/path/to/source/sifs
      Copy to Clipboard Toggle word wrap
  3. migrator.properties 中配置目标缓存存储。

    1. 使用 target 预先填充所有配置属性,如下例所示:

      target.type=SINGLE_FILE_STORE
      target.cache_name=myCache
      target.location=/path/to/target/sfs.dat
      Copy to Clipboard Toggle word wrap

2.3.1. 存储 Migrator 属性

StoreMigrator 属性中配置源和目标缓存存储。

Expand
表 2.1. 缓存存储类型属性
属性描述必填/选填

type

指定源或目标的缓存存储类型类型。

.type=JDBC_STRING

.type=JDBC_BINARY

.type=JDBC_MIXED

.type=LEVELDB

.type=ROCKSDB

.type=SINGLE_FILE_STORE

.type=SOFT_INDEX_FILE_STORE

.type=JDBC_MIXED

必填

Expand
表 2.2. 常见属性
属性描述值示例必填/选填

cache_name

命名存储后端的缓存。

.cache_name=myCache

必填

segment_count

指定可以使用分段的目标缓存存储的片段数量。

片段数量必须与 Data Grid 配置中的 cluster.hash.numSegments 匹配。

换句话说,缓存存储的片段数量必须与对应缓存的片段数匹配。如果片段数量不相同,则数据网格无法从缓存存储中读取数据。

.segment_count=256

选填

Expand
表 2.3. JDBC 属性
属性描述必填/选填

dialect

指定底层数据库的 dialect。

必填

version

指定源缓存存储的 marshaller 版本。设置以下值之一:

* 8 用于 Data Grid 7.2.x

* 9 用于 Data Grid 7.3.x

* 10 Data Grid 8.x

仅用于源存储。

例如: source.version=9

marshaller.class

指定自定义 marshaller 类。

使用自定义 marshallers 时需要此项。

marshaller.externalizers

指定以逗号分隔的自定义 AdvancedExternalizer 实现列表,以便以以下格式进行加载: [id]:<Externalizer class>

选填

connection_pool.connection_url

指定 JDBC 连接 URL。

必填

connection_pool.driver_class

指定 JDBC 驱动程序的类。

必填

connection_pool.username

指定数据库用户名。

必填

connection_pool.password

指定数据库用户名的密码。

必填

db.major_version

设置数据库主版本。

选填

db.minor_version

设置数据库次版本。

选填

db.disable_upsert

禁用数据库 upsert。

选填

db.disable_indexing

指定是否创建表索引。

选填

table.string.table_name_prefix

指定表名称的额外前缀。

选填

table.string.<id|data|timestamp>.name

指定列名称。

必填

table.string.<id|data|timestamp>.type

指定列类型。

必填

key_to_string_mapper

指定 TwoWayKey2StringMapper 类。

选填

注意

要从旧的 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 to a JDBC String-Based cache store
target.type=STRING
target.cache_name=myCache
target.dialect=POSTGRES
target.marshaller.class=org.example.CustomMarshaller
target.marshaller.externalizers=25:Externalizer1,org.example.Externalizer2
target.connection_pool.connection_url=jdbc:postgresql:postgres
target.connection_pool.driver_class=org.postrgesql.Driver
target.connection_pool.username=postgres
target.connection_pool.password=redhat
target.db.major_version=9
target.db.minor_version=5
target.db.disable_upsert=false
target.db.disable_indexing=false
target.table.string.table_name_prefix=tablePrefix
target.table.string.id.name=id_column
target.table.string.data.name=datum_column
target.table.string.timestamp.name=timestamp_column
target.table.string.id.type=VARCHAR
target.table.string.data.type=bytea
target.table.string.timestamp.type=BIGINT
target.key_to_string_mapper=org.infinispan.persistence.keymappers. DefaultTwoWayKey2StringMapper
Copy to Clipboard Toggle word wrap
Expand
表 2.4. RocksDB Properties
属性描述必填/选填

位置

设置数据库目录。

必填

compression

指定要使用的压缩类型。

选填

# 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
Copy to Clipboard Toggle word wrap
Expand
表 2.5. SingleFileStore 属性
属性描述必填/选填

位置

设置包含缓存存储 .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
Copy to Clipboard Toggle word wrap
Expand
表 2.6. SoftIndexFileStore Properties
属性描述

必填/选填

位置

设置数据库目录。

必填

index_location

设置数据库索引目录。

# 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
Copy to Clipboard Toggle word wrap

2.4. 迁移缓存存储

运行 StoreMigrator 将数据从一个缓存存储迁移到另一个缓存存储。

先决条件

  • 获取 infinispan-tools.jar.
  • 创建 migrator.properties 文件,以配置源和目标缓存存储。

流程

  • 如果从源构建 infinispan-tools.jar,请执行以下操作:

    1. 将源和目标数据库(如 JDBC 驱动程序)的 infinispan-tools.jar 和依赖项添加到您的类路径。
    2. migrator.properties 文件指定为 StoreMigrator 的参数。
  • 如果您从 Maven 存储库拉取 infinispan-tools.jar,请运行以下命令:

    mvn exec:java

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部