Exportar e importar con archivos de volcado de SQL

En esta página se describe cómo exportar e importar datos en instancias de Cloud SQL mediante archivos de volcado de SQL.

Antes de empezar

Las exportaciones usan recursos de la base de datos, pero no interfieren con las operaciones normales de la base de datos, a menos que la instancia no tenga suficientes recursos.

Para consultar las prácticas recomendadas, consulta el artículo Prácticas recomendadas para importar y exportar datos.

Después de completar una operación de importación, verifica los resultados.

Exportar datos de Cloud SQL para PostgreSQL

Roles y permisos necesarios para exportar datos de Cloud SQL para PostgreSQL

Para exportar datos de Cloud SQL a Cloud Storage, el usuario que inicie la exportación debe tener uno de los siguientes roles:

Además, la cuenta de servicio de la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • El rol storage.objectAdmin Gestión de Identidades y Accesos (IAM)
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.create
    • storage.objects.list (solo para exportar archivos en paralelo)
    • storage.objects.delete (solo para exportar archivos en paralelo)

Para obtener ayuda con los roles de gestión de identidades y accesos, consulta Gestión de identidades y accesos.

Exportar a un archivo de volcado de SQL desde Cloud SQL para PostgreSQL

Cuando usas Cloud SQL para realizar una exportación, ya sea desde laGoogle Cloud consola, la CLI de gcloud o la API, utilizas la utilidad pg_dump con las opciones necesarias para asegurarte de que el archivo de exportación resultante sea válido para importarlo de nuevo en Cloud SQL.

Si tienes previsto importar tus datos en Cloud SQL, debes seguir las instrucciones que se indican en el artículo Exportar datos desde un servidor de base de datos externo para que el archivo de volcado de SQL tenga el formato correcto para Cloud SQL.

Para exportar datos de una base de datos de una instancia de Cloud SQL a un archivo de volcado de SQL en un segmento de Cloud Storage, sigue estos pasos:

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Exportar.
  4. En la sección Formato de archivo, haz clic en SQL para crear un archivo de volcado de SQL.
  5. En la sección Datos que se van a exportar, use el menú desplegable para seleccionar la base de datos de la que quiera exportar datos.
  6. En la sección Destino, selecciona Buscar para buscar un segmento o una carpeta de Cloud Storage para la exportación.
  7. Haz clic en Exportar para iniciar la exportación.

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar los datos. Para ello, ejecuta el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener ayuda con la configuración de los permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Exporta la base de datos a tu segmento de Cloud Storage:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    El comando export sql no contiene activadores ni procedimientos almacenados, pero sí vistas. Para exportar activadores o procedimientos almacenados, usa la herramienta pg_dump.

    Para obtener más información sobre el uso del comando export sql, consulta la página de referencia del comando sql export sql.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. Crea un segmento para la exportación:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

    Aunque este paso no es obligatorio, se recomienda efectuarlo para no tener que abrir acceso a otros datos.

  2. Asigna a tu instancia el legacyBucketWriter rol de gestión de identidades y accesos de tu segmento. Para obtener ayuda con la configuración de permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_DUMP_FILE: la ruta al archivo de volcado de SQL
    • DATABASE_NAME_1: el nombre de una base de datos dentro de la instancia de Cloud SQL
    • DATABASE_NAME_2: el nombre de una base de datos dentro de la instancia de Cloud SQL

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export

    Cuerpo JSON de la solicitud:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE,
           "sqlExportOptions": {
            "clean": [TRUE|FALSE],
            "ifExists": [TRUE|FALSE]
           }
        }
     }
    

    Para enviar tu solicitud, despliega una de estas opciones:

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

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, quítalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un segmento para la exportación:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

    Aunque este paso no es obligatorio, se recomienda efectuarlo para no tener que abrir acceso a otros datos.

  2. Asigna a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos de tu segmento. Para obtener ayuda con la configuración de permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_DUMP_FILE: la ruta al archivo de volcado de SQL
    • DATABASE_NAME_1: el nombre de una base de datos dentro de la instancia de Cloud SQL
    • DATABASE_NAME_2: el nombre de una base de datos dentro de la instancia de Cloud SQL

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export

    Cuerpo JSON de la solicitud:

    {
       "exportContext":
         {
            "fileType": "SQL",
            "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
            "databases": ["DATABASE_NAME"],
            "offload": TRUE | FALSE,
            "sqlExportOptions": {
             "clean": [TRUE|FALSE],
             "ifExists": [TRUE|FALSE]
            }
         }
      }
    

    Para enviar tu solicitud, despliega una de estas opciones:

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

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

Importar datos en Cloud SQL para PostgreSQL

Roles y permisos necesarios para importar datos a Cloud SQL para PostgreSQL

Para importar datos de Cloud Storage a Cloud SQL, el usuario que inicie la importación debe tener uno de los siguientes roles:

Además, la cuenta de servicio de la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • Rol de gestión de identidades y accesos storage.objectAdmin
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.get
    • storage.objects.list (solo para importar archivos en paralelo)

Para obtener ayuda con los roles de gestión de identidades y accesos, consulta Gestión de identidades y accesos.

Importar un archivo de volcado de SQL a Cloud SQL para PostgreSQL

Los archivos SQL son archivos de texto sin formato con una secuencia de comandos de SQL.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Importar.
  4. En la sección Choose the file you'd like to import data from (Elige el archivo del que quieres importar los datos), introduce la ruta de acceso al archivo de volcado de SQL y al bucket que quieras usar para la importación, busca un archivo o sube un archivo local.

    Puedes importar un archivo comprimido (.gz) o sin comprimir (.sql).

  5. En Formato, selecciona SQL.
  6. Selecciona la base de datos en la que quieres importar los datos.

    De esta forma, Cloud SQL ejecuta la instrucción USE DATABASE antes de la importación.

  7. Si quieres especificar un usuario para realizar la importación, selecciona el usuario.

    Si el archivo de importación contiene instrucciones que debe ejecutar un usuario específico, utilice este campo para especificarlo.

  8. Haz clic en Importar para iniciar la importación.

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Describe la instancia en la que vas a importar los datos:
    gcloud sql instances describe INSTANCE_NAME
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio del cubo.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    Para obtener ayuda sobre cómo configurar permisos de gestión de identidades y accesos, consulta el artículo sobre cómo usar permisos de gestión de identidades y accesos.
  6. Importa la base de datos:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    Para obtener información sobre el uso del comando import sql, consulta la página de referencia del comando sql import sql.

    Si el comando devuelve un error como ERROR_RDBMS, revisa los permisos, ya que este error suele deberse a problemas de permisos.

  7. Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un archivo de volcado de SQL. Las instrucciones vinculadas definen determinadas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.

    • Si vas a importar datos de un servidor PostgreSQL local:
      1. Crea un archivo de volcado de SQL siguiendo las instrucciones de Exportar datos con pg_dump.
      2. Crea un segmento en Cloud Storage siguiendo las instrucciones de Crear segmentos.
      3. Sube el archivo de volcado de SQL al depósito de Cloud Storage siguiendo el procedimiento descrito en Subir objetos.
  2. Crea un segmento de Cloud Storage.
  3. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  4. Proporciona a tu instancia los roles de legacyBucketWriter y objectViewer gestión de identidades y accesos de tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  5. Importa tu archivo de volcado:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_sql_file: la ruta al archivo SQL
    • database_name: nombre de una base de datos de la instancia de Cloud SQL

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar tu solicitud, despliega una de estas opciones:

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

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  6. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.

REST v1beta4

  1. Crea un archivo de volcado de SQL. Las instrucciones vinculadas definen determinadas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.

    • Si vas a importar datos de un servidor PostgreSQL local:
      1. Crea un archivo de volcado de SQL siguiendo las instrucciones de Exportar datos con pg_dump.
      2. Crea un segmento en Cloud Storage siguiendo las instrucciones de Crear segmentos.
      3. Sube el archivo de volcado de SQL al depósito de Cloud Storage siguiendo el procedimiento descrito en Subir objetos.
  2. Crea un segmento de Cloud Storage.
  3. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  4. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  5. Importa tu archivo de volcado:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_sql_file: la ruta al archivo SQL
    • database_name: nombre de una base de datos de la instancia de Cloud SQL

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar tu solicitud, despliega una de estas opciones:

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

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  6. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.

Siguientes pasos