Cómo migrar el DataStore

Pregunta

Debido a varias razones (por ejemplo, la consolidación de la infraestructura), podría tener sentido migrar los datos binarios existentes almacenados en un DataStore[1] a otro. ¿Cómo se puede realizar esta migración?

Respuesta, Resolución

Actualmente, no existe ninguna herramienta disponible que realice esta migración de DataStore. Sin embargo, con la ayuda de una instancia CRX temporal montada a través de WebDAV[2], esto puede lograrse fácilmente. El siguiente ejemplo muestra cómo migrar binarios de un FileDataStore a un DbDataStore.

Por favor, tenga en cuenta: ¡este procedimiento debe ser probado y validado en una instancia de prueba antes de aplicarlo en una instancia de producción!

Preparar una instancia temporal de CRX

El primer paso es configurar una segunda instancia CRX temporal sencilla con un almacén de datos basado en bases de datos (DbDataStore) configurado:

  • copiar el archivo crx-xxx-quickstart.jar y las propiedades license.properties a una ubicación temporal, por ejemplo, /tmp/crx_dbdatastore
  • ejecute el comando unpack: java -jar crx-xxx-quickstart.jar -unpack
  • una vez terminado, vaya al directorio desempaquetado crx-quickstart/server/webapps
  • descomprimir el CRX-webapp en el directorio crx-explorer_crx: unzip -d crx-explorer_crx crx-explorer_crx.war
  • borrar crx-explorer_crx.war
  • editar repository.xml

La configuración del DataStore necesita ser adaptada para utilizar la implementación de DbDataStore, por ejemplo:

<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> 

Una vez hecho esto:

  • copiar la biblioteca que contiene el controlador específico de la base de datos en crx-explorer_crx/WEB-INF/lib
  • renombra el directorio crx-explorer_crx a crx-explorer_crx.war
  • iniciar esta instancia de CRX

Durante la instalación, CRX creará un número de archivos binarios en el repositorio que deben ser almacenados en la base de datos configurada. Por favor, verifique que esto funciona correctamente.

Montar una instancia temporal de CRX con WebDAV.

El siguiente paso es montar la instancia CRX temporal a través de WebDAV[2] en el servidor que alberga la instancia CRX actual. En este ejemplo, se utiliza el punto de montaje WebDAV /tmp/crxwebdav.

Copiar ficheros de FS a la instancia temporal mediante WebDAV

El FileDataStore mantiene los archivos binarios por defecto en <crx_home>/crx-quickstart/repository/shared/repository/datastore, utilizando el hash del contenido de un archivo como nombre de archivo. Copiando esto al CRX temporal con DbDataStore configurado se crearán los mismos binarios con los mismos códigos hash, por lo que pueden ser reutilizados en un paso posterior.
Copie todos los archivos y carpetas recursivamente al punto de montaje de WebDAV:

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

Dependiendo de la cantidad de contenido binario, esto puede tomar algún tiempo. Tan pronto como la operación de copia recursiva haya terminado, también podrá desmontar y detener la instancia temporal de CRX.

Reconfigurar DataStore de CRX

El siguiente paso es modificar la configuración actual de DataStore de la instancia CRX (repositorio.xml) para usar la misma configuración de DbDataStore que la instancia temporal. Una vez hecho esto, inicie la instancia CRX y verifique que los binarios estén disponibles como antes.

Limpieza

Una vez verificado el procedimiento de migración anterior, se puede eliminar lo siguiente:

  • FileDataStore: crx-quickstart/repository/shared/repository/datastore
  • instancia temporal de CRX

Aplica

CRX1.3.x, CRX1.4.x, CRX2.x

[1] DataStore
[2] Cómo acceder al repositorio vía WebDAV

Logotipo de Adobe

Inicia sesión en tu cuenta