

# Importación de datos de una base de datos MySQL externa a una instancia de base de datos de Amazon RDS para MySQL
<a name="mysql-importing-data-external-database"></a>

Puede importar datos desde una base de datos de MySQL existente a una instancia de base de datos de RDS para MySQL. Esto se lleva a cabo copiando la base de datos con [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) y canalizándola de forma directa en la instancia de base de datos de RDS para MySQL. La utilidad de línea de comandos `mysqldump` suele utilizarse para crear copias de seguridad y transferir datos de un servidor de MySQL a otro. Se incluye con el software de cliente de MySQL.

**nota**  
Si importa o exporta grandes cantidades de datos con una instancia de base de datos de MySQL, lo más fiable y rápido para introducir y sacar los datos de Amazon RDS es mediante archivos de copia de seguridad `xtrabackup` y Amazon S3. Para obtener más información, consulte [Restauración de una copia de seguridad en una instancia de base de datos de Amazon RDS para MySQL](MySQL.Procedural.Importing.md). 

Un comando `mysqldump` típico para mover datos de una base de datos externa a una instancia de base de datos de Amazon RDS tiene el aspecto del ejemplo siguiente. Sustituya valores con su propia información.

```
mysqldump -u local_user \
    --databases database_name \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mysql -u RDS_user \
        --port=port_number \
        --host=host_name \
        -pRDS_password
```

**importante**  
Asegúrese de no dejar un espacio entre la opción `-p` y la contraseña especificada.  
Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en este ejemplo.

Asegúrese de conocer las siguientes recomendaciones y consideraciones:
+ Excluya los siguientes esquemas del archivo de volcado: 
  + `sys`
  + `performance_schema`
  + `information_schema`

  La utilidad `mysqldump` excluye estos esquemas de forma predeterminada.
+ Si necesita migrar usuarios y privilegios, considere la posibilidad de usar una herramienta que genere el lenguaje de control de datos (DCL) para volver a crearlos, como la utilidad [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html).
+ Para realizar la importación, asegúrese de que el usuario que lo haga tenga acceso a la instancia de base de datos. Para obtener más información, consulte [Control de acceso con grupos de seguridad](Overview.RDSSecurityGroups.md).

Los parámetros son los siguientes:
+ `-u local_user`: use este parámetro para especificar un nombre de usuario. La primera vez que utilice este parámetro, especifique el nombre de una cuenta de usuario en la base de datos MySQL local que identifique con el parámetro `--databases`.
+ `--databases database_name`: use este parámetro para especificar el nombre de la base de datos en la instancia de MySQL local que desea importar a Amazon RDS.
+ `--single-transaction`: use este parámetro para asegurarse de que todos los datos cargados desde la base de datos local sean coherentes en un momento determinado. Si hay otros procesos que modifican los datos mientras `mysqldump` los lee, el uso de este parámetro ayuda a mantener la integridad de los datos. 
+ `--compress`: use este parámetro para reducir el consumo de ancho de banda mediante la compresión de los datos de la base de datos local antes de su envío a Amazon RDS.
+ `--order-by-primary`: use este parámetro para reducir el tiempo de carga mediante la ordenación de los datos de cada tabla según su clave primaria.
+ `--routines`: úselo si existen rutinas como procedimientos almacenados o funciones en la base de datos que está copiando. Establezca el parámetro en `0`, lo que excluye las rutinas durante el proceso de importación. Después, vuelva a crear manualmente las rutinas en la base de datos de Amazon RDS.
+ `--triggers`: úselo si existen desencadenadores en la base de datos que va a copiar. Establezca el parámetro en `0`, lo que excluye los desencadenadores durante el proceso de importación. Después, vuelva a crear manualmente los desencadenadores en la base de datos de Amazon RDS.
+ `--events`: úselo si existen eventos en la base de datos que está copiando. Establezca el parámetro en `0`, lo que excluye los eventos durante el proceso de importación. Después, vuelva a crear manualmente los eventos en la base de datos de Amazon RDS. 
+ `-plocal_password`: use este parámetro para especificar una contraseña. La primera vez que use este parámetro, especifique la contraseña de la cuenta de usuario identificada con el primer parámetro `-u`.
+ `-u RDS_user`: use este parámetro para especificar un nombre de usuario. La segunda vez que utilice este parámetro, especifique el nombre de una cuenta de usuario en la base de datos predeterminada de la instancia de base de datos de MySQL identificada con el parámetro `--host`.
+ `--port port_number`: se utiliza para especificar el puerto de la instancia de base de datos de MySQL. El valor predeterminado es 3306, salvo que se haya cambiado al crear la instancia de base de datos.
+ `--host host_name` – se utiliza para especificar el nombre del sistema de nombres de dominio (DNS) del punto de conexión de la instancia de base de datos de Amazon RDS, por ejemplo, `myinstance.123456789012.us-east-1.rds.amazonaws.com`. Puede encontrar el valor del punto de conexión en los detalles de la instancia de base de datos en la consola de Amazon RDS.
+ `-pRDS_password`: use este parámetro para especificar una contraseña. La segunda vez que use este parámetro, debe especificar la contraseña de la cuenta de usuario identificada por el segundo parámetro `-u`.

Asegúrese de crear de forma manual procedimientos almacenados, desencadenadores, funciones o eventos en su base de datos de Amazon RDS. Si hay alguno de estos objetos en la base de datos que va a copiar, exclúyalos cuando ejecute `mysqldump`. Para hacerlo, incluya los siguientes parámetros con el comando `mysqldump`: 
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**Ejemplo**

En el siguiente ejemplo se copia la base de datos de ejemplo `world` del host local en una instancia de base de datos de RDS para MySQL. Sustituya valores con su propia información.

Para Linux, macOS o Unix:

```
sudo mysqldump -u local_user \
    --databases world \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mysql -u rds_user \
        --port=3306 \
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \
        -pRDS_password
```

Para Windows:

Ejecute el siguiente comando en un símbolo del sistema que se haya abierto con un clic con el botón derecho en **Símbolo del sistema** del menú de programas de Windows y con la selección de **Ejecutar como administrador**. Sustituya valores con su propia información.

```
mysqldump -u local_user ^
    --databases world ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -plocal_password | mysql -u RDS_user ^
        --port=3306 ^
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^
        -pRDS_password
```

**nota**  
Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en el ejemplo.