Clonar instancias,Clonar instancias

Esta página explica la clonación y describe cómo clonar una instancia.

Descripción general

Al clonar una instancia de Cloud SQL, se crea una nueva instancia que es una copia de la instancia de origen. Esta nueva instancia es completamente independiente de la instancia de origen.

Preguntas frecuentes

Pregunta Respuesta
¿La clonación afecta el rendimiento? No. La clonación no tiene ningún impacto en el rendimiento de la instancia de origen.
¿Se copian las copias de seguridad a la nueva instancia? No. La nueva instancia crea copias de seguridad automáticas. Las copias de seguridad manuales no se copian desde la instancia de origen.
¿La nueva instancia tiene la misma dirección o direcciones IP? No. La nueva instancia tiene una nueva dirección IP o direcciones nuevas.
¿La nueva instancia tiene la misma configuración? Sí. La nueva instancia tiene la misma configuración, como indicadores de base de datos, opciones de conectividad, tipo de máquina y configuraciones de almacenamiento y memoria.
¿Se copian las réplicas a la nueva instancia? No. Debe crear nuevas réplicas para la nueva instancia.
¿Puedes clonar una réplica? No. No puedes clonar una réplica.
¿Es posible crear un clon de un momento anterior en el tiempo? Sí. La recuperación a un punto en el tiempo utiliza la clonación para restaurar una instancia desde un punto anterior. Esto le ayuda a recuperar su base de datos tras un evento destructivo.
¿Las configuraciones de mantenimiento de la instancia de origen se copian automáticamente a la instancia clonada? No. Debe configurar los ajustes de mantenimiento para la instancia clonada.
¿Puedes clonar una instancia cuando la zona de la instancia no está disponible? Sí. Si clona una instancia zonal, puede especificar una zona principal diferente para ella. Si clona una instancia de alta disponibilidad (regional), puede especificar diferentes zonas principales y secundarias para ella.
¿Puedes clonar una base de datos a otro proyecto? No. No puedes clonar una base de datos a otro proyecto.
¿Es posible clonar una instancia que alguna vez fue un clon? Sí. Puedes clonar una instancia que fue clonada desde otra instancia.
¿Se copian los usuarios de la base de datos a la nueva instancia? Sí, los usuarios de la base de datos se copian a la nueva instancia. Sus contraseñas también se copian, por lo que no es necesario volver a crearlas.

Clonar una instancia

Puede clonar una instancia de Cloud SQL mediante el uso de Google Cloud consola, gcloud CLI , Terraform o la API.

Consola

  1. En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .

    Ir a Instancias de Cloud SQL

  2. Encuentre la fila de la instancia a clonar.
  3. En la columna Acciones , haga clic en el menú Más acciones .
  4. Haga clic en Crear clon .
  5. En la página Crear un clon , actualice el ID de la instancia si es necesario y haga clic en Crear clon , dejando seleccionada la opción Clonar estado actual de la instancia .

    Regresará a la página de listado de instancias mientras se inicializa el clon.

nube g

Para clonar una instancia, utilice 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

Realice las siguientes sustituciones:

  • 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 número de proyecto del Google Cloud proyecto que contiene las instancias de origen y destino.
  • ZONE_NAME : Opcional. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea clonar.

Si utiliza los parámetros --preferred-zone y --preferred-secondary-zone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro --preferred-secondary-zone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros --preferred-zone o --preferred-secondary-zone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para ejecutar el comando gcloud sql instances clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

Terraformar

Para clonar la instancia, utilice un recurso de Terraform

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus 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 establece valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).

  1. En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

Clonar una instancia que utiliza una dirección IP interna

Si su instancia de Cloud SQL usa una dirección IP interna, puede especificar opcionalmente un rango de IP asignado para la nueva dirección IP del clon. Por ejemplo, google-managed-services-default .

nube g

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

La cuenta de usuario o servicio que ejecuta el comando gcloud sql instances clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

REST versión 1

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que usa el método de API instances.clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que usa el método de API instances.clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

Si no especifica 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

Asunto Solución de problemas
La clonación falla con el error constraints/sql.restrictAuthorizedNetworks . La operación de clonación está bloqueada por la configuración Authorized Networks . Authorized Networks se configuran para direcciones IP públicas en la sección Conectividad del... Google Cloud consola, y la clonación no está permitida debido a consideraciones de seguridad .

Si es posible, elimine todas las entradas Authorized Networks de la instancia de Cloud SQL. De lo contrario, cree una réplica sin ninguna entrada Authorized Networks .

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 intentando utilizar el Google Cloud La consola clona una instancia con una dirección IP privada, pero no se especificó el rango de IP asignado que se desea usar y la instancia de origen no se crea con dicho rango. Como resultado, la instancia clonada se crea en un rango aleatorio.

Utilice gcloud para clonar la instancia y proporcionar un valor para el
Parámetro --allocated-ip-range-name . Para obtener más información, consulte Clonación de una instancia con una IP privada .

,

Esta página explica la clonación y describe cómo clonar una instancia.

Descripción general

Al clonar una instancia de Cloud SQL, se crea una nueva instancia que es una copia de la instancia de origen. Esta nueva instancia es completamente independiente de la instancia de origen.

Preguntas frecuentes

Pregunta Respuesta
¿La clonación afecta el rendimiento? No. La clonación no tiene ningún impacto en el rendimiento de la instancia de origen.
¿Se copian las copias de seguridad a la nueva instancia? No. La nueva instancia crea copias de seguridad automáticas. Las copias de seguridad manuales no se copian desde la instancia de origen.
¿La nueva instancia tiene la misma dirección o direcciones IP? No. La nueva instancia tiene una nueva dirección IP o direcciones nuevas.
¿La nueva instancia tiene la misma configuración? Sí. La nueva instancia tiene la misma configuración, como indicadores de base de datos, opciones de conectividad, tipo de máquina y configuraciones de almacenamiento y memoria.
¿Se copian las réplicas a la nueva instancia? No. Debe crear nuevas réplicas para la nueva instancia.
¿Puedes clonar una réplica? No. No puedes clonar una réplica.
¿Es posible crear un clon de un momento anterior en el tiempo? Sí. La recuperación a un punto en el tiempo utiliza la clonación para restaurar una instancia desde un punto anterior. Esto le ayuda a recuperar su base de datos tras un evento destructivo.
¿Las configuraciones de mantenimiento de la instancia de origen se copian automáticamente a la instancia clonada? No. Debe configurar los ajustes de mantenimiento para la instancia clonada.
¿Puedes clonar una instancia cuando la zona de la instancia no está disponible? Sí. Si clona una instancia zonal, puede especificar una zona principal diferente para ella. Si clona una instancia de alta disponibilidad (regional), puede especificar diferentes zonas principales y secundarias para ella.
¿Puedes clonar una base de datos a otro proyecto? No. No puedes clonar una base de datos a otro proyecto.
¿Es posible clonar una instancia que alguna vez fue un clon? Sí. Puedes clonar una instancia que fue clonada desde otra instancia.
¿Se copian los usuarios de la base de datos a la nueva instancia? Sí, los usuarios de la base de datos se copian a la nueva instancia. Sus contraseñas también se copian, por lo que no es necesario volver a crearlas.

Clonar una instancia

Puede clonar una instancia de Cloud SQL mediante el uso de Google Cloud consola, gcloud CLI , Terraform o la API.

Consola

  1. En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .

    Ir a Instancias de Cloud SQL

  2. Encuentre la fila de la instancia a clonar.
  3. En la columna Acciones , haga clic en el menú Más acciones .
  4. Haga clic en Crear clon .
  5. En la página Crear un clon , actualice el ID de la instancia si es necesario y haga clic en Crear clon , dejando seleccionada la opción Clonar estado actual de la instancia .

    Regresará a la página de listado de instancias mientras se inicializa el clon.

nube g

Para clonar una instancia, utilice 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

Realice las siguientes sustituciones:

  • 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 número de proyecto del Google Cloud proyecto que contiene las instancias de origen y destino.
  • ZONE_NAME : Opcional. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea clonar.

Si utiliza los parámetros --preferred-zone y --preferred-secondary-zone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro --preferred-secondary-zone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros --preferred-zone o --preferred-secondary-zone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para ejecutar el comando gcloud sql instances clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

Terraformar

Para clonar la instancia, utilice un recurso de Terraform

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus 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 establece valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).

  1. En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

Clonar una instancia que utiliza una dirección IP interna

Si su instancia de Cloud SQL usa una dirección IP interna, puede especificar opcionalmente un rango de IP asignado para la nueva dirección IP del clon. Por ejemplo, google-managed-services-default .

nube g

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

La cuenta de usuario o servicio que ejecuta el comando gcloud sql instances clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

REST versión 1

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que usa el método de API instances.clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que usa el método de API instances.clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

Si no especifica 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

Asunto Solución de problemas
La clonación falla con el error constraints/sql.restrictAuthorizedNetworks . La operación de clonación está bloqueada por la configuración Authorized Networks . Authorized Networks se configuran para direcciones IP públicas en la sección Conectividad del... Google Cloud consola, y la clonación no está permitida debido a consideraciones de seguridad .

Si es posible, elimine todas las entradas Authorized Networks de la instancia de Cloud SQL. De lo contrario, cree una réplica sin ninguna entrada Authorized Networks .

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 intentando utilizar el Google Cloud La consola clona una instancia con una dirección IP privada, pero no se especificó el rango de IP asignado que se desea usar y la instancia de origen no se crea con dicho rango. Como resultado, la instancia clonada se crea en un rango aleatorio.

Utilice gcloud para clonar la instancia y proporcionar un valor para el
Parámetro --allocated-ip-range-name . Para obtener más información, consulte Clonación de una instancia con una IP privada .

,

Esta página explica la clonación y describe cómo clonar una instancia.

Descripción general

Al clonar una instancia de Cloud SQL, se crea una nueva instancia que es una copia de la instancia de origen. Esta nueva instancia es completamente independiente de la instancia de origen.

Preguntas frecuentes

Pregunta Respuesta
¿La clonación afecta el rendimiento? No. La clonación no tiene ningún impacto en el rendimiento de la instancia de origen.
¿Se copian las copias de seguridad a la nueva instancia? No. La nueva instancia crea copias de seguridad automáticas. Las copias de seguridad manuales no se copian desde la instancia de origen.
¿La nueva instancia tiene la misma dirección o direcciones IP? No. La nueva instancia tiene una nueva dirección IP o direcciones nuevas.
¿La nueva instancia tiene la misma configuración? Sí. La nueva instancia tiene la misma configuración, como indicadores de base de datos, opciones de conectividad, tipo de máquina y configuraciones de almacenamiento y memoria.
¿Se copian las réplicas a la nueva instancia? No. Debe crear nuevas réplicas para la nueva instancia.
¿Puedes clonar una réplica? No. No puedes clonar una réplica.
¿Es posible crear un clon de un momento anterior en el tiempo? Sí. La recuperación a un punto en el tiempo utiliza la clonación para restaurar una instancia desde un punto anterior. Esto le ayuda a recuperar su base de datos tras un evento destructivo.
¿Las configuraciones de mantenimiento de la instancia de origen se copian automáticamente a la instancia clonada? No. Debe configurar los ajustes de mantenimiento para la instancia clonada.
¿Puedes clonar una instancia cuando la zona de la instancia no está disponible? Sí. Si clona una instancia zonal, puede especificar una zona principal diferente para ella. Si clona una instancia de alta disponibilidad (regional), puede especificar diferentes zonas principales y secundarias para ella.
¿Puedes clonar una base de datos a otro proyecto? No. No puedes clonar una base de datos a otro proyecto.
¿Es posible clonar una instancia que alguna vez fue un clon? Sí. Puedes clonar una instancia que fue clonada desde otra instancia.
¿Se copian los usuarios de la base de datos a la nueva instancia? Sí, los usuarios de la base de datos se copian a la nueva instancia. Sus contraseñas también se copian, por lo que no es necesario volver a crearlas.

Clonar una instancia

Puede clonar una instancia de Cloud SQL mediante el uso de Google Cloud consola, gcloud CLI , Terraform o la API.

Consola

  1. En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .

    Ir a Instancias de Cloud SQL

  2. Encuentre la fila de la instancia a clonar.
  3. En la columna Acciones , haga clic en el menú Más acciones .
  4. Haga clic en Crear clon .
  5. En la página Crear un clon , actualice el ID de la instancia si es necesario y haga clic en Crear clon , dejando seleccionada la opción Clonar estado actual de la instancia .

    Regresará a la página de listado de instancias mientras se inicializa el clon.

nube g

Para clonar una instancia, utilice 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

Realice las siguientes sustituciones:

  • 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 número de proyecto del Google Cloud proyecto que contiene las instancias de origen y destino.
  • ZONE_NAME : Opcional. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea clonar.

Si utiliza los parámetros --preferred-zone y --preferred-secondary-zone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro --preferred-secondary-zone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros --preferred-zone o --preferred-secondary-zone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para ejecutar el comando gcloud sql instances clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

Terraformar

Para clonar la instancia, utilice un recurso de Terraform

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus 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 establece valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).

  1. En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto 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. El nombre de la zona principal de la instancia de destino. Úselo si desea que la instancia de destino se encuentre en una zona principal distinta a la de la instancia de Cloud SQL que está clonando. En una instancia regional, esta zona reemplaza la principal, pero la secundaria permanece igual que la de la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Úselo para especificar una zona secundaria diferente para la instancia regional de Cloud SQL que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si utiliza los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Tanto la zona primaria como la secundaria deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • En las instancias zonales, no se puede usar el parámetro preferredSecondaryZone . Si se usa, el proceso de clonación falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API instances.clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

Clonar una instancia que utiliza una dirección IP interna

Si su instancia de Cloud SQL usa una dirección IP interna, puede especificar opcionalmente un rango de IP asignado para la nueva dirección IP del clon. Por ejemplo, google-managed-services-default .

nube g

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

La cuenta de usuario o servicio que ejecuta el comando gcloud sql instances clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para ejecutar comandos de la CLI de gcloud , consulte Permisos de Cloud SQL .

REST versión 1

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que usa el método de API instances.clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos necesarios para usar los métodos de API, consulte Permisos de Cloud SQL .

REST v1beta4

Clone la instancia, especificando opcionalmente el rango de IP asignado que desea utilizar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que está utilizando el método instances.clone API de Clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos requeridos para usar métodos API, consulte los permisos de Cloud SQL .

Si no especifica un rango 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

Asunto Solución de problemas
La clonación falla con constraints/sql.restrictAuthorizedNetworks Error. La operación de clonación está bloqueada por la configuración Authorized Networks . Authorized Networks están configuradas para direcciones IP públicas en la sección de conectividad de la Google Cloud La consola y la clonación no están permitidas debido a consideraciones de seguridad .

Elimine todas las entradas Authorized Networks de la instancia de Cloud SQL si puede. De lo contrario, cree una réplica sin ninguna entrada Authorized Networks .

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 el Google Cloud Consola para clonar una instancia con una dirección IP privada, pero no especificó el rango IP asignado que desea usar y la instancia de origen no se crea con el rango especificado. Como resultado, la instancia clonada se crea en un rango aleatorio.

Use gcloud para clonar la instancia y proporcionar un valor para el
-Parámetro --allocated-ip-range-name . Para obtener más información, consulte Clonación de una instancia con una IP privada .

,

Esta página explica la clonación y describe cómo clonar una instancia.

Descripción general

La clonación de una instancia de Cloud SQL crea una nueva instancia que es una copia de la instancia de origen. La nueva instancia es completamente independiente de la instancia de origen.

Preguntas frecuentes

Pregunta Respuesta
¿La clonación impacta el rendimiento? No. La clonación no tiene un impacto de rendimiento en la instancia de origen.
¿Las copias de seguridad se copian a la nueva instancia? No. La nueva instancia crea nuevas copias de seguridad automatizadas. Las copias de seguridad manuales no se copian desde la instancia de origen.
¿La nueva instancia tiene la misma dirección IP o direcciones? No. La nueva instancia tiene una nueva dirección IP o direcciones.
¿La nueva instancia tiene la misma configuración de configuración? Sí. La nueva instancia tiene la misma configuración, como indicadores de bases de datos, opciones de conectividad, tipo de máquina y configuración de almacenamiento y memoria.
¿Se copian las réplicas a la nueva instancia? No. Debe crear nuevas réplicas para la nueva instancia.
¿Puedes clonar una réplica? No. No puedes clonar una réplica.
¿Puedes hacer un clon desde un punto anterior en el tiempo? Sí. La recuperación de punto en el tiempo utiliza la clonación para restaurar una instancia desde un punto anterior en el tiempo. Esto lo ayuda a recuperar su base de datos de un evento destructivo.
¿La configuración de mantenimiento de la instancia de origen se copia automáticamente en la instancia de clonos? No. Debe configurar la configuración de mantenimiento para la instancia de clonos.
¿Puede clonar una instancia en la que la zona para la instancia no está disponible? Sí. Si clona una instancia zonal, puede especificar una zona primaria diferente para la instancia. Si clona una instancia de alta disponibilidad (regional), puede especificar diferentes zonas primarias y secundarias para la instancia.
¿Puedes clonar una base de datos para otro proyecto? No. No puede clonar una base de datos para otro proyecto.
¿Puedes clonar una instancia que alguna vez fue un clon? Sí. Puede clonar una instancia que fue clonada de otra instancia.
¿Se copian los usuarios de la base de datos a la nueva instancia? Sí, los usuarios de la base de datos se copian a la nueva instancia. Las contraseñas para estos usuarios también se copian para que no necesiten ser recreadas.

Clonar una instancia

Puede clonar una instancia de Cloud SQL utilizando el Google Cloud consola, gcloud CLI , Terraform o la API.

Consola

  1. En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .

    Ir a Instancias de Cloud SQL

  2. Encuentre la fila de la instancia para clon.
  3. En la columna de Acciones , haga clic en el menú More Actions .
  4. Haga clic en Crear clon .
  5. En la página Crear un clon , actualice el ID de instancia si es necesario, y haga clic en Crear clon , dejando a Clone actual estado de instancia seleccionado.

    Te devuelven a la página de listado de instancias mientras el clon se inicializa.

nube g

Para clonar una instancia, use 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

Realice las siguientes sustituciones:

  • SOURCE_INSTANCE_NAME : el nombre de la instancia SQL de la nube a clon.
  • DESTINATION_INSTANCE_NAME : el nombre de la instancia clonada.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene las instancias de origen y destino.
  • ZONE_NAME : Opcional. El nombre de la zona primaria para la instancia de destino. Use esto si desea que la instancia de destino esté en una zona primaria diferente a la instancia de Cloud SQL que está clonando. Para una instancia regional, esta zona reemplaza la zona primaria, pero la zona secundaria sigue siendo la misma que la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Use esto para especificar una zona secundaria diferente para la instancia regional de SQL de la nube que desea clonar.

Si está utilizando los parámetros- --preferred-zone y --preferred-secondary-zone , entonces se aplican las siguientes condiciones:

  • Las zonas primarias y secundarias deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • Para instancias zonales, no puede usar el parámetro --preferred-secondary-zone . Si lo hace, entonces el proceso para clonar la instancia falla.
  • Si no especifica valores para los parámetros de --preferred-zone o --preferred-secondary-zone , entonces la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para ejecutar el comando gcloud sql instances clone , debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos requeridos para ejecutar los comandos CLI GCLOUD , consulte los permisos de Cloud SQL .

Terraformar

Para clonar la instancia, use un recurso Terraform

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus 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 establece valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).

  1. En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene las instancias de origen y destino.
  • SOURCE_INSTANCE_NAME : el nombre de la instancia SQL de la nube a clon.
  • DESTINATION_INSTANCE_NAME : el nombre de la instancia clonada.
  • ZONE_NAME : Opcional. El nombre de la zona primaria para la instancia de destino. Use esto si desea que la instancia de destino esté en una zona primaria diferente a la instancia de Cloud SQL que está clonando. Para una instancia regional, esta zona reemplaza la zona primaria, pero la zona secundaria sigue siendo la misma que la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Use esto para especificar una zona secundaria diferente para la instancia regional de SQL de la nube que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si está utilizando los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Las zonas primarias y secundarias deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • Para instancias zonales, no puede usar el parámetro preferredSecondaryZone . Si lo hace, entonces el proceso para clonar la instancia falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , entonces la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API cloudsql.instances.clone instances.clone Para obtener más información sobre los permisos requeridos para usar métodos API, consulte los permisos de Cloud SQL .

REST v1beta4

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene las instancias de origen y destino.
  • SOURCE_INSTANCE_NAME : el nombre de la instancia SQL de la nube a clon.
  • DESTINATION_INSTANCE_NAME : el nombre de la instancia clonada.
  • ZONE_NAME : Opcional. El nombre de la zona primaria para la instancia de destino. Use esto si desea que la instancia de destino esté en una zona primaria diferente a la instancia de Cloud SQL que está clonando. Para una instancia regional, esta zona reemplaza la zona primaria, pero la zona secundaria sigue siendo la misma que la instancia de origen.
  • SECONDARY_ZONE_NAME : Opcional. El nombre de la zona secundaria para la instancia de destino. Use esto para especificar una zona secundaria diferente para la instancia regional de SQL de la nube que desea 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

Si está utilizando los parámetros preferredZone y preferredSecondaryZone , se aplican las siguientes condiciones:

  • Las zonas primarias y secundarias deben ser zonas válidas.
  • Ambas zonas deben pertenecer a la misma región que la instancia de origen.
  • Las zonas primarias y secundarias deben ser diferentes.
  • Para instancias zonales, no puede usar el parámetro preferredSecondaryZone . Si lo hace, entonces el proceso para clonar la instancia falla.
  • Si no especifica valores para los parámetros preferredZone o preferredSecondaryZone , entonces la instancia clonada tiene las mismas zonas primarias y secundarias que la instancia de origen.

Para usar el método de API cloudsql.instances.clone instances.clone Para obtener más información sobre los permisos requeridos para usar métodos API, consulte los permisos de Cloud SQL .

Clon una instancia que usa una dirección IP interna

Si su instancia de Cloud SQL usa una dirección IP interna, puede especificar opcionalmente un rango IP asignado para la nueva dirección IP del clon. Por ejemplo, google-managed-services-default .

nube g

Clone La instancia, opcionalmente especificando el rango IP asignado que desea usar:

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

El usuario o cuenta de servicio que ejecuta el comando gcloud sql instances clone cloudsql.instances.clone Para obtener más información sobre los permisos requeridos para ejecutar los comandos CLI GCLOUD , consulte los permisos de Cloud SQL .

REST versión 1

Clone La instancia, opcionalmente especificando el rango IP asignado que desea usar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • project-id : la identificación del proyecto
  • source-instance-id : la identificación de instancia de origen
  • target-instance-id : ID de 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que está utilizando el método instances.clone API de Clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos requeridos para usar métodos API, consulte los permisos de Cloud SQL .

REST v1beta4

Clone La instancia, opcionalmente especificando el rango IP asignado que desea usar:

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • project-id : la identificación del proyecto
  • source-instance-id : la identificación de instancia de origen
  • target-instance-id : ID de 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 su solicitud, expanda una de estas opciones:

Debería recibir una respuesta JSON similar a la siguiente:

La cuenta de usuario o servicio que está utilizando el método instances.clone API de Clone debe tener el permiso cloudsql.instances.clone . Para obtener más información sobre los permisos requeridos para usar métodos API, consulte los permisos de Cloud SQL .

Si no especifica un rango 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

Asunto Solución de problemas
La clonación falla con constraints/sql.restrictAuthorizedNetworks Error. La operación de clonación está bloqueada por la configuración Authorized Networks . Authorized Networks están configuradas para direcciones IP públicas en la sección de conectividad de la Google Cloud La consola y la clonación no están permitidas debido a consideraciones de seguridad .

Elimine todas las entradas Authorized Networks de la instancia de Cloud SQL si puede. De lo contrario, cree una réplica sin ninguna entrada Authorized Networks .

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 el Google Cloud Consola para clonar una instancia con una dirección IP privada, pero no especificó el rango IP asignado que desea usar y la instancia de origen no se crea con el rango especificado. Como resultado, la instancia clonada se crea en un rango aleatorio.

Use gcloud para clonar la instancia y proporcionar un valor para el
-Parámetro --allocated-ip-range-name . Para obtener más información, consulte Clonación de una instancia con una IP privada .