6.17. キャッシュストア間のデータの移行
Data Grid は、あるキャッシュストアから別のキャッシュストアにデータを移行するユーティリティーを提供します。
6.17.1. キャッシュストアマイグレーター
Data Grid は、最新の Data Grid キャッシュストア実装のデータを再作成する StoreMigrator.java
ユーティリティーを提供します。
StoreMigrator
は以前のバージョンの Data Grid のキャッシュストアを取得し、キャッシュストア実装をターゲットとして使用します。
StoreMigrator
を実行すると、EmbeddedCacheManager
インターフェイスを使用して定義したキャッシュストアタイプでターゲットキャッシュが作成されます。StoreMigrator
は、ソースストアからメモリーにエントリーを読み込み、それらをターゲットキャッシュに配置します。
StoreMigrator
を使用すると、あるタイプのキャッシュストアから別のストアにデータを移行することもできます。たとえば、JDBC String ベースのキャッシュストアから RocksDB キャッシュストアに移行することができます。
StoreMigrator
は、セグメント化されたキャッシュストアから以下にデータを移行できません。
- 非セグメント化されたキャッシュストア。
- セグメント数が異なるセグメント化されたキャッシュストア。
6.17.2. キャッシュストアマイグレーターの取得
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>
6.17.3. キャッシュストアマイグレーターの設定
ソースおよびターゲットのキャッシュストアのプロパティーを 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>
migrator.properties
でターゲットキャッシュストアを設定します。以下の例のように、すべての設定プロパティーの先頭に
target.
を付けます。target.type=SINGLE_FILE_STORE target.cache_name=myCache target.location=/path/to/target/sfs.dat
6.17.3.1. キャッシュストアマイグレーターの設定プロパティー
ソースおよびターゲットのキャッシュストアを StoreMigrator
プロパティーで設定します。
プロパティー | 説明 | 必須/オプション |
---|---|---|
| ソースまたはターゲットのキャッシュストアタイプのタイプを指定します。
| 必須 |
プロパティー | 説明 | 値の例 | 必須/オプション |
---|---|---|---|
| ストアがバックアップするキャッシュに名前を付けます。 |
| 必須 |
| セグメンテーションを使用できるターゲットキャッシュストアのセグメント数を指定します。
セグメント数は、Data Grid 設定の つまり、キャッシュストアのセグメント数は、対応するキャッシュのセグメント数と一致する必要があります。セグメントの数が同一でない場合、Data Grid はキャッシュストアからデータを読み込めません。 |
| 任意 |
プロパティー | 説明 | 必須/オプション |
---|---|---|
| 基礎となるデータベースのダイアレクトを指定します。 | 必須 |
|
ソースキャッシュストアのマーシャラーバージョンを指定します。
* Data Grid 7.2.x の場合は
* Data Grid 7.3.x の場合は
* Data Grid 8.0.x の場合は
* Data Grid 8.1.x の場合は
* Data Grid 8.2.x の場合は
* Data Grid 8.3.x の場合は | ソースストアにのみ必要です。 |
| カスタムマーシャラークラスを指定します。 | カスタムマーシャラーを使用する場合に必要です。 |
|
| 任意 |
| JDBC 接続 URL を指定します。 | 必須 |
| JDBC ドライバーのクラスを指定します。 | 必須 |
| データベースユーザー名を指定します。 | 必須 |
| データベースユーザー名のパスワードを指定します。 | 必須 |
| データベースのメジャーバージョンを設定します。 | 任意 |
| データベースのマイナーバージョンを設定します。 | 任意 |
| データベース upsert を無効にします。 | Optional |
| テーブルインデックスが作成されるかどうかを指定します。 | Optional |
| テーブル名の追加接頭辞を指定します。 | Optional |
| 列名を指定します。 | 必須 |
| 列タイプを指定します。 | 必須 |
|
| 任意 |
Binary キャッシュストアから古い Data Grid バージョンの移行には、以下のプロパティーで table.string.*
を 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
プロパティー | 説明 | 必須/オプション |
---|---|---|
| データベースディレクトリーを設定します。 | 必須 |
| 使用する圧縮タイプを指定します。 | 任意 |
# 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 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
6.17.4. Data Grid キャッシュストアの移行
StoreMigrator
を実行して、あるキャッシュストアから別のキャッシュストアにデータを移行します。
前提条件
-
infinispan-tools.jar
を取得します。 -
ソースおよびターゲットのキャッシュストアを設定する
migrator.properties
ファイルを作成します。
手順
ソースから
infinispan-tools.jar
をビルドする場合は、以下を実行します。-
JDBC ドライバーなどのソースおよびターゲットのデータベースの
infinispan-tools.jar
および依存関係をクラスパスに追加します。 -
migrator.properties
ファイルをStoreMigrator
の引数として指定します。
-
JDBC ドライバーなどのソースおよびターゲットのデータベースの
Maven リポジトリーから
infinispan-tools.jar
をプルする場合は、以下のコマンドを実行します。mvn exec:java