Traslada una instancia

En esta página, se describe cómo trasladar una instancia en Spanner.

Puedes trasladar la instancia de Spanner desde cualquier configuración de instancia a cualquier otra configuración de instancia, incluidas las configuraciones regionales y multirregionales. Trasladar la instancia no causa tiempo de inactividad, y Spanner continúa proporcionando las garantías de transacciones habituales, incluida la coherencia sólida, durante el traslado.

También puedes trasladar la instancia de su configuración de instancia de origen a una configuración de instancia personalizada (por ejemplo, una configuración base nam3 con una réplica de solo lectura us-west2). Debido a que no puedes actualizar la topología de las configuraciones de instancias existentes, primero debes crear una nueva configuración de instancia personalizada con la topología que desees. Después de crear la configuración de instancia personalizada nueva, puedes trasladarla de la configuración de la instancia de origen a la nueva configuración de instancia personalizada.

¿Por qué trasladar tu instancia de Spanner?

Estos son algunos de los beneficios de trasladar la instancia:

  • Aumenta la disponibilidad: Obtén una disponibilidad del 99.999% sin tiempo de inactividad después de realizar un traslado regional a multirregional.
  • Reduce la latencia: Reduce la latencia y aumenta la cobertura geográfica con réplicas de solo lectura adicionales a través de un traslado regional a multirregional o de multirregión a multirregión.
  • Reducción de costos: Cambia de una configuración multirregional a una regional para reducir los costos por hora.
  • Colocar base de datos: Coloca la base de datos de Spanner con la aplicación cliente moviendo la instancia a una ubicación más optimizada.

Precios

Cuando se traslada una instancia, tanto la configuración de la instancia de origen como la de destino están sujetas a cargos de procesamiento y almacenamiento por hora. Una vez que se complete el traslado, se te facturará por el almacenamiento de la instancia en la configuración de destino.

Si trasladas tu instancia a una nueva configuración de instancia regional o multirregional, es posible que estés sujeto a cargos de transferencia de datos salientes. Para obtener más información, consulta Precios de Spanner.

Limitaciones

  • Para trasladar la instancia, debe tener, como mínimo, 1 nodo (1,000 unidades de procesamiento).
  • No puedes trasladar tu instancia entre proyectos y cuentas de Google Cloud.
  • No puedes trasladar una instancia de prueba gratuita de Spanner. Puedes trasladar la instancia después de actualizar a una instancia pagada.
  • Si tienes solicitudes activas que usan un extremo de servicio regional en cualquiera de los recursos de la instancia, el movimiento de la instancia afecta todas las solicitudes que usan el extremo regional, ya que la aplicación regional bloquea el acceso a las instancias entre regiones. Las solicitudes que usan un extremo global no se ven afectadas.
  • Las copias de seguridad de Spanner son específicas de la configuración de una instancia y no se incluyen cuando se traslada una instancia. Para obtener más información, consulta Copias de seguridad.
  • Las siguientes APIs se inhabilitan durante el traslado de una instancia:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (se inhabilita si se especifica default_leader en la solicitud).
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CopyBackup
  • No puedes mover instancias que contengan bases de datos habilitadas para CMEK.
  • Si una base de datos tiene un líder predeterminado modificado, la selección se conserva si nombra una región de lectura y escritura en la configuración de la instancia de destino, y esa configuración es multirregional. Si la configuración de destino es regional o no incluye la región de lectura y escritura con nombre, se borrará la selección de líder predeterminada.
  • Mover una instancia cambia el atributo de configuración de tu instancia. Si administras tus recursos de Spanner a través de la automatización, asegúrate de preparar y abordar cualquier incoherencia que pueda surgir.
    • Por ejemplo, si usas Terraform para administrar tus instancias y bases de datos de Spanner, y habilitas terraform apply --auto-approve para mantener los recursos sincronizados, todas las instancias y los recursos secundarios se borran cuando trasladamos la instancia. Actualiza la configuración según corresponda para evitar la eliminación y la pérdida de datos. Consulta Opciones de Terraform apply para obtener más información sobre el comando apply.
  • Mientras se traslada la instancia, es posible que los gráficos y las métricas de supervisión de Spanner muestren datos en la configuración de la instancia de origen y de destino, o que solo reflejen el rendimiento en la configuración de una instancia.
  • Si configuraste la herramienta Escalador automático de código abierto, no es necesario que la inhabilites. Falla porque InstanceAdmin.UpdateInstance (que se usa para cambios de nodos y unidades de procesamiento) está inhabilitado.
  • No puedes mover una instancia si la función escalador automático administrado por Spanner está habilitada en ella. Para trasladar la instancia, debes inhabilitar el escalador automático administrado, mover la instancia y, luego, volver a habilitar el escalador automático administrado.

    Además, si usas el ajuste de escala automático, debes aprovisionar suficientes nodos para el uso máximo de CPU de acuerdo con las recomendaciones máximas indicadas y, luego, inhabilitar el ajuste de escala automático antes de trasladar la instancia.

Consideraciones sobre el rendimiento

Cuando se traslada una instancia, experimenta latencias de lectura y escritura más altas, y una tasa de anulación de transacciones más alta. El uso de CPU durante el traslado puede aumentar hasta el 100% porque el traslado de la instancia se realiza con la CPU libre que aprovisiona el usuario. Sin embargo, mover una instancia no causa ningún tiempo de inactividad. El tiempo que lleva trasladar una instancia depende de varios factores, incluidos el tamaño de las bases de datos, la cantidad de nodos y el tipo de traslado (p.ej., de regional a multirregional).

Después de trasladar una instancia, su rendimiento varía según los detalles de su configuración. Por ejemplo, las configuraciones multirregionales suelen tener una latencia de escritura más alta y una latencia de lectura más baja que las configuraciones regionales.

Copias de seguridad

Cuando mueves una instancia, las copias de seguridad en la instancia de origen no se mueven automáticamente a la nueva configuración de destino. El traslado de la instancia se anula si existen copias de seguridad en la configuración de la instancia de origen cuando inicias el traslado de la instancia. Es importante que copies las copias de seguridad y consideres tu plan de recuperación de datos antes de mover tu instancia.

Si hay copias de seguridad en la instancia de origen que debes conservar, te recomendamos que copias tus copias de seguridad en la configuración de la instancia de destino y en otra instancia con la misma configuración que la instancia de origen que se moverá. Esto es así:

  • Puedes copiar las copias de seguridad en la configuración de la instancia de destino de inmediato después de que se complete el traslado de la instancia.
  • Si necesitas cancelar el traslado de la instancia, también puedes restablecer rápidamente las copias de seguridad desde la instancia con la misma configuración que la de la instancia de origen.

Después de copiar las copias de seguridad en otra instancia, debes borrar cualquier copia de seguridad existente en la instancia de origen antes de poder moverla. Luego, una vez que se complete el traslado de la instancia, ya tendrás una copia de la copia de seguridad en la configuración de destino. También puedes crear una copia de seguridad nueva.

Para obtener más información sobre la copia de copias de seguridad y los costos asociados, consulta Cómo copiar una copia de seguridad.

Cómo trasladar una instancia

Puedes trasladar una instancia con Cloud Shell de la consola de Google Cloud y gcloud CLI con los comandos de gcloud.

Requisitos previos

Antes de trasladar la configuración de tu instancia, asegúrate de leer las secciones Limitaciones y Consideraciones de rendimiento. Luego, sigue estos pasos:

  1. Verifica que tengas el permiso de IAM spanner.instances.update en la instancia de origen.
  2. Si corresponde, mueve tus instancias de no producción (como las de prueba y etapa de pruebas) antes de mover tus instancias de producción para poder evaluar y comprender el impacto en el rendimiento en las cargas de trabajo durante el traslado de una instancia.
  3. Cuando mueves una instancia de Spanner, el proceso de traslado borra las etiquetas de la instancia que creaste en Data Catalog. Para conservar tus etiquetas, debes exportarlas antes del traslado y, luego, importarlas después del traslado. Para obtener más información, consulta Cómo importar y exportar etiquetas.

Para conocer las prácticas recomendadas, sigue estos lineamientos:

  • Prueba las cargas de trabajo de rendimiento en instancias de no producción en la configuración de la instancia de destino antes de trasladar la instancia de producción. Intenta trasladar una instancia de etapa de pruebas similar a la de producción para tener una idea de cuánto tiempo tardarás en trasladar la instancia de producción.
  • Verifica que no haya hotspots en tus bases de datos con Key Visualizer.
  • Asegúrate de tener suficiente cuota de nodos en la configuración de la instancia de destino para admitir el uso máximo esperado de la instancia. Para obtener más información, consulta Cuotas y límites de Spanner.
  • Asegúrate de que el uso de CPU máximo de tu instancia sea inferior al 40% para la configuración de la instancia que trasladaste y que la cantidad de almacenamiento por nodo sea inferior a 1 tebibyte (TiB).
  • No realices cambios en la instancia durante el traslado. Esto incluye cambiar el recuento de nodos de la instancia, cambiar los esquemas de las bases de datos, crear o descartar bases de datos y crear o borrar copias de seguridad.

Si trasladas la instancia de acuerdo con estas recomendaciones, el traslado suele completarse en 24 horas. Sin embargo, según la carga de trabajo de la aplicación, el tiempo de finalización puede ser más largo o más corto.

Traslada una instancia

Consola de Google Cloud

  1. Haz clic en Activa el ícono de Cloud Shell Activar Cloud Shell en la parte superior de la consola de Google Cloud.

    Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola de Google Cloud, que mostrará una ventana de línea de comandos. La sesión puede tardar unos segundos en inicializarse.

  2. Usa el comando gcloud spanner instances move para trasladar la instancia.

    gcloud spanner instances move INSTANCE_ID \
    --target-config=TARGET_CONFIG
    

    Reemplaza lo siguiente:

    • INSTANCE_ID: Es el identificador permanente de la instancia que deseas mover.
    • TARGET_CONFIG: Es un identificador permanente de la configuración de la instancia a la que deseas trasladar la instancia. La nueva ubicación geográfica de tu instancia. Puede ser una configuración de instancia regional, multirregional o personalizada (por ejemplo, nam3, us-central1 o custom-nam3-us-west2).

Por ejemplo, para trasladar la instancia test-instance de su configuración de instancia actual a nam3, ejecuta lo siguiente:

  gcloud spanner instances move test-instance --target-config=nam3

Si deseas agregar una réplica de solo lectura, us-west2, a la configuración de instancia base nam3, haz lo siguiente (opcional):

  1. Clona la configuración base y agrega la réplica de solo lectura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Mueve tu instancia test-instance de su configuración de instancia actual a esta nueva configuración de instancia custom-nam3-us-west2:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

gcloud CLI

Usa el comando gcloud spanner instances move para trasladar la instancia.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

Reemplaza lo siguiente:

  • INSTANCE_ID: Es el identificador permanente de la instancia que deseas mover.
  • TARGET_CONFIG: Es un identificador permanente de la configuración de la instancia a la que deseas trasladar la instancia. La nueva ubicación geográfica de tu instancia. Puede ser una configuración de instancia regional o multirregional (por ejemplo, nam3, us-central1 o custom-nam3-us-west2).

Por ejemplo, para trasladar la instancia test-instance de su configuración de instancia actual a nam3, ejecuta lo siguiente:

  gcloud spanner instances move test-instance --target-config=nam3

Si deseas agregar una réplica de solo lectura, us-west2, a la configuración de instancia base nam3, haz lo siguiente (opcional):

  1. Clona la configuración base y agrega la réplica de solo lectura:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Mueve tu instancia test-instance de su configuración de instancia actual a esta nueva configuración de instancia custom-nam3-us-west2:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

Cómo supervisar el progreso del traslado y la cancelación de una instancia

Puedes usar gcloud spanner operations describe o crear un panel personalizado de Cloud Monitoring para supervisar el progreso del traslado de una instancia.

Visualiza el progreso de la operación de traslado y cancelación

Para realizar un seguimiento del progreso de una operación de traslado de instancia o de cancelación de traslado de instancia, usa el comando gcloud spanner operations describe. Este comando requiere el ID de operación de la operación de traslado de la instancia en curso.

  1. Para obtener el ID de operación de tu operación de traslado de instancia, ejecuta lo siguiente:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Reemplaza lo siguiente:

    • INSTANCE-ID: Es el identificador permanente de la instancia que deseas mover.

    El resultado muestra una lista de operaciones de larga duración, incluida la operación de traslado de instancia.

  2. Ejecuta el comando gcloud spanner operations describe para ver el porcentaje de progreso y el estado:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Reemplaza lo siguiente:

    • OPERATION_ID: Es el ID de operación de la operación de traslado de instancia que deseas verificar.
    • INSTANCE_ID: Es el ID de la instancia que deseas verificar.

Supervisa una operación de traslado de instancias

Puedes crear un panel personalizado de Cloud Monitoring para mostrar y supervisar las métricas durante el traslado de la instancia, una operación de larga duración que puede implicar posibles implicaciones en el servicio.

Los gráficos Almacenamiento total y Almacenamiento total de la base de datos por bases de datos en el panel son útiles para supervisar el progreso del traslado. Puedes ver que el almacenamiento en la configuración de origen disminuye de forma gradual mientras el almacenamiento en la configuración de destino aumenta.

Consola de Google Cloud

  1. Descarga el archivo move-instance-dashboard.json. Este archivo tiene la información necesaria para propagar un panel personalizado en Monitoring.
  2. En la consola de Google Cloud, ve a la página  Paneles.

    Ir a Paneles

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  3. En la página Descripción general de los paneles, haz clic en Crear panel.
  4. En la barra de herramientas del panel, haz clic en el menú desplegable Configuración del panel. Luego, selecciona JSON, seguido de Editor de JSON.
  5. En el panel JSON Editor, copia el contenido del archivo move-instance-dashboard.json que descargaste y pégalo en el editor.
  6. Para aplicar los cambios en el panel, haz clic en Aplicar cambios. Si no deseas usar este panel, vuelve a la página Resumen de los paneles.
  7. Después de crear el panel, haz clic en Agregar filtro. Luego, selecciona project_id o instance_id para supervisar el progreso del traslado de la instancia.

gcloud CLI

  1. Descarga el archivo move-instance-dashboard.json. Este archivo tiene la información necesaria para propagar un panel personalizado en Monitoring.
  2. Para crear un panel en un proyecto, usa el comando gcloud monitoring dashboards create:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    Para obtener más información, consulta la referencia de gcloud monitoring dashboards create.

Cómo cancelar el traslado de una instancia

Solo puedes cancelar un traslado de instancia que aún esté en curso. Si deseas revertir un traslado de instancia ya completado, debes iniciar un traslado nuevo.

Puedes usar gcloud spanner operations cancel para cancelar las operaciones de traslado de instancias. La cancelación no es instantánea y tarda más o menos en la misma cantidad que el tiempo transcurrido desde el inicio del movimiento. Esto se debe a que los datos deben regresar a la configuración de la instancia de origen.

Este comando requiere el ID de operación de la operación de traslado de la instancia en curso.

  1. Para obtener el ID de operación, ejecuta lo siguiente:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    Reemplaza lo siguiente:

    • INSTANCE_ID: Es el identificador permanente de la instancia que deseas mover.

    El resultado muestra una lista de las operaciones de traslado de instancias en curso.

  2. Ejecuta el comando gcloud spanner operations cancel para cancelar el traslado de la instancia:

    gcloud spanner operations cancel OPERATION_ID
    

    Reemplaza lo siguiente:

    • OPERATION_ID: Es el ID de la operación de traslado de instancia que deseas cancelar.

¿Qué sigue?