En esta página se describe cómo mover una instancia en Spanner.
Puedes mover tu instancia de Spanner de cualquier configuración de instancia a cualquier otra configuración de instancia, incluidas las configuraciones regionales, birregionales y multirregionales. Mover tu instancia no provoca tiempos de inactividad y Spanner sigue ofreciendo las garantías de transacción habituales, incluida la coherencia fuerte, durante el proceso.
También puedes mover tu 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
). Como no puedes actualizar la topología de las configuraciones de instancias, primero debes crear una configuración de instancia personalizada con la topología que quieras. Después de crear la nueva configuración de instancia personalizada, puedes mover tu instancia de la configuración de la instancia de origen a la nueva configuración de instancia personalizada.
¿Por qué mover tu instancia de Spanner?
Entre las ventajas de mover tu instancia se incluyen las siguientes:
- Aumentar la disponibilidad: consigue una disponibilidad del 99,999% sin tiempo de inactividad después de migrar de una región a dos o varias regiones.
- Reducir la latencia: reduce la latencia y aumenta la cobertura geográfica con réplicas de solo lectura adicionales pasando de una región a dos regiones o a varias regiones, o bien de varias regiones a varias regiones.
- Reducir costes: reduce los costes por hora pasando de una configuración de dos regiones o multirregional a una regional.
- Colocar la base de datos: coloca la base de datos de Spanner junto con la aplicación cliente moviendo la instancia a una ubicación más optimizada.
Precios
Al mover una instancia, tanto la configuración de la instancia de origen como la de la de destino están sujetas a cargos por computación y almacenamiento por hora. Una vez que se haya completado la migración, se te facturará el almacenamiento de la instancia según la configuración de destino.
Si vas a mover tu instancia a una nueva configuración regional, de dos regiones o multirregional, es posible que se te cobren tarifas por la transferencia de datos saliente. Para obtener más información, consulta los precios de Spanner.
Limitaciones
- Para mover una instancia, esta debe tener al menos 1 nodo (1000 unidades de procesamiento).
- No puedes mover tu instancia entre proyectos y cuentas de Google Cloud .
- No puedes mover una instancia que use la edición Estándar directamente de una configuración de instancia regional a una configuración de instancia birregional o multirregional. Primero debes actualizar la edición de tu instancia a la edición Enterprise Plus y, después, mover la instancia.
- Si tienes solicitudes activas que usan un endpoint de servicio regional en cualquiera de los recursos de instancia, el cambio de instancia afectará a todas las solicitudes que usen el endpoint regional, ya que la aplicación regional bloquea el acceso a las instancias de otras regiones. Las solicitudes que usan un endpoint global no se ven afectadas.
- Las copias de seguridad de Spanner son específicas de una configuración de instancia y no se incluyen al mover una instancia. Para obtener más información, consulta Copias de seguridad.
- Las siguientes APIs se inhabilitan durante el movimiento de una instancia:
InstanceAdmin.DeleteInstance
InstanceAdmin.UpdateInstance
DatabaseAdmin.CreateDatabase
DatabaseAdmin.UpdateDatabaseDdl
(inhabilitado si se especificadefault_leader
en la solicitud).DatabaseAdmin.RestoreDatabase
DatabaseAdmin.CreateBackup
DatabaseAdmin.CreateBackupSchedule
DatabaseAdmin.CopyBackup
- Si una base de datos tiene un líder predeterminado modificado, la selección se conserva si se asigna a una región de lectura y escritura en la configuración de la instancia de destino y esa configuración es multirregión. 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.
- Al mover una instancia, se cambia el atributo de configuración de la instancia. Si gestionas tus recursos de Spanner mediante la automatización, asegúrate de prepararlos y solucionar cualquier incoherencia que pueda surgir.
- Por ejemplo, si usas Terraform para gestionar tus instancias y bases de datos de Spanner, y habilitas
terraform apply --auto-approve
para mantener tus recursos sincronizados, todas las instancias y los recursos secundarios se eliminarán cuando movamos la instancia. Actualiza la configuración según corresponda para evitar que se eliminen datos. Consulta las opciones de Terraform Apply para obtener más información sobre el comandoapply
.
- Por ejemplo, si usas Terraform para gestionar tus instancias y bases de datos de Spanner, y habilitas
- Mientras se mueve la instancia, las métricas y los gráficos de monitorización de Spanner pueden mostrar datos de las configuraciones de la instancia de origen y de la de destino, o bien solo reflejar el rendimiento de una de las configuraciones.
- Si has configurado la herramienta Autoscaler de código abierto, no es necesario que la inhabilite. Se produce un error porque
InstanceAdmin.UpdateInstance
(que se usa para los cambios de nodos y unidades de procesamiento) está inhabilitado. - No puedes mover una instancia si tiene habilitada la función escalador automático gestionado de Spanner. Para mover la instancia, debes inhabilitar el auto escalador gestionado, mover la instancia y, a continuación, volver a habilitar el auto escalador gestionado.
- Además, si usas el autoescalado, debes aprovisionar suficientes nodos para el uso máximo de la CPU según las recomendaciones máximas indicadas y, a continuación, inhabilitar el autoescalado antes de mover la instancia.
- No puedes mover una instancia de prueba gratuita de Spanner. Puedes mover la instancia después de cambiar a una instancia de pago.
Consideraciones sobre el rendimiento.
Cuando se mueve una instancia, experimenta latencias de lectura y escritura más altas, así como una tasa de cancelación de transacciones más alta. El uso de la CPU durante la migración puede llegar al 100 %, ya que la migración de la instancia se realiza con la CPU de reserva aprovisionada por el usuario. Sin embargo, mover una instancia no provoca ningún tiempo de inactividad. El tiempo que se tarda en mover una instancia depende de varios factores, como el tamaño de las bases de datos, el número de nodos y el tipo de movimiento (por ejemplo, de regional a multirregional).
Después de mover una instancia, su rendimiento varía en función de los detalles de la configuración de la instancia. Por ejemplo, las configuraciones birregionales y multirregionales suelen tener una latencia de escritura mayor y una latencia de lectura menor que las configuraciones regionales.
Copias de seguridad
Cuando mueves una instancia, las copias de seguridad de la instancia de origen no se mueven automáticamente a la nueva configuración de destino. La migración de la instancia se cancela si hay copias de seguridad en la configuración de la instancia de origen cuando inicias la migración. Es importante que copies tus copias de seguridad y que tengas en cuenta tu plan de recuperación de datos antes de mover tu instancia.
Si hay copias de seguridad en la instancia de origen que necesitas conservar, te recomendamos que copies tus copias de seguridad a la configuración de la instancia de destino y a otra instancia con la misma configuración que la instancia de origen que se va a mover. Esto se debe a lo siguiente:
- Puedes copiar tus copias de seguridad en la configuración de la instancia de destino inmediatamente después de que se complete el traslado de la instancia.
- Si necesitas cancelar el movimiento de la instancia, también puedes restaurar rápidamente tus copias de seguridad desde la instancia con la misma configuración que la instancia de origen.
Después de copiar las copias de seguridad en otra instancia, debes eliminar las copias de seguridad de la instancia de origen antes de poder mover la instancia. A continuación, cuando 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 nueva copia de seguridad.
Para obtener más información sobre cómo copiar copias de seguridad y los costes asociados, consulta Copiar una copia de seguridad.
Cómo mover una instancia
Puedes mover una instancia con la Google Cloud consola Cloud Shell ygcloud
la CLI de gcloud mediante comandos de gcloud
.
Requisitos previos
Antes de mover la configuración de tu instancia, asegúrate de haber leído las secciones Limitaciones y Consideraciones sobre el rendimiento. A continuación, sigue estos pasos:
- Comprueba que tienes el
spanner.instances.update
permiso de gestión de identidades y accesos en la instancia de origen. - Si procede, mueva sus instancias que no sean de producción (como las de prueba y las de preproducción) antes de mover las de producción para evaluar y comprender el impacto en el rendimiento de las cargas de trabajo durante el movimiento de una instancia.
- Cuando mueves una instancia de Spanner, el proceso de traslado elimina las etiquetas de la instancia que hayas creado en Data Catalog. Para conservar tus etiquetas, debes exportarlas antes de la migración e importarlas después. Para obtener más información, consulta Exportar e importar etiquetas.
Para seguir las prácticas recomendadas, también debe cumplir estas directrices:
- Prueba las cargas de trabajo de rendimiento en instancias que no sean de producción en la configuración de la instancia de destino antes de mover tu instancia de producción. Prueba a mover una instancia de staging similar a tu instancia de producción para hacerte una idea de cuánto tiempo tardará en moverse tu instancia de producción.
- Comprueba que no haya hotspots en tus bases de datos con Key Visualizer.
- Comprueba que tienes suficiente cuota de nodos en la configuración de la instancia de destino para admitir el uso máximo previsto de la instancia. Para obtener más información, consulta Cuotas y límites de Spanner.
- Asegúrate de que el uso máximo de CPU de tu instancia sea inferior al 40% en la configuración de instancia que has movido y de que la cantidad de almacenamiento por nodo sea inferior a 1 tebibyte (TiB).
- No hagas cambios en la instancia durante la migración. Esto incluye cambiar el número de nodos de la instancia, modificar los esquemas de la base de datos, crear o eliminar bases de datos, y crear o eliminar copias de seguridad.
Si mueves tu instancia siguiendo estas recomendaciones, el proceso suele completarse en un plazo de 24 horas. Sin embargo, en función de la carga de trabajo de la aplicación, el tiempo de finalización puede ser mayor o menor.
Mover una instancia
Google Cloud consola
Ve a la página Instancias de la Google Cloud consola.
Selecciona la instancia que quieras mover.
En la página de resumen de la instancia, junto a Configuración, haz clic en editar Mover instancia a una nueva configuración.
En el panel Mover base de datos a una nueva configuración, selecciona la nueva configuración de la instancia.
Haz clic en Guardar.
CLI de gcloud
Usa el comando gcloud spanner instances move
para mover la instancia.
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG
Haz los cambios siguientes:
- INSTANCE_ID: identificador permanente de la instancia que quieres mover.
- TARGET_CONFIG: identificador permanente de la configuración de la instancia a la que quieres mover tu instancia. La nueva ubicación geográfica de tu instancia. Puede ser una configuración de instancia regional, birregional o multirregional (por ejemplo,
nam3
,regional-us-central1
ocustom-nam3-us-west2
).
Por ejemplo, para mover tu instancia test-instance
de su configuración actual a nam3
, ejecuta lo siguiente:
gcloud spanner instances move test-instance --target-config=nam3
Opcional: Si quieres añadir una réplica de solo lectura en la región us-west2
a la configuración de la instancia base en nam3
, haz lo siguiente:
Clona la configuración base y añade la réplica de solo lectura a la nueva configuración de instancia personalizada
custom-nam3-us-west2
:gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
Mueve tu instancia
test-instance
de su configuración de instancia actual a esta nueva configuración de instanciacustom-nam3-us-west2
:gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
Opcional: Mover una instancia con bases de datos habilitadas para CMEK
Usa el comando gcloud spanner instances move
para mover una instancia con bases de datos que tengan habilitada la CMEK.
Debes incluir la marca --target-database-move-configs
y los valores de las claves de KMS en el comando o configurar un archivo JSON o YAML con las claves de KMS necesarias.
Notas sobre el uso:
- Si tienes varias bases de datos con CMEK habilitado en la instancia que quieres mover, debes especificar
-—target-database-move-configs
para cada una de ellas. Puedes usar las mismas claves para todas las bases de datos, pero debes especificar las claves de cada base de datos habilitada para CMEK. - Las claves deben cubrir todas las regiones de la configuración de la instancia de destino. Por ejemplo, si la configuración de tu instancia de destino está en
nam3
, debes definir las claves enregional-us-east4
,regional-us-east1
yregional-us-central1
. - No puedes definir claves de KMS para bases de datos que no tengan habilitado CMEK mientras mueves la instancia.
- No debes inhabilitar ni destruir las claves de CMEK en la configuración de la instancia de origen ni en la de la de destino mientras mueves la instancia. La migración no se lleva a cabo si lo intentas.
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG \
--target-database-move-configs=^:^database-id=DATABASE_ID_1:kms-key-names=KMS_KEY_1[, KMS_KEY_2 ... ] \
[--target-database-move-configs=^:^database-id=DATABASE_ID_2:kms-key-names=KMS_KEY_1 ... ]
o
gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG \
--target-database-move-configs=CONFIG_FILE_PATH
Configure el archivo CONFIG_FILE_PATH con los IDs de su base de datos y las claves de KMS. El siguiente ejemplo de archivo de configuración contiene las claves de KMS de dos bases de datos, database-1
y database-2
, con las mismas claves en regional-us-east4
, regional-us-east1
y regional-us-central1
para cubrir todas las regiones de nam3
.
[
{
database-id: database-1,
kms-key-names:
"projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
},
{
database-id: database-2,
kms-key-names:
"projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
},
]
Cómo monitorizar el progreso de la cancelación y el traslado de instancias
Puedes usar gcloud spanner operations describe
o crear un panel de control de Cloud Monitoring personalizado para monitorizar el progreso del movimiento de una instancia.
Ver el progreso de las operaciones de transferencia y cancelación
Para monitorizar el progreso de una operación de traslado o cancelación de traslado de una instancia, usa el comando gcloud spanner operations describe
. Este comando requiere el ID de operación del traslado de la instancia en curso.
Para obtener el ID de la operación de traslado de la instancia, ejecuta el siguiente comando:
gcloud spanner operations list --instance="INSTANCE_ID"
Haz los cambios siguientes:
- INSTANCE_ID: identificador permanente de la instancia que quieres mover.
El resultado muestra una lista de operaciones de larga duración, incluida la operación de traslado de la instancia.
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
Haz los cambios siguientes:
- OPERATION_ID: el ID de operación de la operación de traslado de la instancia que quieres comprobar.
- INSTANCE_ID: el ID de instancia de la instancia que quieres comprobar.
Monitorizar una operación de movimiento de instancias
Puede crear un panel de control personalizado de Cloud Monitoring para mostrar y monitorizar métricas durante el movimiento de la instancia, una operación de larga duración con posibles implicaciones en el servicio.
Los gráficos Almacenamiento total y Almacenamiento total de la base de datos por bases de datos del panel de control te ayudarán a monitorizar el progreso de la migración. Puedes ver cómo el almacenamiento de la configuración de origen disminuye gradualmente mientras que el de la configuración de destino aumenta.
Google Cloud consola
- Descarga el archivo
move-instance-dashboard.json
. Este archivo contiene la información necesaria para rellenar un panel de control personalizado en Monitorización. -
En la Google Cloud consola, ve a la página
Paneles de control:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la página Resumen de paneles de control, haga clic en Crear panel de control.
- En la barra de herramientas del panel de control, haz clic en el menú desplegable Configuración del panel de control. A continuación, selecciona JSON y, después, Editor de JSON.
- En el panel Editor de JSON, copia el contenido del archivo
move-instance-dashboard.json
que has descargado y pégalo en el editor. - Para aplicar los cambios al panel de control, haz clic en Aplicar cambios. Si no quieres usar este panel de control, vuelve a la página de resumen de paneles de control.
- Una vez creado el panel de control, haz clic en Añadir filtro. A continuación, selecciona
project_id
oinstance_id
para monitorizar el progreso de la migración de tu instancia.
CLI de gcloud
- Descarga el archivo
move-instance-dashboard.json
. Este archivo contiene la información necesaria para rellenar un panel de control personalizado en Monitorización. Para crear un panel de control 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 movimiento de una instancia
Solo puedes cancelar un movimiento de instancia que aún esté en curso. Si quieres deshacer un movimiento de instancia que ya se ha completado, debes iniciar un nuevo movimiento.
Puedes usar gcloud spanner operations cancel
para cancelar operaciones de movimiento de instancias. La cancelación no es instantánea y tarda aproximadamente el mismo tiempo que el que ha transcurrido desde el inicio del movimiento. Esto se debe a que los datos deben volver a la configuración de la instancia de origen.
Este comando requiere el ID de operación del traslado de la instancia en curso.
Para obtener el ID de la operación, ejecuta el siguiente comando:
gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID" --filter="done:False AND metadata.@type:MoveInstanceMetadata
Haz los cambios siguientes:
- INSTANCE_ID: identificador permanente de la instancia que quieres mover.
El resultado muestra una lista de operaciones de movimiento de instancias en curso.
Ejecuta el comando
gcloud spanner operations cancel
para cancelar el movimiento de la instancia:gcloud spanner operations cancel OPERATION_ID
Haz los cambios siguientes:
- OPERATION_ID: el ID de operación de la operación de traslado de la instancia que quieres cancelar.
Siguientes pasos
- Más información sobre las configuraciones regionales, birregionales y multirregionales de Spanner
- Google Cloud Más información sobre las regiones y las zonas