En esta página se explica la clonación y cómo clonar una instancia.
Descripción general
En la clonación de una instancia de Cloud SQL, se crea una instancia nueva que es una copia de la de origen. La instancia nueva es completamente independiente de la instancia de origen.
Preguntas frecuentes
Pregunta | Respuesta |
---|---|
¿La clonación afecta el rendimiento? | No. La clonación no afecta el rendimiento en la instancia de origen. |
¿Las copias de seguridad se copian en la instancia nueva? | No. La instancia nueva crea copias de seguridad automáticas nuevas. Las copias de seguridad manuales no se copian desde la instancia de origen. |
¿La instancia nueva tiene la misma dirección IP? | No. La instancia nueva tiene una dirección IP nueva. |
¿La instancia nueva tiene la misma configuración? | Sí. La instancia nueva tendrá la misma configuración, como las marcas de base de datos, las opciones de conectividad, el tipo de máquina y la configuración de almacenamiento y memoria. |
¿Las réplicas se copian en la instancia nueva? | No. Debes crear réplicas nuevas para la instancia nueva. |
¿Se puede clonar una réplica? | No. No puedes clonar una réplica. |
¿Se puede hacer una clonación de un momento anterior? | Sí. La recuperación de un momento determinado usa la clonación para restablecer una instancia desde un momento anterior. Esto te permite recuperar la base de datos en caso de un evento destructivo. |
¿La configuración de mantenimiento de la instancia de origen se copia de forma automática en la instancia de clonación? | No. Debes establecer la configuración de mantenimiento para la instancia de clonación. |
¿Se puede clonar una instancia cuando la zona de la instancia no está disponible? | Sí. Si clonas una instancia zonal, puedes especificar una zona principal diferente para la instancia. Si clonas una instancia de alta disponibilidad (regional), puedes especificar diferentes zonas principales y secundarias para la instancia. |
¿Se puede clonar una base de datos en otro proyecto? | No. No puedes clonar una base de datos en otro proyecto. |
¿Puedes clonar una instancia que antes era una clonación? | Sí. Puedes clonar una instancia que se clonó a partir de otra instancia. |
¿Los usuarios de la base de datos se copian en la instancia nueva? | Sí, los usuarios de la base de datos se copian en la instancia nueva. Las contraseñas de estos usuarios también se copian para que no se tengan que volver a crear. |
Clonar una instancia
Para clonar una instancia de Cloud SQL, puedes usar la consola de Google Cloud, gcloud CLI, Terraform o la API.
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Encuentra la fila de la instancia para clonar.
- En la columna Acciones, haz clic en el menú Más acciones .
- Haz clic en Crear clon.
- En la página Crear una clonación, actualiza el ID de la instancia si es necesario, haz clic en Crear clon y deja Clonar el estado actual de la instancia seleccionado.
Volverás a la página del listado de instancias mientras se inicializa el clon.
gcloud
Para clonar una instancia, usa el comando gcloud sql instances clone
:
gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \ --project PROJECT_ID \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
Realiza los siguientes reemplazos:
- SOURCE_INSTANCE_NAME: el nombre de la instancia de Cloud SQL que se clonará
- DESTINATION_INSTANCE_NAME: el nombre de la instancia clonada.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene las instancias de origen y destino
- ZONE_NAME: Opcional Es el nombre de la zona principal de la instancia de destino. Úsalo si deseas que la instancia de destino esté en una zona principal diferente a la de la instancia de Cloud SQL que clonas. En una instancia regional, esta zona reemplaza la zona principal, pero la zona secundaria sigue siendo la misma que la instancia de origen.
- SECONDARY_ZONE_NAME: Opcional Es el nombre de la zona secundaria para la instancia de destino. Úsalo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que deseas clonar.
Si usas los parámetros --preferred-zone
y --preferred-secondary-zone
, se aplican las siguientes condiciones:
- Tanto la zona principal como la secundaria deben ser válidas.
- Ambas zonas deben pertenecer a la misma región que la instancia de origen.
- Las zonas principal y secundaria deben ser diferentes.
- En el caso de las instancias zonales, no puedes usar el parámetro
--preferred-secondary-zone
. Si lo haces, el proceso para clonar la instancia fallará. - Si no especificas valores para los parámetros
--preferred-zone
o--preferred-secondary-zone
, la instancia clonada tendrá las mismas zonas principal y secundaria que la instancia de origen.
Para ejecutar el comando gcloud sql instances clone
,
debes tener el permiso cloudsql.instances.clone
. Si quieres obtener más información sobre los permisos necesarios para ejecutar comandos de gcloud CLI, consulta Permisos de Cloud SQL.
Terraform
Para clonar la instancia, usa un recurso de Terraform.
Aplique los cambios
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Borra los cambios
Para borrar tus cambios, haz lo siguiente:
- Para inhabilitar la protección contra la eliminación, en tu archivo de configuración de Terraform, establece el argumento
deletion_protection
enfalse
.deletion_protection = "false"
- Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa
yes
cuando se te solicite:terraform apply
-
Quita los recursos que se aplicaron antes con tu configuración de Terraform a través de la ejecución del siguiente comando y, luego, ingresa
yes
cuando se te solicite:terraform destroy
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene las instancias de origen y destino
- SOURCE_INSTANCE_NAME: el nombre de la instancia de Cloud SQL que se clonará
- DESTINATION_INSTANCE_NAME: el nombre de la instancia clonada.
- ZONE_NAME: Opcional Es el nombre de la zona principal de la instancia de destino. Úsalo si deseas que la instancia de destino esté en una zona principal diferente a la de la instancia de Cloud SQL que clonas. En una instancia regional, esta zona reemplaza la zona principal, pero la zona secundaria sigue siendo la misma que la instancia de origen.
- SECONDARY_ZONE_NAME: Opcional Es el nombre de la zona secundaria para la instancia de destino. Úsalo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que deseas clonar.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Cuerpo JSON de la solicitud:
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Si usas los parámetros preferredZone
y preferredSecondaryZone
, se aplican las siguientes condiciones:
- Tanto la zona principal como la secundaria deben ser válidas.
- Ambas zonas deben pertenecer a la misma región que la instancia de origen.
- Las zonas principal y secundaria deben ser diferentes.
- En el caso de las instancias zonales, no puedes usar el parámetro
preferredSecondaryZone
. Si lo haces, el proceso para clonar la instancia fallará. - Si no especificas valores para los parámetros
preferredZone
opreferredSecondaryZone
, la instancia clonada tendrá las mismas zonas principal y secundaria que la instancia de origen.
Para usar el método de API instances.clone
, debes tener el permiso cloudsql.instances.clone
. Si deseas obtener más información sobre los permisos necesarios para usar los métodos de API, consulta Permisos de Cloud SQL.
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene las instancias de origen y destino
- SOURCE_INSTANCE_NAME: el nombre de la instancia de Cloud SQL que se clonará
- DESTINATION_INSTANCE_NAME: el nombre de la instancia clonada.
- ZONE_NAME: Opcional Es el nombre de la zona principal de la instancia de destino. Úsalo si deseas que la instancia de destino esté en una zona principal diferente a la de la instancia de Cloud SQL que clonas. En una instancia regional, esta zona reemplaza la zona principal, pero la zona secundaria sigue siendo la misma que la instancia de origen.
- SECONDARY_ZONE_NAME: Opcional Es el nombre de la zona secundaria para la instancia de destino. Úsalo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que deseas clonar.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Cuerpo JSON de la solicitud:
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Si usas los parámetros preferredZone
y preferredSecondaryZone
, se aplican las siguientes condiciones:
- Tanto la zona principal como la secundaria deben ser válidas.
- Ambas zonas deben pertenecer a la misma región que la instancia de origen.
- Las zonas principal y secundaria deben ser diferentes.
- En el caso de las instancias zonales, no puedes usar el parámetro
preferredSecondaryZone
. Si lo haces, el proceso para clonar la instancia fallará. - Si no especificas valores para los parámetros
preferredZone
opreferredSecondaryZone
, la instancia clonada tendrá las mismas zonas principal y secundaria que la instancia de origen.
Para usar el método de API instances.clone
, debes tener el permiso cloudsql.instances.clone
. Si deseas obtener más información sobre los permisos necesarios para usar los métodos de API, consulta Permisos de Cloud SQL.
Clona una instancia que use una dirección IP interna
Si tu instancia de Cloud SQL usa una dirección IP interna, de forma opcional, puedes especificar un rango de IP asignado para la dirección IP nueva del clon. Por ejemplo, google-managed-services-default
gcloud
Clona la instancia y, de forma opcional, especifica el rango de IP asignado que deseas usar:
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
La cuenta de servicio o usuario que ejecuta el comando gcloud sql instances clone
debe tener el permiso cloudsql.instances.clone
. Si quieres obtener más información sobre los permisos necesarios para ejecutar comandos de gcloud CLI, consulta Permisos de Cloud SQL.
REST v1
Clona la instancia y, de forma opcional, especifica el rango de IP asignado que deseas usar:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- source-instance-id: el ID de la instancia de origen
- target-instance-id: el ID de la instancia de destino
- allocated-ip-range-name: el nombre de un rango de IP asignado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
Cuerpo JSON de la solicitud:
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
La cuenta de servicio o usuario que usa el método de API instances.clone
debe tener el permiso cloudsql.instances.clone
. Si deseas obtener más información sobre los permisos necesarios para usar los métodos de API, consulta Permisos de Cloud SQL.
REST v1beta4
Clona la instancia y, de forma opcional, especifica el rango de IP asignado que deseas usar:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- source-instance-id: el ID de la instancia de origen
- target-instance-id: el ID de la instancia de destino
- allocated-ip-range-name: el nombre de un rango de IP asignado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
Cuerpo JSON de la solicitud:
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
La cuenta de servicio o usuario que usa el método de API instances.clone
debe tener el permiso cloudsql.instances.clone
. Si deseas obtener más información sobre los permisos necesarios para usar los métodos de API, consulta Permisos de Cloud SQL.
Si no especificas un rango de IP asignado, se aplica el siguiente comportamiento:
- Si la instancia de origen se creó con un rango especificado, la instancia clonada se crea en el mismo rango.
- Si la instancia de origen no se creó con un rango especificado, la instancia clonada se crea en un rango aleatorio.
Solucionar problemas
Problema | Soluciona problemas |
---|---|
Si la clonación falla, se muestra el error constraints/sql.restrictAuthorizedNetworks . |
La configuración Authorized Networks bloquea la operación de clonación.
Las Authorized Networks están configuradas para direcciones IP públicas en la sección Conectividad de la consola de Google Cloud, y la clonación no está permitida debido a consideraciones de seguridad.
Si puedes, quita todas las entradas de |
Mensaje de error: Failed to create subnetwork. Couldn't find free
blocks in allocated IP ranges. Please allocate new ranges for this service
provider. Help Token: [help-token-id]. |
Estás tratando de usar la consola de Google Cloud para clonar una instancia con una dirección IP privada, pero no especificaste el rango de IP asignado que deseas usar y la instancia de origen no se crea en el rango especificado. Como resultado, la instancia clonada se crea en un rango aleatorio. Usa |