Importa y exporta archivos en paralelo

En esta página, se describe cómo importar y exportar archivos a instancias de Cloudu SQL en paralelo.

Antes de comenzar

Antes de comenzar una operación de importación o exportación, haz lo siguiente:

  • Asegúrate de que tu base de datos tenga suficiente espacio libre.
  • Las operaciones de importación y exportación usan recursos de bases de datos, pero no interfieren en las operaciones normales de la base de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.

  • Sigue las prácticas recomendadas para exportar e importar datos.
  • Después de completar una operación de importación, verifica los resultados.

Exporta datos de Cloud SQL para MySQL a varios archivos en paralelo

Las siguientes secciones contienen información sobre la exportación de datos de Cloud SQL para MySQL a varios archivos en paralelo.

Roles y permisos necesarios a fin de exportar datos de Cloud SQL para MySQL a varios archivos en paralelo

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

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

  • El rol de Identity and Access Management (IAM) llamado storage.objectAdmin
  • 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 IAM, consulta Identity and Access Management.

Exporta datos a varios archivos en paralelo

Puedes exportar datos en paralelo desde varios archivos que residan en Cloud SQL hacia Cloud Storage. Para ello, usa la utilidad dumpInstance.

Una vez que los archivos estén en Cloud Storage, puedes importarlos a otra base de datos de Cloud SQL. Si deseas acceder a los datos de los archivos de forma local, descarga los datos de Cloud Storage a tu entorno local.

Si tus archivos contienen cláusulas DEFINER (vistas, activadores, stored_procedures, etc.), según el orden en que se ejecuten estas declaraciones, el uso de estos archivos para la importación puede fallar. Obtén más información sobre el uso de DEFINER y las posibles soluciones en Cloud SQL.

gcloud

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage.
  2. Para encontrar la cuenta de servicio de la instancia de Cloud SQL desde la que exportas los archivos, usa el comando
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
    
  3. Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.

    En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress.

  4. Para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio, usa la utilidad gsutil iam. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  5. Para exportar datos de Cloud SQL a varios archivos en paralelo, usa el comando gcloud sql export sql:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME \
    --table=TABLE_EXPRESSION
    

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
    • TABLE_EXPRESSION: las tablas que se exportarán desde la base de datos especificada.

    El comando export sql no contiene activadores ni procedimientos almacenados, pero contiene vistas. A fin de exportar activadores o procedimientos almacenados, usa un solo subproceso para la exportación. En este subproceso, se usa la herramienta mysqldump.

    Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de volcado de MySQL Shell.

  6. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.

REST v1

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que exportarás. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Otórgale a tu instancia el rol de IAM legacyBucketWriter para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta datos de Cloud SQL a varios archivos en paralelo:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Cuerpo JSON de la solicitud:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de volcado de MySQL Shell.

  5. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.
Para obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.

REST v1beta4

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que exportarás. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Otórgale a tu instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta datos de Cloud SQL a varios archivos en paralelo:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Cuerpo JSON de la solicitud:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de volcado de MySQL Shell.

  5. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.
A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.

Importa datos de varios archivos en paralelo a Cloud SQL para MySQL

Las siguientes secciones contienen información sobre la importación de datos de varios archivos en paralelo a Cloud SQL para MySQL.

Roles y permisos obligatorios a fin de importar datos de varios archivos en paralelo a Cloud SQL para MySQL

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

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

  • El rol de IAM 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 IAM, consulta Identity and Access Management.

Importa datos a Cloud SQL para MySQL

Puedes importar datos en paralelo desde varios archivos que residen en Cloud Storage a tu base de datos. Para ello, usa la utilidad loadDump.

gcloud

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea buckets de Cloud Storage.
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Para encontrar la cuenta de servicio de la instancia de Cloud SQL a la que importas archivos, usa el comando
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
    
  4. Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.

    En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress.

  5. Para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio, usa la utilidad gsutil iam. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  6. Para importar datos de varios archivos en paralelo a Cloud SQL, usa el comando gcloud sql import sql:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME
    

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.

    Si el comando muestra un error como ERROR_RDBMS, revisa los permisos; por lo general, este error se produce por problemas con los permisos.

  7. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para MySQL, usa gsutil iam a fin de quitarlos.

REST v1

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que importas. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Otorga a la instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  4. Importa datos de varios archivos en paralelo a Cloud SQL:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.
  5. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para MySQL, usa gsutil iam a fin de quitarlos.

REST v1beta4

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que importas. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Otorga a la instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  4. Importa datos de varios archivos en paralelo a Cloud SQL:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • DATABASE_NAME (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.
  5. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para MySQL, usa gsutil iam a fin de quitarlos.

Limitaciones

  • Si especificas demasiados subprocesos cuando importas o exportas datos de varios archivos en paralelo, es posible que uses más memoria de la que tiene tu instancia de Cloud SQL. Si esto ocurre, aparecerá un mensaje de error interno. Verifica el uso de memoria de tu instancia y aumenta el tamaño de la instancia, según sea necesario. Para obtener más información, consulta Información sobre la configuración de instancias.
  • Cuando se realiza una exportación, no se admiten comas en nombres de bases de datos o nombres de tablas en los campos databases o tables.
  • Asegúrate de tener suficiente espacio en el disco para la descarga inicial del archivo de volcado. De lo contrario, aparecerá un error no space left on disk.
  • Si tu instancia tiene solo una CPU virtual, no podrás importar ni exportar varios archivos en paralelo. La cantidad de CPU virtuales para tu instancia no puede ser menor que la cantidad de subprocesos que usas para la operación de importación o exportación, y la cantidad de subprocesos debe ser al menos dos.
  • Si escribes declaraciones del lenguaje de definición de datos (DDL), como CREATE, DROP o ALTER durante una operación de exportación, la operación puede fallar o los datos exportados pueden no ser coherentes con la instantánea de recuperación de un momento determinado.
  • Si una operación de importación falla, es posible que hayas importado parcialmente los datos restantes. En el caso de las declaraciones DDL, MySQL las confirma de forma automática. Si esto ocurre, antes de volver a importar los datos, limpia los datos parciales.

¿Qué sigue?