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 propiedadeslicense.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
acrx-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
Inicia sesión en tu cuenta