質問

様々な理由(例えば、インフラストラクチャの統合など)により、あるデータストア[1]に格納されている既存のバイナリデータを別のデータストアに移行することは理にかなっています。このような移行はどのように実行できるのでしょうか?

回答、解決策

現在、このようなデータストア移行を行うツールはありません。ただし、WebDAV[2]によってマウントされた一時 CRX インスタンスを使用すると、この作業を簡単に実行できます。次の例は、FileDataStore から DbDataStore にバイナリを移行する方法を示しています。
 
 注意:この手順では、実稼働インスタンスに適用する前に、テストインスタンスで最初にテストし検証する必要があります。

一時 CRX インスタンスの準備

最初の手順は、設定された DB ベースのデータストア(DbDataStore)から、2番目のプレーン一時 CRX インスタンスを作成するという方法:

  • crx-xxx-quickstart.jarlicense.properties を一時場所へコピー(例えば、/tmp/crx_dbdatastore
  • アンパックコマンドを実行:java -jar crx-xxx-quickstart.jar -unpack
  • 完了したら、アンパックディレクトリに入る crx-quickstart/server/webapps
  • CRX-webapp をディレクトリに解凍する crx-explorer_crxunzip -d crx-explorer_crx crx-explorer_crx.war
  • crx-explorer_crx.war を削除する
  • repository.xml を編集する

データストアの設定は、DbDataStore 実装を使用するように調整する必要があります。例えば:

<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore"> <param name="url" value="jdbc:h2:~/test" /> <param name="user" value="sa" /> <param name="password" value="sa" /> <param name="databaseType" value="h2" /> <param name="driver" value="org.h2.Driver" <param name="maxConnections" value="3"/> <param name="copyWhenReading" value="true"/> <param name="tablePrefix" value=""/> <param name="schemaObjectPrefix" value=""/> <param name="minRecordLength" value="4096"/> </DataStore> 

これが完了したら:

  • データベース専用のドライバーを含むライブラリを crx-explorer_crx/WEB-INF/lib へコピーする
  • ディレクトリの名前を crx-explorer_crx から crx-explorer_crx.war に変更する
  • この CRX インスタンスを開始する

インストール時、CRX は設定済みデータベースに保存する必要のあるリポジトリ内に多数のバイナリファイルを作成します。これが正しく動作していることを確認してください。

一時 CRX インスタンスを WebDAV にマウントする

次の手順は、現在の CRX インスタンスをホストしているサーバー上の WebDAV [2]経由で一時 CRX インスタンスをマウントするためのものです。この例では、WebDAV mount-point /tmp/crxwebdav が使用されています。

WebDAV 経由でファイルを FS から一時インスタンスにコピーする

ファイルデータストアは、ファイルのコンテンツのハッシュをファイル名として使用し、<crx_home>/crx-quickstart/repository/shared/repository/datastore からデフォルトごとにバイナリファイルを保持します。これを、設定済みの DbDataStore と一時 CRX にコピーすると、同じハッシュコードの同じバイナリが作成されるので、後の手順で再利用できます。
WebDAV mount-point にすべてのファイルとフォルダーを再帰的にコピー:

cd <crx_home> cp -Rv crx-quickstart/repository/shared/repository/datastore /tmp/crxwebdav 

バイナリコンテンツの量に応じて、多少の時間がかかることがあります。反復コピー操作が完了すると、一時 CRX インスタンスも再起動および停止できます。

CRX のデータストアの再設定

次の手順では、、一時インスタンスと同じ DbDataStore 設定を使用するために、現在の CRX インスタンスのデータストア設定(repository.xml)を変更します。これが完了したら、CRX インスタンスを起動し、前と同様にバイナリが使用可能であることを確認します。

整理

上記の移行手順が検証されると、次が削除可能:

  • ファイルデータストア:crx-quickstart/repository/shared/repository/datastore
  • 一時 CRX インスタンス

適用

CRX1.3.x、CRX1.4.x、CRX2.x
 
[1] データストア
[2] WebDAV 経由でリポジトリにアクセスする方法

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー