

# Importación de datos en una instancia de base de datos de Amazon RDS para MySQL
<a name="MySQL.Procedural.Importing.Other"></a>

Puede usar varias técnicas diferentes para importar datos en una instancia de base de datos de RDS for MySQL. El mejor enfoque depende de varios factores:
+ Origen de los datos
+ Cantidad de datos
+ Importar una vez o de forma continua
+ Cantidad de tiempo de inactividad

 Si también está migrando una aplicación con los datos, es importante tener en cuenta la cantidad de tiempo de inactividad.

En la tabla siguiente se muestran técnicas para la importación de datos en una instancia de base de datos de RDS para MySQL:


| Origen | Cantidad de datos | Una vez o continua | Tiempo de inactividad de las aplicaciones | Técnica | Más información | 
| --- | --- | --- | --- | --- | --- | 
|  Base de datos MySQL existente localmente o en Amazon EC2  |  Cualquiera  |  Una vez  |  Alguno  |  Crear una copia de seguridad de una base de datos local, almacenarlo en Amazon S3 y luego restaurar el archivo de copia de seguridad en una nueva instancia de base de datos de Amazon RDS que ejecute MySQL.  |  [Restauración de una copia de seguridad en una instancia de base de datos de Amazon RDS para MySQL](MySQL.Procedural.Importing.md)  | 
|  Base de datos MySQL existente localmente o en Amazon EC2  |  Cualquiera  |  Continuo  |  Mínima  |  Configurar la replicación con una base de datos de MySQL existente como origen de replicación.  |  [Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa](MySQL.Procedural.Importing.External.Repl.md) [Importación de datos a una base de datos de Amazon RDS para MySQL con un tiempo de inactividad reducido](mysql-importing-data-reduced-downtime.md)  | 
|  Cualquier base de datos existente  |  Cualquiera  |  Una vez o continua  |  Mínima  |  Utilizar AWS Database Migration Service para migrar la base de datos con un tiempo de inactividad mínimo y, para numerosos motores de base de datos, continuar las replicaciones en curso.  |  [Qué es AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) y [Uso de una base de datos compatible con MySQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) en la *Guía del usuario de AWS Database Migration Service*   | 
|  Instancia de base de datos MySQL existente  |  Cualquiera  |  Una vez o continua  |  Mínima  |  Cree una réplica de lectura para la replicación continua. Promocione la réplica de lectura para la creación única de una nueva instancia de base de datos.  |  [Trabajo con réplicas de lectura de instancias de base de datos](USER_ReadRepl.md)  | 
|  Base de datos MySQL existente  |  Pequeña  |  Una vez  |  Alguno  | Copie los datos directamente en la instancia de base de datos de MySQL utilizando una utilidad de línea de comandos. |  [Importación de datos de una base de datos MySQL externa a una instancia de base de datos de Amazon RDS para MySQL](mysql-importing-data-external-database.md)  | 
|  Datos no almacenados en una base de datos existente  |  Media  |  Una vez  |  Alguno  | Cree archivos sin formato e impórtelos utilizando instrucciones LOAD DATA LOCAL INFILE de MySQL. |  [Importación de datos de cualquier origen a una instancia de base de datos de Amazon RDS para MySQL](mysql-importing-data-any-source.md)  | 

**nota**  
La base de datos del sistema `mysql` contiene la información de autenticación y autorización necesaria para iniciar sesión en la instancia de base de datos y obtener acceso a los datos. La eliminación, la modificación, el cambio de nombre o el truncamiento de tablas, datos u otros contenidos de la base de datos `mysql` de la instancia de base de datos puede provocar un error e impedir el acceso a la instancia de base de datos y a los datos. En ese caso, puede restaurar la instancia de base de datos desde una instantánea con el comando [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) de la AWS CLI. Puede recuperar la instancia de base de datos utilizando el comando [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) de la AWS CLI. 

# Consideraciones sobre la importación de datos para MySQL
<a name="MySQL.Procedural.Importing.Advanced"></a>

En el siguiente contenido se encuentra información técnica relacionada con la carga de datos en MySQL. Este contenido está dirigido a usuarios familiarizados con la arquitectura del servidor de MySQL.

## Registro binario
<a name="MySQL.Procedural.Importing.Advanced.Log"></a>

La habilitación del registro binario reduce el rendimiento de la carga de datos y requiere hasta cuatro veces más espacio en disco en comparación con el registro desactivado. El tamaño de la transacción utilizado para cargar los datos afecta directamente al rendimiento del sistema y a las necesidades de espacio en disco; las transacciones más grandes requieren más recursos.

## Tamaño de la transacción
<a name="MySQL.Procedural.Importing.Advanced.Size"></a>

El tamaño de la transacción influye en los siguientes aspectos de las cargas de datos de MySQL:
+ Consumo de recursos
+ Utilización del espacio en disco
+ Reanudación del proceso
+ Tiempo de recuperación
+ Formato de entrada (archivos sin formato o SQL)

En esta sección se describe el modo en que el tamaño de transacción afecta al registro binario y se argumentan los beneficios de desactivar el registro binario durante la carga de grandes volúmenes de datos. Puede habilitar y desactivar el registro binario estableciendo el periodo de retención de copia de seguridad automatizado de Amazon RDS. Un valor distinto de cero activa el registro binario y el valor cero lo desactiva. Para obtener más información, consulte [Backup retention period](USER_WorkingWithAutomatedBackups.BackupRetention.md).

En esta sección también se describe el impacto de las transacciones de gran tamaño en InnoDB y por qué es importante que los tamaños de transacción sean pequeños. 

### Transacciones pequeñas
<a name="MySQL.Procedural.Importing.Advanced.Log.Small"></a>

En las transacciones pequeñas, el registro binario duplica el número de escrituras en disco requeridas para cargar los datos. Este efecto puede degradar el desempeño notablemente en otras sesiones de base de datos y aumentar el tiempo requerido para cargar los datos. La degradación experimentada depende en parte de los siguientes factores:
+ Tasa de carga
+ Otra actividad de la base de datos que tenga lugar durante la carga
+ Capacidad de la instancia de base de datos de Amazon RDS

Los registros binarios también consumen un espacio en disco aproximadamente igual al volumen de datos cargado hasta que se hace una copia de seguridad de los registros y se eliminan. Amazon RDS minimiza este impacto creando copias de seguridad de los registros binarios y retirándolos con frecuencia. 

### Transacciones grandes
<a name="MySQL.Procedural.Importing.Advanced.Log.Large"></a>

En el caso de transacciones grandes, el registro binario triplica IOPS y el uso del disco por los siguientes motivos:
+ La caché del registro binario almacena temporalmente los datos de las transacciones en el disco.
+ Esta caché crece con el tamaño de la transacción, lo que consume espacio en disco.
+ Cuando se completa la transacción (confirmación o reversión), el sistema copia la caché en el registro binario.

Este proceso crea tres copias de los datos:
+ Los datos originales
+ La caché en el disco
+ La entrada del registro binario final

Cada operación de escritura implica una E/S adicional, lo que repercute aún más en el rendimiento.

Por este motivo, el registro binario requiere el triple de espacio en disco en comparación con el registro desactivado. Por ejemplo, si se cargan 10 GiB de datos en una sola transacción, se crean tres copias:
+ 10 GiB para los datos de la tabla
+ 10 GiB para la caché del registro binario
+ 10 GiB para el archivo del registro binario

El espacio total en disco temporal necesario es 30 GiB.

Consideraciones importantes sobre el espacio en disco:
+ El archivo de caché persiste hasta que finaliza la sesión o hasta que una nueva transacción crea otra caché.
+ El registro binario permanece hasta que se realiza una copia de seguridad, lo que podría retener 20 GiB (caché y registro) durante un periodo prolongado.

Si se usa `LOAD DATA LOCAL INFILE` para cargar los datos, la recuperación de datos crea una cuarta copia en caso de que la base de datos deba recuperarse desde una copia de seguridad realizada antes de la carga. Durante la recuperación, MySQL extrae los datos desde el registro binario en un archivo sin formato. MySQL luego ejecuta `LOAD DATA LOCAL INFILE`. En función del ejemplo anterior, esta recuperación requiere un espacio total en disco temporal de 40 GiB o 10 GiB cada uno para la tabla, la caché, el registro y el archivo local. Sin al menos 40 GiB de espacio libre en disco, la recuperación produce un error.

### Optimización de grandes cargas de datos
<a name="MySQL.Procedural.Importing.AnySource.Advanced.Disable"></a>

Para grandes cargas de datos, desactive el registro binario para reducir la sobrecarga y los requisitos de espacio en disco. Puede desactivar el registro binario estableciendo el periodo de retención de copias de seguridad en 0. Una vez completada la carga, restaure el periodo de retención de copias de seguridad al valor apropiado distinto de cero. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md) y [Periodo de retención de copia de seguridad](USER_ModifyInstance.Settings.md) en la tabla de configuración.

**nota**  
Si la instancia de base de datos es una instancia de base de datos de origen para réplicas de lectura, no puede establecer el periodo de retención de copia de seguridad en 0.

Antes de cargar los datos, recomendamos que cree una instantánea de base de datos. Para obtener más información, consulte [Administración de copias de seguridad manuales](USER_ManagingManualBackups.md). 

## InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB"></a>

La siguiente información sobre las opciones de registro de reversión y recuperación ayuda a mantener pequeñas las transacciones de InnoDB para optimizar el rendimiento de la base de datos.

### Descripción del registro de reversión de InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB.Undo"></a>

La reversión es un mecanismo de registro que permite la reversión de transacciones y admite el control de concurrencia multiversión (MVCC). 

Para MySQL 5.7 y versiones anteriores, los registros de reversión se almacenan en el espacio de tablas del sistema InnoDB (normalmente ibdata1) y se conservan hasta que el subproceso de purga los elimina. De este modo, las transacciones de carga de datos de gran tamaño pueden provocar que el espacio de tablas del sistema sea muy grande y consumir espacio en disco que no puede recuperar si no recrea la base de datos.

Para todas las versiones de MySQL, el subproceso de purga debe esperar para eliminar cualquier registro de reversión hasta que la transacción activa más antigua se confirme o se revierta. Si la base de datos procesa otras transacciones durante la carga, los registros de reversión también se acumulan y no pueden eliminarse, incluso si se confirman las transacciones y ninguna otra transacción necesita registros para deshacer MVCC. En esta situación, todas las transacciones, incluidas las de solo lectura, se ralentizan. Esta ralentización se produce porque todas las transacciones acceden a todas las filas que cualquier transacción (no solo la transacción de carga) cambia. En efecto, las transacciones deben examinar los registros de reversión que las transacciones de carga de larga duración impidieron purgar durante una limpieza del registro de reversión. Esto afecta al rendimiento de cualquier operación que acceda a las filas modificadas. 

### Opciones de recuperación de transacciones de InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB.Rollback"></a>

Aunque InnoDB optimiza las operaciones de confirmación, las reversiones de transacciones grandes son lentas. Para una recuperación más rápida, realice una recuperación en un momento dado o restaure una instantánea de base de datos. Para obtener más información, consulte [Recuperación a un momento dado](USER_PIT.md) y [Restauración a una instancia de base de datos](USER_RestoreFromSnapshot.md).

## Formatos de importación de datos
<a name="MySQL.Procedural.Importing.Advanced.InputFormat"></a>

MySQL admite dos formatos de importación de datos: archivos sin formato y SQL. Revise la información sobre cada formato para determinar cuál es la mejor opción para sus necesidades.

### Archivos sin formato
<a name="MySQL.Procedural.Importing.Advanced.InputFormat.FlatFiles"></a>

Para transacciones pequeñas, cargue archivos sin formato con `LOAD DATA LOCAL INFILE`. Este formato de importación de datos puede proporcionar los siguientes beneficios en comparación con el uso de SQL:
+ Menos tráfico de red
+ Costos de transmisión de datos más bajos
+ Menor sobrecarga de procesamiento de bases de datos
+ Procesamiento más rápido

`LOAD DATA LOCAL INFILE` carga todo el archivo sin formato en una sola transacción. Mantenga pequeño el tamaño de los archivos individuales para obtener las siguientes ventajas:
+ **Posibilidad de reanudación**: puede hacer un seguimiento de los archivos que se han cargado. Si surge un problema durante la carga, puede continuar donde se detuvo. Es posible que sea necesario volver a transmitir algunos datos a Amazon RDS, pero con los archivos pequeños, el volumen es mínimo.
+ **Carga de datos en paralelo**: si tiene IOPS y ancho de banda de la red suficiente para la carga de un solo archivo, la carga en paralelo podría ahorrar tiempo.
+ **Control de la velocidad de carga**: si la carga de datos tiene un impacto negativo en otros procesos, puede controlar la velocidad de carga aumentando el intervalo entre los archivos. 

Las transacciones de gran tamaño reducen los beneficios de usar `LOAD DATA LOCAL INFILE` para importar datos. Cuando no pueda dividir una gran cantidad de datos en archivos más pequeños, considere la posibilidad de utilizar SQL.

### SQL
<a name="MySQL.Procedural.Importing.Advanced.InputFormat.SQL"></a>

SQL tiene una ventaja fundamental con respecto a los archivos sin formato: puede mantener pequeños los tamaños de transacción. Sin embargo, SQL puede tardar mucho más en cargar que los archivos sin formato. Además, después de un error, puede ser difícil determinar dónde reanudar, ya que no se pueden reiniciar los archivos mysqldump. Si se produce un error durante la carga de un archivo mysqldump, debe modificarlo o sustituirlo antes de poder reanudar la carga. De forma alternativa, después de corregir la causa del error, puede restaurar a un momento anterior a la carga antes de cargar y volver a enviar el archivo. Para obtener más información, consulte [Recuperación a un momento dado](USER_PIT.md).

## Uso de instantáneas de base de datos de Amazon RDS para puntos de comprobación de la base de datos
<a name="MySQL.Procedural.Importing.Advanced.Checkpoints"></a>

Si carga datos durante periodos prolongados, como horas o días, sin registro binario, utilice las instantáneas de base de datos para proporcionar puntos de comprobación periódicos para garantizar la seguridad de los datos. Cada instantánea de base de datos crea una copia coherente de la instancia de base de datos que sirve como punto de recuperación durante errores del sistema o eventos de corrupción de datos. Como las instantáneas de base de datos son rápidas, los puntos de comprobación frecuentes tienen un impacto mínimo en el rendimiento de la carga. Puede eliminar las instantáneas de base de datos anteriores sin que ello afecte a la durabilidad de la base de datos ni a las capacidades de recuperación. Para obtener más información acerca de las instantáneas de base de datos, consulte [Administración de copias de seguridad manuales](USER_ManagingManualBackups.md).

## Reducción de los tiempos de carga de bases de datos
<a name="MySQL.Procedural.Importing.Advanced.LoadTime"></a>

Los siguientes elementos son consejos adicionales para reducir los tiempos de carga: 
+ Cree todos los índices secundarios antes de cargar los datos en las bases de datos MySQL. A diferencia de otros sistemas de bases de datos, MySQL reconstruye toda la tabla al agregar o modificar índices secundarios. Este proceso crea una nueva tabla con los cambios de índice, copia todos los datos y elimina la tabla original.
+ Cargue los datos en el orden de la clave principal. Para las tablas de InnoDB, esto puede reducir los tiempos de carga entre un 75 % y un 80 % y reducir el tamaño del archivo de datos en un 50 %.
+ Desactive las restricciones de clave externa estableciendo `foreign_key_checks` en `0`. Esto es obligatorio en muchos casos para archivos sin formato cargados con `LOAD DATA LOCAL INFILE`. Para cualquier carga, desactivar las comprobaciones de claves externas acelera la carga de datos. Una vez completada la carga, vuelva a habilitar las restricciones configurando `foreign_key_checks` en `1` y verifique los datos.
+ Cargue datos en paralelo a no ser que se aproxime al límite de los recursos. Para habilitar la carga simultánea en varios segmentos de la tabla, use tablas particionadas cuando sea apropiado. 
+ Para reducir la sobrecarga de ejecución de SQL, combine varias instrucciones `INSERT` en operaciones `INSERT` únicas con varios valores. `mysqldump` implementa esta optimización automáticamente. 
+ Reduzca las operaciones de E/S de registro de InnoDB estableciendo `innodb_flush_log_at_trx_commit` en `0`. Una vez completada la carga, restaure `innodb_flush_log_at_trx_commit` a `1`. 
**aviso**  
Si se establece `innodb_flush_log_at_trx_commit` en `0`, InnoDB vaciará sus registros cada segundo en lugar de hacerlo con cada confirmación. Esta configuración aumenta el rendimiento, pero puede conllevar el riesgo de perder transacciones si se produce un error en el sistema.
+ Si va a cargar datos en una instancia de base de datos que no tiene réplicas de lectura, establezca `sync_binlog` en `0`. Una vez completada la carga, restaure `sync_binlog parameter` a `1`.
+ Cargue los datos en una instancia de base de datos de Single-AZ antes de convertir la instancia de base de datos en una implementación Multi-AZ. Si la instancia de base de datos ya usa una implementación Multi-AZ, no se recomienda cambiar a una implementación Single-AZ para la carga de datos. Hacerlo solo proporciona mejoras marginales.

# Restauración de una copia de seguridad en una instancia de base de datos de Amazon RDS para MySQL
<a name="MySQL.Procedural.Importing"></a>

Amazon RDS admite la importación de bases de datos MySQL con archivos de copia de seguridad. Puede crear una copia de seguridad de la base de datos y, a continuación, almacenar el archivo de copia de seguridad en Amazon S3 y luego restaurar el archivo de copia de seguridad en una nueva instancia de base de datos de Amazon RDS que ejecuta MySQL. Amazon RDS admite la importación de archivos de copia de seguridad de Amazon S3 en todas las Regiones de AWS. 

La situación descrita en esta sección restaura una copia de seguridad de una base de datos en las instalaciones. Siempre que la base de datos sea accesible, puede utilizar esta técnica para bases de datos en otras ubicaciones, como Amazon EC2 u otros servicios en la nube.

En el siguiente diagrama se muestran los escenarios admitidos.

![\[Importación en MySQL de archivos de copia de seguridad desde S3.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MySQL-bak-file.png)


Si la base de datos en las instalaciones puede estar sin conexión mientras se crean, se copian y se restauran archivos de copia de seguridad, recomendamos que utilice los archivos de copia de seguridad para importar la base de datos a Amazon RDS. Si la base de datos no puede estar sin conexión, puede usar uno de los métodos siguientes:
+ **Registros binarios**: primero, importe los archivos de copia de seguridad de Amazon S3 a Amazon RDS, tal y como se explica en este tema. A continuación, utilice la replicación del registro binario (binlog) para actualizar la base de datos. Para obtener más información, consulte [Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa](MySQL.Procedural.Importing.External.Repl.md). 
+ **AWS Database Migration Service**: use AWS Database Migration Service para migrar la base de datos a Amazon RDS. Para obtener más información, consulte [¿Qué es AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

## Información general de configuración para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS
<a name="MySQL.Procedural.Importing.Enabling"></a>

Para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS, necesita los siguientes componentes: 
+ Un bucket de Amazon S3 para almacenar los archivos de copia de seguridad.

  Si ya tiene un bucket de Amazon S3, puede utilizar ese bucket. Si no tiene un bucket de Amazon S3, cree uno nuevo. Para obtener más información, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). 
+ una copia de seguridad de su base de datos local creada por Percona XtraBackup.

  Para obtener más información, consulte [Creación de su copia de seguridad de base de datos](#MySQL.Procedural.Importing.Backup). 
+ Un rol de AWS Identity and Access Management (IAM) para permitir a Amazon RDS el acceso al bucket de S3.

  Si ya tiene un rol de IAM, puede usar ese rol y asociarle políticas de confianza y permisos. Para obtener más información, consulte [Creación manual de un rol de IAM](#MySQL.Procedural.Importing.Enabling.IAM).

  Si no tiene un rol de IAM, tiene dos opciones:
  + Puede crear manualmente un rol de IAM nuevo. Para obtener más información, consulte [Creación manual de un rol de IAM](#MySQL.Procedural.Importing.Enabling.IAM).
  + Puede elegir que Amazon RDS cree un nuevo rol de IAM automáticamente. Si desea que Amazon RDS cree un nuevo rol de IAM automáticamente, siga el procedimiento que utiliza la Consola de administración de AWS en la sección [Importación de datos desde Amazon S3 a una nueva instancia de base de datos de MySQL](#MySQL.Procedural.Importing.PerformingImport). 

## Creación de su copia de seguridad de base de datos
<a name="MySQL.Procedural.Importing.Backup"></a>

Use el software Percona XtraBackup para crear su backup. Le recomendamos que utilice la última versión de Percona XtraBackup. Puede instalar Percona XtraBackup desde las [descargas de software](https://www.percona.com/downloads/) en el sitio web de Percona. 

**aviso**  
Cuando crea una copia de seguridad de base de datos, es posible que XtraBackup guarde credenciales en el archivo xtrabackup\$1info. Asegúrese de confirmar que la configuración de `tool_command` del archivo xtrabackup\$1info no contiene información confidencial.

La versión de Percona XtraBackup que utilice dependerá de la versión de MySQL de la que esté haciendo la copia de seguridad.
+ **MySQL 8.4**: utilice Percona XtraBackup versión 8.4.
+ **MySQL 8.0**: utilice Percona XtraBackup versión 8.0.
**nota**  
Percona XtraBackup 8.0.12 y las versiones posteriores admiten la migración de todas las versiones de MySQL 8.0. Si migra a RDS para MySQL 8.0.32 o posterior, debe usar Percona XtraBackup 8.0.12 o posterior.
+ **MySQL 5.7**: utilice Percona XtraBackup versión 2.4.

Puede usar Percona XtraBackup para crear una copia de seguridad completa de los archivos de base de datos de MySQL. Como alternativa, si ya usa Percona XtraBackup para realizar las copias de seguridad de los archivos de la base de datos MySQL, puede cargar los archivos y los directorios de backup completos e incrementales. 

Para obtener más información acerca de cómo realizar una copia de seguridad de la base de datos con Percona XtraBackup, consulte [Percona XtraBackup: documentación](https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html) en el sitio web de Percona. 

### Creación de una copia de seguridad completa con Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Full"></a>

Para crear una copia de seguridad completa de los archivos de base de datos de MySQL que Amazon RDS pueda restaurar desde Amazon S3, use la utilidad Percona XtraBackup (`xtrabackup`). 

Por ejemplo, el siguiente comando crea un backup de una base de datos MySQL y almacena los archivos en la carpeta `/on-premises/s3-restore/backup`. 

```
xtrabackup --backup --user=myuser --password=password --target-dir=/on-premises/s3-restore/backup
```

Si desea comprimir la copia de seguridad en un solo archivo (que puede dividir en varios archivos posteriormente, si es necesario), puede guardar la copia de seguridad en uno de los siguientes formatos en función de la versión de MySQL: 
+ **Gzip (.gz)**: para MySQL 5.7 y versiones anteriores
+ **tar (.tar)**: para MySQL 5.7 y versiones anteriores
+ **Percona xbstream (.xbstream)**: para todas las versiones de MySQL

**nota**  
Percona XtraBackUp 8.0 y superiores solo admite Percona xbstream para la compresión.

**MySQL 5.7 y versiones anteriores**

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos Gzip. Sustituya valores con su propia información.

```
xtrabackup --backup --user=my_user --password=password --stream=tar \
   --target-dir=/on-premises/s3-restore/backup | gzip - | split -d --bytes=500MB \
   - /on-premises/s3-restore/backup/backup.tar.gz
```

**MySQL 5.7 y versiones anteriores**

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos tar. Sustituya valores con su propia información.

```
xtrabackup --backup --user=my_user --password=password --stream=tar \
   --target-dir=/on-premises/s3-restore/backup | split -d --bytes=500MB \
   - /on-premises/s3-restore/backup/backup.tar
```

**Todas las versiones de MySQL**

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos xbstream. Sustituya valores con su propia información.

```
xtrabackup --backup --user=myuser --password=password --stream=xbstream \
   --target-dir=/on-premises/s3-restore/backup | split -d --bytes=500MB \
   - /on-premises/s3-restore/backup/backup.xbstream
```

**nota**  
Si aparece el siguiente error, puede deberse a que se han mezclado formatos de archivo en el comando:  

```
ERROR:/bin/tar: This does not look like a tar archive
```

### Uso de copias de seguridad incrementales con Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Incr"></a>

Si ya usa Percona XtraBackup para realizar copias de seguridad completas e incrementales de sus archivos de base de datos MySQL, no tiene que crear una copia de seguridad completa y cargar los archivos del backup en Amazon S3. En su lugar, para ahorrar tiempo, copie los directorios y archivos de copia de seguridad existentes en el bucket de Amazon S3. Para obtener más información acerca de la creación de copias de seguridad incrementales con Percona XtraBackup, consulte [Create an incremental backup](https://docs.percona.com/percona-xtrabackup/LATEST/create-incremental-backup.html) en el sitio web de Percona. 

Cuando copie los archivos de backup completos o incrementales en un bucket de Amazon S3, debe copiar repetidamente el contenido del directorio base. Esos contenidos incluyen la copia de seguridad completa y también todos los directorios y archivos de la copia de seguridad incremental. Esta copia debe mantener la estructura de directorios en el bucket de Amazon S3. Amazon RDS realiza iteraciones por todos los archivos y directorios. Amazon RDS utiliza el archivo `xtrabackup-checkpoints` incluido con cada copia de seguridad incremental para identificar el directorio base y ordenar las copias de seguridad incrementales por rango del número de secuencia del registro (LSN). 

### Consideraciones sobre copias de seguridad para Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Considerations"></a>

Amazon RDS consume sus archivos de copia de seguridad en función del nombre de archivo. Asigne a los archivos de copia de seguridad la extensión de archivo adecuada en función del formato de archivo. Por ejemplo, utilice `.xbstream` para archivos almacenados con el formato xbstream de Percona. 

Amazon RDS consume sus archivos de backup en orden alfabético, así como según la numeración natural. Para asegurarse de que la escritura y la asignación de nombre de los archivos de copia de seguridad se realice en el orden correcto, utilice la opción `split` al ejecutar el comando `xtrabackup`. 

Amazon RDS no admite copias de seguridad parciales creados con Percona XtraBackup. No puede utilizar las siguientes opciones para crear una copia de seguridad parcial al realizar copias de seguridad de los archivos de origen de la base de datos: 
+ `--tables`
+ `--tables-exclude`
+ `--tables-file`
+ `--databases`
+ `--databases-exclude`
+ `--databases-file`

## Creación manual de un rol de IAM
<a name="MySQL.Procedural.Importing.Enabling.IAM"></a>

Si no dispone de un rol de IAM, puede crear uno manualmente. Sin embargo, si restaura la base de datos mediante la Consola de administración de AWS, le recomendamos que elija que Amazon RDS cree este nuevo rol de IAM automáticamente. Para que Amazon RDS cree este rol automáticamente, siga el procedimiento de la sección [Importación de datos desde Amazon S3 a una nueva instancia de base de datos de MySQL](#MySQL.Procedural.Importing.PerformingImport).

Para crear manualmente un nuevo rol de IAM para importar la base de datos desde Amazon S3, cree un rol para delegar permisos de Amazon RDS al bucket de Amazon S3. Cuando cree un rol de IAM, debe asociar políticas de confianza y de permisos. Para importar sus archivos de copia de seguridad desde Amazon S3, utilice políticas de confianza y permisos similares a los siguientes ejemplos. Para obtener más información acerca de cómo crear un rol, consulte [Crear un rol para delegar permisos a un servicio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Para utilizar las políticas de confianza y de permisos es necesario proporcionar un nombre de recurso de Amazon (ARN). Para obtener más información acerca del formato de los ARN, consulte [Nombres de recursos de Amazon (ARN) y espacios de nombres de servicios de AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example política de confianza para importar desde Amazon S3**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRoleForBackup",
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

**Example política de permisos para importar desde Amazon S3: permisos de usuario de IAM**  
En el siguiente ejemplo, sustituya *iam\$1user\$1id* por su propio valor.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3AccessRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/S3Access"
        }
    ]
}
```

**Example política de permisos para importar desde Amazon S3: permisos de rol**  
En el siguiente ejemplo, sustituya *amzn-s3-demo-bucket* y *prefix* con sus propios valores.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObject"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "kms:Decrypt"
            ],
        "Resource": [
            "arn:aws:kms:us-east-1:111122223333:key/key_id*"
            ]
        }
    ]
}
```
Si incluye un prefijo del nombre de archivo, incluya el asterisco (\$1) después del prefijo. Si no desea especificar ningún prefijo, especifique únicamente un asterisco.

## Importación de datos desde Amazon S3 a una nueva instancia de base de datos de MySQL
<a name="MySQL.Procedural.Importing.PerformingImport"></a>

Puede importar datos desde Amazon S3 a una nueva instancia de base de datos de MySQL mediante la Consola de administración de AWS, la AWS CLI o la API de RDS.

### Consola
<a name="MySQL.Procedural.Importing.Console"></a>

**Para importar datos desde Amazon S3 a una nueva instancia de base de datos MySQL**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En la esquina superior derecha de la consola de Amazon RDS, elija la Región de AWS en la que desea crear la instancia de base de datos. Elija la misma Región de AWS que el bucket de Amazon S3 que contiene su copia de seguridad de base de datos. 

1. En el panel de navegación, seleccione **Databases (Bases de datos)**.

1. Elija **Restore from S3 (Restaurar de S3)**.

   Aparecerá la página **Create database by restoring from S3 (Crear base de datos restaurando desde S3)**.  
![\[La página Crear base de datos restaurando desde S3, en la que especifica los detalles para restaurar una instancia de base de datos desde S3.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/mys-s3-ingestion.png)

1. En **Origen de S3**:

   1. Elija el **bucket de S3** que contiene la copia de seguridad.

   1. (Opcional) Para **prefijo de S3**, escriba un prefijo de ruta de archivo para los archivos almacenados en el bucket de Amazon S3.

      Si no especifica un prefijo, Amazon RDS crea la instancia de base de datos con todos los archivos y carpetas de la carpeta raíz del bucket de S3. Si especifica un prefijo, Amazon RDS crea la instancia de base de datos con los archivos y carpetas del bucket de S3 cuya ruta completa del archivo empieza con el prefijo especificado.

      Por ejemplo, se almacenan los archivos de copia de seguridad en S3 en una subcarpeta denominada copias de seguridad y que tiene varios conjuntos de archivos de copia de seguridad, cada uno en su propio directorio (gzip\$1backup1, gzip\$1backup2, etc.). En este caso, para restaurar a partir de los archivos de la carpeta gzip\$1backup1, debe especificar el prefijo de backups/gzip\$1backup1. 

1. En **Engine options (Opciones del motor)**:

   1. En **Engine type (Tipo de motor)**, seleccione **MySQL**.

   1. En **Source engine version (Versión del motor de origen)**, seleccione la versión principal de MySQL de su base de datos de origen.

   1. Para **Version de motor**, elija la versión secundaria predeterminada de su versión principal de MySQL en su Región de AWS.

      En Consola de administración de AWS, solo está disponible la versión secundaria predeterminada. Después de completar la importación, puede actualizar la instancia de base de datos.

1. Para el **rol de IAM**, cree o selección el rol de IAM con la política de confianza y la política de permisos requeridas que permitan a Amazon RDS acceder a su bucket de Amazon S3. Lleve a cabo una de las siguientes acciones:
   + (Recomendado) Elija **Crear un nuevo rol** e introduzca el **Nombre de rol de IAM**. Con esta opción, Amazon RDS crea automáticamente el rol con la política de confianza y la política de permisos.
   + Elija un rol de IAM existente. Asegúrese de que este rol cumpla con todos los criterios de [Creación manual de un rol de IAM](#MySQL.Procedural.Importing.Enabling.IAM).

1. Especifique la información de la instancia de base de datos. Para obtener más información acerca de cada ajuste, consulte [Configuración de instancias de base de datos](USER_CreateDBInstance.Settings.md). 
**nota**  
Asegúrese de asignar almacenamiento suficiente para la nueva instancia de base de datos de modo que la operación de restauración pueda realizarse correctamente.  
Para permitir el crecimiento automático en el futuro, en **Configuración de almacenamiento adicional**, elija **Habilitar el escalado automático del almacenamiento**.

1. Elija ajustes adicionales según sea necesario.

1. Elija **Create database (Crear base de datos)**.

### AWS CLI
<a name="MySQL.Procedural.Importing.CLI"></a>

Para importar datos desde Amazon S3 a una nueva instancia de base de datos de MySQL mediante la AWS CLI, llame al comando [restore-db-instance-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html) con las siguientes opciones. Para obtener más información acerca de cada configuración, consulte [Configuración de instancias de base de datos](USER_CreateDBInstance.Settings.md). 

**nota**  
Asegúrese de asignar almacenamiento suficiente para la nueva instancia de base de datos de modo que la operación de restauración pueda realizarse correctamente.  
Para habilitar el escalado automático del almacenamiento y permitir el crecimiento futuro automáticamente, use la opción `--max-allocated-storage`.
+ `--allocated-storage`
+ `--db-instance-identifier`
+ `--db-instance-class`
+ `--engine`
+ `--master-username`
+ `--manage-master-user-password`
+ `--s3-bucket-name`
+ `--s3-ingestion-role-arn`
+ `--s3-prefix`
+ `--source-engine`
+ `--source-engine-version`

**Example**  
Para Linux, macOS o Unix:  

```
 1. aws rds restore-db-instance-from-s3 \
 2.     --allocated-storage 250 \
 3.     --db-instance-identifier my_identifier \
 4.     --db-instance-class db.m5.large \
 5.     --engine mysql \
 6.     --master-username admin \
 7.     --manage-master-user-password \
 8.     --s3-bucket-name amzn-s3-demo-bucket \
 9.     --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
10.     --s3-prefix bucket_prefix \
11.     --source-engine my_sql \
12.     --source-engine-version 8.0.32 \
13.     --max-allocated-storage 1000
```
Para Windows:  

```
 1. aws rds restore-db-instance-from-s3 ^
 2.     --allocated-storage 250 ^
 3.     --db-instance-identifier my_identifier ^
 4.     --db-instance-class db.m5.large ^
 5.     --engine mysql ^
 6.     --master-username admin ^
 7.     --manage-master-user-password ^
 8.     --s3-bucket-name amzn-s3-demo-bucket ^
 9.     --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^
10.     --s3-prefix bucket_prefix ^
11.     --source-engine mysql ^
12.     --source-engine-version 8.0.32 ^
13.     --max-allocated-storage 1000
```

### API de RDS
<a name="MySQL.Procedural.Importing.API"></a>

Para importar datos desde Amazon S3 a una nueva instancia de base de datos de MySQL mediante la API de Amazon RDS, llame a la operación [RestoreDBInstanceFromS3](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html).

## Limitaciones y consideraciones para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS
<a name="MySQL.Procedural.Importing.Limitations"></a>

Las siguientes limitaciones y consideraciones se aplican a la importación de archivos de copia de seguridad de Amazon S3 a una instancia de base de datos de RDS para MySQL: 
+ Solo puede migrar los datos a una nueva instancia de base de datos y no a una existente.
+ Debe utilizar Percona XtraBackup para realizar copias de seguridad de los datos en Amazon S3. Para obtener más información, consulte [Creación de su copia de seguridad de base de datos](#MySQL.Procedural.Importing.Backup).
+ El bucket de Amazon S3 y la instancia de base de datos de RDS para MySQL deben estar en la misma Región de AWS.
+ No puede restaurar desde los siguientes orígenes:
  + Exportación de una instantánea de instancia de base de datos a Amazon S3. Tampoco puede migrar datos desde una exportación de instantáneas de instancias de base de datos al bucket de Amazon S3.
  + Una base de datos de origen cifrada. Sin embargo, puede cifrar los datos que se están migrando. También puede dejar los datos sin cifrar durante el proceso de migración.
  + Una base de datos MySQL 5.5 o 5.6.
+ RDS para MySQL no admite Percona Server for MySQL como base de datos de origen, ya que puede contener tablas de `compression_dictionary*` en el `mysql schema`.
+ RDS para MySQL no admite la migración a versiones anteriores ni de las versiones principales ni de las secundarias. Por ejemplo, no puede migrar de la versión 8.0 de MySQL a RDS para MySQL 5.7, y no puede migrar de la versión 8.0.32 de MySQL a RDS para MySQL versión 8.0.26.
+ Amazon RDS no admite la importación en la clase de instancia de base de datos de db.t2.micro de Amazon S3. Sin embargo, puede restaurar a otra clase de instancia de base de datos y, a continuación, cambiar la clase de instancia de base de datos posteriormente. Para obtener más información sobre las clases de instancias, consulte [Especificaciones de hardware para clases de instancia de base de datos ](Concepts.DBInstanceClass.Summary.md). 
+ Amazon S3 limita el tamaño de un archivo cargado en un bucket de Amazon S3 a 5 TB. Si un archivo de copia de seguridad supera los 5 TB, debe dividir el archivo de copia de seguridad en archivos más pequeños.
+ Amazon RDS limita el número de archivos cargados en un bucket de Amazon S3 a 1 millón. Si los datos de copia de seguridad de su base de datos, con todas las copias de seguridad completas e incrementales, superan 1 millón de archivos, use un archivo Gzip (.gz), tar (.tar.gz) o Percona xbstream (.xbstream) para almacenar archivos de copia de seguridad completas e incrementales en el bucket de Amazon S3. Percona XtraBackUp 8.0 solo admite Percona xbstream para la compresión.
+ Para proporcionar servicios de administración para cada instancia de base de datos, Amazon RDS crea el usuario `rdsadmin` al crear la instancia de base de datos. Como `rdsamin` es un usuario reservado en Amazon RDS, se aplican las siguientes limitaciones:
  + Amazon RDS no importa funciones, procedimientos, vistas, eventos y desencadenadores con el definidor `'rdsadmin'@'localhost'`. Para obtener más información, consulte [Objetos almacenados con “rdsamin'@'localhost' como definidor](#MySQL.Procedural.Importing.StoredObjects) y [Privilegios de la cuenta de usuario maestro](UsingWithRDS.MasterAccounts.md). 
  + Al crear la instancia de base de datos, Amazon RDS crea un usuario principal con los privilegios máximos admitidos. Al restaurar desde una copia de seguridad, Amazon RDS elimina automáticamente cualquier privilegio no admitido asignado a los usuarios que se importa.

    Para identificar a los usuarios que podrían verse afectados por esto, consulte [Cuentas de usuario con privilegios no admitidos](#MySQL.Migrating.ExtMySQL.Prechecks.Users). Para obtener más información sobre los privilegios admitidos en RDS para MySQL, consulte [Modelo de privilegios basado en roles de RDS para MySQL](Appendix.MySQL.CommonDBATasks.privilege-model.md).
+ Amazon RDS no migra las tablas creadas por los usuarios en el esquema de `mysql`.
+ Debe configurar el parámetro `innodb_data_file_path` con un solo archivo de datos que utilice el nombre de archivo de datos predeterminado `ibdata1:12M:autoextend`. Puede migrar bases de datos con dos archivos de datos o con un archivo de datos con un nombre diferente, con este método.

  Los siguientes ejemplos son nombres de archivo que Amazon RDS no permite: 
  + `innodb_data_file_path=ibdata1:50M`
  + `ibdata2:50M:autoextend`
  + `innodb_data_file_path=ibdata01:50M:autoextend`
+ No puede migrar de una base de datos de origen que tenga tablas definidas fuera del directorio de datos de MySQL predeterminado.
+ El tamaño máximo admitido para las copias de seguridad sin comprimir que utilizan este método está limitado a 64 TiB. En el caso de las copias de seguridad comprimidas, este límite es menor para ajustarse a los requisitos de espacio de descompresión. En esos casos, el tamaño máximo admitido de la copia de seguridad es `64 TiB - compressed backup size`. 

  Para obtener información sobre el tamaño máximo de base de datos admitido que RDS para MySQL admite, consulte [Almacenamiento de SSD de uso general](CHAP_Storage.md#Concepts.Storage.GeneralSSD) y [Almacenamiento de SSD de IOPS aprovisionadas](CHAP_Storage.md#USER_PIOPS). 
+ Amazon RDS no admite la importación de MySQL ni de otros componentes y complementos externos.
+ Amazon RDS no restaura todo lo que contiene la base de datos. Se recomienda guardar el esquema y los valores de la base de datos para los siguientes elementos de la base de datos del sistema de MySQL de origen y agregarlos a la instancia de base de datos de RDS para MySQL restaurada una vez creada:
  + Cuentas de usuario
  + Funciones
  + Procedimientos almacenados
  + Información de zona horaria. La información de zona horaria se carga desde el sistema operativo local de la instancia de base de datos de RDS para MySQL. Para obtener más información, consulte [Zona horaria local para las instancias de bases de datos MySQL](MySQL.Concepts.LocalTimeZone.md).

### Objetos almacenados con “rdsamin'@'localhost' como definidor
<a name="MySQL.Procedural.Importing.StoredObjects"></a>

Amazon RDS no importa funciones, procedimientos, vistas, eventos y desencadenadores con `'rdsadmin'@'localhost'` como definidor.

Puede utilizar el siguiente script de SQL en la base de datos MySQL de origen para enumerar los objetos almacenados que tienen el definidor no admitido.

```
-- This SQL query lists routines with `rdsadmin`@`localhost` as the definer.

SELECT
    ROUTINE_SCHEMA,
    ROUTINE_NAME
FROM
    information_schema.routines
WHERE
    definer = 'rdsadmin@localhost';

-- This SQL query lists triggers with `rdsadmin`@`localhost` as the definer.

SELECT
    TRIGGER_SCHEMA,
    TRIGGER_NAME,
    DEFINER
FROM
    information_schema.triggers
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists events with `rdsadmin`@`localhost` as the definer.

SELECT
    EVENT_SCHEMA,
    EVENT_NAME
FROM
    information_schema.events
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists views with `rdsadmin`@`localhost` as the definer.
SELECT
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    information_schema.views
WHERE
    DEFINER = 'rdsadmin@localhost';
```

### Cuentas de usuario con privilegios no admitidos
<a name="MySQL.Migrating.ExtMySQL.Prechecks.Users"></a>

Las cuentas de usuario con privilegios que RDS para MySQL no admite se importan sin los privilegios no admitidos. Para ver la lista de los privilegios admitidos, consulte [Modelo de privilegios basado en roles de RDS para MySQL](Appendix.MySQL.CommonDBATasks.privilege-model.md).

Puede ejecutar la siguiente consulta SQL en la base de datos de origen para enumerar las cuentas de usuario que tienen privilegios no admitidos.

```
SELECT
    user,
    host
FROM
    mysql.user
WHERE
    Shutdown_priv = 'y'
    OR File_priv = 'y'
    OR Super_priv = 'y'
    OR Create_tablespace_priv = 'y';
```

# 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.

# Importación de datos a una base de datos de Amazon RDS para MySQL con un tiempo de inactividad reducido
<a name="mysql-importing-data-reduced-downtime"></a>

En algunos casos, es posible que sea necesario importar datos de una base de datos MySQL externa que sea compatible con una aplicación activa a una instancia de base de datos de RDS para MySQL o un clúster de base de datos multi-AZ de RDS para MySQL. Utilice el siguiente procedimiento para minimizar el impacto en la disponibilidad de las aplicaciones. Este procedimiento también puede resultar útil al trabajar con una base de datos de gran tamaño. Con este procedimiento, puede reducir el coste de la importación al reducir la cantidad de datos que se transfieren a través de la red a AWS. 

En el procedimiento, se transfiere primero una copia de los datos de la base de datos a una instancia de Amazon EC2 y después se importan los datos a una nueva base de datos de Amazon RDS. A continuación, se usa la replicación para actualizar la base de datos de Amazon RDS al estado de la instancia externa activa, antes de redirigir la aplicación a la base de datos de Amazon RDS. Configure la replicación en función de las coordenadas de los registros binarios.

**nota**  
Si desea importar datos a una instancia de base de datos de RDS para MySQL y el escenario lo admite, recomendamos importar y exportar los datos de Amazon RDS mediante el uso de archivos de copia de seguridad 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). 

El siguiente diagrama muestra la importación de una base de datos de MySQL externa a una base de datos de MySQL en Amazon RDS.

![\[Flujo de trabajo que muestra la importación de una base de datos de MySQL externa a una base de datos de MySQL en Amazon RDS.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_1.png)


## Tarea 1: Crear una copia de la base de datos existente
<a name="mysql-importing-data-reduced-downtime-copy-database"></a>

El primer paso del proceso de migración de una gran cantidad de datos a una base de datos de RDS para MySQL con un tiempo de inactividad mínimo es crear una copia de los datos de origen. 

El siguiente diagrama muestra la creación de una copia de seguridad de la base de datos de MySQL.

![\[Flujo de trabajo que muestra la creación de una copia de seguridad de la base de datos de MySQL.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_2.png)


Con la utilidad `mysqldump` puede crear una copia de seguridad de la base de datos, ya sea en formato SQL o como texto delimitado. Recomendamos que haga una prueba con cada formato en un entorno que no sea de producción para determinar con qué método tarda menos la ejecución de `mysqldump`.

También se recomienda comparar el rendimiento de `mysqldump` con el beneficio que ofrece el uso del formato de texto delimitado para la carga. Una copia de seguridad con formato de texto delimitado crea un archivo de texto separado por tabuladores por cada tabla volcada. Los archivos obtenidos pueden cargarse en paralelo con el comando `LOAD DATA LOCAL INFILE` para reducir el tiempo necesario para importar la base de datos. Para obtener más información, consulte [Paso 5: cargar los datos](mysql-importing-data-any-source.md#mysql-importing-data-any-source-load-data) en la importación de datos de cualquier procedimiento de origen.

Antes de iniciar la operación de copia de seguridad, asegúrese de configurar las opciones de replicación para la base de datos MySQL que va a copiar en Amazon RDS. Las opciones de replicación incluyen la activación del registro binario y la configuración de un ID de servidor único. La activación de estas opciones hace que el servidor comience a registrar las transacciones de la base de datos y la prepare para ser una instancia de replicación de origen en una fase posterior del proceso.

Asegúrese de conocer las siguientes recomendaciones y consideraciones:
+ Utilice la opción `--single-transaction` con `mysqldump` porque vuelca un estado coherente de la base de datos. Para garantizar un archivo de volcado válido, no ejecute instrucciones de lenguaje de definición de datos (DDL) mientras `mysqldump` se está ejecutando. Puede programar un periodo de mantenimiento para estas operaciones.
+ 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 establecer las opciones de replicación
<a name="mysql-importing-data-reduced-downtime-set-replication-options"></a>

1. Edite el archivo `my.cnf`. Este archivo se suele encontrar en `/etc`.

   ```
   sudo vi /etc/my.cnf
   ```

   Añada las opciones `log_bin` y `server_id` a la sección `[mysqld]`. La opción `log_bin` proporciona un identificador de nombre de archivo para los archivos de log binarios. La opción `server_id` proporciona un identificador único para el servidor en las relaciones origen-réplica.

   El siguiente ejemplo muestra la sección `[mysqld]` actualizada de un archivo `my.cnf`:

   ```
   [mysqld]
   log-bin=mysql-bin
   server-id=1
   ```

   Para obtener más información, consulte [Setting the Replication Source Configuration](https://dev.mysql.com/doc/refman/8.4/en/replication-howto-masterbaseconfig.html) en la documentación de MySQL.

1. Para la replicación con un clúster de base de datos Multi-AZ, establezca `ENFORCE_GTID_CONSISTENCY` y el parámetro `GTID_MODE` en `ON`.

   ```
   mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
   ```

   ```
   mysql> SET @@GLOBAL.GTID_MODE = ON;
   ```

   Esta configuración no es necesaria para la replicación con una instancia de base de datos.

1. Reinicie el servicio `mysql`.

   ```
   sudo service mysqld restart
   ```

### Para crear una copia de seguridad de la base de datos existente
<a name="mysql-importing-data-reduced-downtime-create-backup"></a>

1. Cree una copia de seguridad de los datos con la utilidad `mysqldump` especificando el formato SQL o de texto delimitado.

   Para MySQL 8.0.25 y versiones anteriores, especifique `--master-data=2` para crear un archivo de copia de seguridad que se pueda utilizar para iniciar la replicación entre servidores. Para MySQL 8.0.26 y versiones posteriores, especifique `--source-data=2` para crear un archivo de copia de seguridad que se pueda utilizar para iniciar la replicación entre servidores. Para obtener más información, consulte [mysqldump — A Database Backup Program](https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html) en la documentación de MySQL.

   Para mejorar el desempeño y asegurar la integridad de los datos, use las opciones `--order-by-primary` y `--single-transaction` para `mysqldump`.

   Para evitar incluir la base de datos de sistema de MySQL en la copia de seguridad, no use la opción `--all-databases` con `mysqldump`. Para obtener más información, consulte [Creating a Data Snapshot Using mysqldump](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto-mysqldump.html) en la documentación de MySQL.

   Use `chmod`, si es necesario, para asegurarse de que es posible escribir en el directorio donde se va a crear el archivo de copia de seguridad.
**importante**  
En Windows, ejecute el símbolo del sistema como administrador.
   + Para generar la salida en formato SQL, use el siguiente comando:

     Para Linux, macOS o Unix:

     ```
     sudo mysqldump \
         --databases database_name \
         --master-data=2  \
         --single-transaction \
         --order-by-primary \
         -r backup.sql \
         -u local_user \
         -ppassword
     ```
**nota**  
Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en el ejemplo.

     Para Windows:

     ```
     mysqldump ^
         --databases database_name ^
         --master-data=2  ^
         --single-transaction ^
         --order-by-primary ^
         -r backup.sql ^
         -u local_user ^
         -ppassword
     ```
**nota**  
Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en el ejemplo.
   + Para generar la salida en formato de texto delimitado, ejecute el siguiente comando:

     Para Linux, macOS o Unix:

     ```
     sudo mysqldump \
         --tab=target_directory \
         --fields-terminated-by ',' \
         --fields-enclosed-by '"' \
         --lines-terminated-by 0x0d0a \
         database_name \
         --master-data=2 \
         --single-transaction \
         --order-by-primary \
         -ppassword
     ```

     Para Windows:

     ```
     mysqldump ^
         --tab=target_directory ^
         --fields-terminated-by "," ^
         --fields-enclosed-by """ ^
         --lines-terminated-by 0x0d0a ^
         database_name ^
         --master-data=2 ^
         --single-transaction ^
         --order-by-primary ^
         -ppassword
     ```
**nota**  
Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en el ejemplo.  
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 argumentos con el comando `mysqldump`:   
`--routines=0`
`--triggers=0`
`--events=0`

     Para MySQL 8.0.22 y versiones anteriores, al ejecutar `mysqldump` y especificar el formato de texto delimitado, se devuelve un comentario `CHANGE MASTER TO`. Este comentario contiene el nombre y la ubicación del archivo de registro maestro. Para MySQL 8.0.23 y versiones posteriores, cuando ejecuta `mysqldump` con el formato de texto delimitado, se devuelve un comentario `CHANGE REPLICATION SOURCE TO`. Este comentario contiene el nombre y la ubicación del archivo de registro de origen. Si la instancia externa es MySQL 8.0.23 y versiones posteriores, tenga en cuenta los valores para `MASTER_LOG_FILE` y `MASTER_LOG_POS`. Necesita estos valores al configurar la replicación.

     Se devuelve el siguiente resultado para MySQL 8.0.22 y versiones anteriores:

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
     ```

     Se devuelve la siguiente salida para MySQL 8.0.23 y versiones posteriores:

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;
     ```

     Para MySQL 8.0.22 y versiones anteriores, si utiliza el formato SQL, puede obtener el nombre y la posición del archivo de registro principal en el comentario `CHANGE MASTER TO` del archivo de copia de seguridad. Para MySQL 8.0.23 y versiones posteriores, si utiliza el formato SQL, puede obtener el nombre y la posición del archivo de registro de origen en el comentario `CHANGE REPLICATION SOURCE TO` del archivo de copia de seguridad. 

1. Comprima los datos copiados para reducir los recursos de red necesarios para copiarlos a la base de datos de Amazon RDS. Tenga en cuenta el tamaño del archivo de copia de seguridad. Necesitará esta información para determinar el tamaño de la instancia de Amazon EC2 que se debe crear. Cuando haya terminado, comprima el archivo de copia de seguridad con GZIP o la utilidad de compresión que prefiera. 
   + Para comprimir la salida en formato SQL, ejecute el siguiente comando:

     ```
     gzip backup.sql
     ```
   + Para comprimir la salida en formato de texto delimitado, ejecute el siguiente comando:

     ```
     tar -zcvf backup.tar.gz target_directory
     ```

## Tarea 2: Crear una instancia de Amazon EC2 y copiar la base de datos comprimida
<a name="mysql-importing-data-reduced-downtime-create-ec2-copy-database"></a>

La copia del archivo de copia de seguridad comprimido a una instancia Amazon EC2 requiere menos recursos de red que una copia directa de los datos sin comprimir entre las instancias de base de datos. Una vez que los datos se encuentran en Amazon EC2, puede copiarlos desde allí directamente a la base de datos MySQL. Para ahorrar en el costo de los recursos de red, la instancia de Amazon EC2 debe estar en la misma Región de AWS que la instancia de base de datos de Amazon RDS. Tener la instancia de Amazon EC2 en la misma Región de AWS que la base de datos de Amazon RDS también reduce la latencia de red durante la importación.

El siguiente diagrama muestra cómo copiar la copia de seguridad de la base de datos a una instancia de Amazon EC2.

![\[Flujo de trabajo que muestra cómo copiar la copia de seguridad de la base de datos a una instancia de Amazon EC2.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_3.png)


### Para crear una instancia Amazon EC2 y copiar los datos
<a name="mysql-importing-data-reduced-downtime-create-ec2"></a>

1. En la Región de AWS donde tiene pensado crear la base de datos de Amazon RDS, cree una nube privada virtual (VPC), un grupo de seguridad de VPC y una subred de VPC. Asegúrese de que las reglas de entrada del grupo de seguridad de VPC permiten las direcciones IP necesarias para que la aplicación se conecte a AWS. Puede especificar un intervalo de direcciones IP, por ejemplo, `203.0.113.0/24`, u otro grupo de seguridad de VPC. Puede usar la [Consola de Amazon VPC](https://console.aws.amazon.com/vpc) para crear y administrar VPC, subredes y grupos de seguridad. Para obtener más información, consulte [Introducción a Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#getting-started) en la *Guía del usuario de Amazon Virtual Private Cloud*.

1. Abra la [consola de Amazon EC2](https://console.aws.amazon.com/ec2) y elija la Región de AWS que contendrá la instancia de Amazon EC2 y la base de datos de Amazon RDS. Lance una instancia Amazon EC2 utilizando la VPC, la subred y el grupo de seguridad que creó en el paso 1. Asegúrese de seleccionar un tipo de instancia con suficiente espacio de almacenamiento para el archivo de copia de seguridad de base de datos sin comprimir. Para obtener más información sobre las instancias de Amazon EC2, consulte [Introducción a Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) en la *Guía del usuario de Amazon Elastic Compute Cloud*.

1. Para conectarse a la base de datos de Amazon RDS desde la instancia de Amazon EC2, edite el grupo de seguridad de VPC. Agregue una regla de entrada que especifique la dirección IP privada de la instancia de EC2. La dirección IP privada aparece en la pestaña **Details (Detalles)** del panel **Instance (Instancia)** de la consola de EC2. Para editar el grupo de seguridad de VPC y agregar una regla de entrada, elija **Security Groups (Grupos de seguridad)** en el panel de navegación de la consola de EC2, elija el grupo de seguridad y, luego, agregue una regla de entrada para MySQL o Aurora que especifique la dirección IP privada de la instancia de EC2. Para obtener información sobre cómo agregar una regla de entrada a un grupo de seguridad de VPC, consulte [Reglas de grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) en la *Guía del usuario de Amazon Virtual Private Cloud*.

1. Copie el archivo de copia de seguridad de base de datos comprimido del sistema local a la instancia Amazon EC2. Use `chmod`, si es necesario, para asegurarse de que tiene permiso de escritura para el directorio de destino de la instancia de Amazon EC2. Puede utilizar `scp` o un cliente de Secure Shell (SSH) para copiar el archivo. El siguiente comando es un comando `scp` de ejemplo:

   ```
   scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
   ```
**importante**  
Al copiar la información confidencial, asegúrese de usar un protocolo de transferencia de red seguro.

1. Establezca una conexión con la instancia Amazon EC2 e instale las últimas actualizaciones y las herramientas de cliente MySQL con los comandos siguientes:

   ```
   sudo yum update -y
   sudo yum install mysql -y
   ```

   Para obtener más información, consulte [Conexión a la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux) para instancias de Linux en la *Guía del usuario de Amazon Elastic Compute Cloud*.
**importante**  
En este ejemplo se instala el cliente de MySQL en una imagen de máquina de Amazon (AMI) para una distribución de Amazon Linux. Este ejemplo no instala el cliente de MySQL en una distribución diferente, como Ubuntu o Red Hat Enterprise Linux. Para obtener información sobre la instalación de MySQL, consulte [Instalación de MySQL](https://dev.mysql.com/doc/refman/8.4/en/installing.html) en la documentación de MySQL.

1. Una vez establecida la conexión la instancia Amazon EC2 descomprima el archivo de copia de seguridad de base de datos. Los siguientes comandos son ejemplos.
   + Para descomprimir la salida en formato SQL, ejecute el siguiente comando:

     ```
     gzip backup.sql.gz -d
     ```
   + Para descomprimir la salida en formato de texto delimitado, ejecute el siguiente comando:

     ```
     tar xzvf backup.tar.gz
     ```

## Tarea 3: creación de una base de datos MySQL e importación de los datos desde la instancia de Amazon EC2
<a name="mysql-importing-data-reduced-downtime-create-database-import-data"></a>

Al crear una instancia de base de datos de RDS para MySQL o un clúster de base de datos multi-AZ de RDS para MySQL en la misma Región de AWS que la instancia de Amazon EC2, puede importar el archivo de copia de seguridad de la base de datos desde Amazon EC2 más rápido que a través de Internet.

El siguiente diagrama muestra la importación de la copia de seguridad desde una instancia de Amazon EC2 a una base de datos de MySQL.

![\[Flujo de trabajo que muestra la importación de la copia de seguridad desde la instancia de EC2 a la base de datos de MySQL.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_4.png)


### Creación de una base de datos MySQL e importación de los datos
<a name="mysql-importing-data-reduced-downtime-create-database"></a>

1. Determine la clase de la instancia de base de datos y la cantidad de espacio de almacenamiento requeridas para atender la carga de trabajo prevista para esta base de datos de Amazon RDS. Como parte de este proceso, decida cuánto espacio y qué capacidad de procesamiento requieren los procedimientos de carga de datos. Decida también lo que se necesita para manejar la carga de trabajo de producción. Puede estimar esto en función del tamaño y los recursos de la base de datos MySQL de origen. Para obtener más información, consulte [Clases de instancia de base de datos de ](Concepts.DBInstanceClass.md).

1. Cree una instancia de base de datos o un clúster de base de datos Multi-AZ en la Región de AWS que contenga la instancia de Amazon EC2.

   Para crear un clúster de base de datos Multi-AZ de RDS para MySQL, siga las instrucciones de [Creación de un clúster de base de datos multi-AZ para Amazon RDS](create-multi-az-db-cluster.md).

   Para crear una instancia de base de datos de RDS para MySQL, siga las instrucciones en [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md) y use las siguientes directrices:
   + Especifique una versión del motor de base de datos compatible con la instancia de base de datos de origen.
   + Especifique la misma nube privada virtual (VPC) y el mismo grupo de seguridad de VPC que para la instancia de Amazon EC2. De este modo se asegura de que la instancia Amazon EC2 y la instancia de Amazon RDS sean visibles mutuamente a través de la red. Asegúrese de que la instancia de base de datos sea de acceso público. Para configurar la replicación con la base de datos de origen como se describe en la siguiente sección, la instancia de base de datos debe ser accesible públicamente.
   + No configure varias zonas de disponibilidad, retenciones de copia de seguridad ni réplicas de lectura hasta haber importado la copia de seguridad de la base de datos. Una vez completada la importación, puede configurar Multi-AZ y la retención de copia de seguridad para la instancia de producción.

1. Revise las opciones de configuración predeterminadas para la base de datos de Amazon RDS. Si el grupo de parámetros predeterminado para la base de datos no tiene las opciones de configuración que desea, busque otro que sea adecuado o cree un grupo de parámetros nuevo. Para obtener más información acerca de cómo crear un grupo de parámetros, consulte [Grupos de parámetros para Amazon RDS](USER_WorkingWithParamGroups.md). 

1. Conéctese a la nueva base de datos de Amazon RDS como usuario maestro. Cree los usuarios necesarios para admitir a los administradores, las aplicaciones y los servicios que necesitan acceso a la instancia de base de datos. El nombre de host para la base de datos de Amazon RDS es el valor de **Punto de conexión** para esta instancia de base de datos, sin el número de puerto; por ejemplo, `mysampledb.123456789012.us-west-2.rds.amazonaws.com`. Puede encontrar el valor del punto de conexión en los detalles de la base de datos en la consola de Amazon RDS.

1. Conéctese a la instancia de Amazon EC2. Para obtener más información, consulte [Conexión a la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux) para instancias de Linux en la *Guía del usuario de Amazon Elastic Compute Cloud*. 

1. Conecte con la base de datos de Amazon RDS como host remoto desde la instancia de Amazon EC2 con el comando `mysql`. El siguiente comando es un ejemplo:

   ```
   mysql -h host_name -P 3306 -u db_master_user -p
   ```

   El *host\$1name* es el punto de conexión de la base de datos de Amazon RDS.

1. En la petición de `mysql`, ejecute el comando `source` y pásele el nombre del archivo de volcado de la base de datos. Este comando carga los datos en la instancia de base de datos de Amazon RDS.
   + Para el formato SQL, utilice el siguiente comando:

     ```
     mysql> source backup.sql;
     ```
   + Para el formato de texto delimitado, cree primero la base de datos, si no es la predeterminada que se creó cuando se configuró la base de datos de Amazon RDS.

     ```
     mysql> create database database_name;
     mysql> use database_name;
     ```

     A continuación, cree las tablas.

     ```
     mysql> source table1.sql
     mysql> source table2.sql
     etc...
     ```

     Importe entonces los datos.

     ```
     mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     etc...
     ```

     Para mejorar el rendimiento, puede ejecutar estas operaciones en paralelo desde varias conexiones, de modo que todas las tablas se creen y luego se carguen al mismo tiempo.
**nota**  
Si utilizó alguna opción de formato de datos con `mysqldump` en el volcado inicial de la tabla, asegúrese de utilizar las mismas opciones con `LOAD DATA LOCAL INFILE` para garantizar una interpretación adecuada del contenido del archivo de datos.

1. Ejecute una consulta `SELECT` sencilla en una o dos de las tablas de la base de datos importada para comprobar que la importación se ha completado correctamente.

Si ya no necesita la instancia de Amazon EC2 utilizada en este procedimiento, termine la instancia de EC2 para reducir el uso de recursos de AWS. Para terminar una instancia de EC2, consulte [Terminación de una instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#terminating-instances-console) en la *Guía del usuario de Amazon Elastic Compute Cloud*.

## Tarea 4: Replicación de los datos de la base de datos externa a la nueva base de datos de Amazon RDS
<a name="mysql-importing-data-reduced-downtime-replicate-data"></a>

Es probable que la base de datos de origen se haya actualizado durante el tiempo que tardó en copiar y transferir los datos a la base de datos MySQL. Por tanto, puede utilizar la replicación para actualizar la base de datos copiada con la base de datos de origen.

![\[Flujo de trabajo que muestra la replicación de datos desde la base de datos de MySQL externa a la base de datos en Amazon RDS.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_5.png)


Los permisos requeridos para comenzar la replicación en una base de datos de Amazon RDS están restringidos y no están disponibles para el usuario principal de Amazon RDS. Por ello, utilice el procedimiento almacenado de Amazon RDS adecuado para la versión principal del motor: 
+ [mysql\$1rds\$1set\$1external\$1master (versiones principales de RDS para MySQL 8.0 y anteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 
+ [mysql.rds\$1set\$1external\$1source (RDS para las versiones principales de MySQL 8.4 y superiores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source)
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) para configurar la replicación y [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) para iniciar la replicación

### Para iniciar la replicación
<a name="mysql-importing-data-reduced-downtime-start-replication"></a>

En la tarea 1, [cuando estableció las opciones de replicación](#mysql-importing-data-reduced-downtime-set-replication-options), activó el registro binario y estableció un ID de servidor único para la base de datos de origen. Ahora, puede configurar la base de datos de Amazon RDS como réplica estableciendo la base de datos activa como instancia de replicación de origen.

1. En la consola de Amazon RDS, agregue la dirección IP del servidor que aloja la base de datos de origen al grupo de seguridad de VPC configurado para la base de datos de Amazon RDS. Para obtener más información sobre la configuración de un grupo de seguridad de VPC, consulte [Configuración de reglas de grupos de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) en la *Guía del usuario de Amazon Virtual Private Cloud*. 

   Es posible que también necesite configurar la red local para permitir las conexiones desde la dirección IP de la base de datos de Amazon RDS para que se pueda comunicar con la instancia de origen. Para encontrar la dirección IP de la base de datos de Amazon RDS, use el comando `host`:

   ```
   host host_name
   ```

   El *host\$1name* es el nombre de DNS del punto de conexión de la 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.

1. Con el cliente que prefiera, conecte con la instancia de origen y cree un usuario para la replicación. Esta cuenta se usa únicamente para la replicación y debe estar limitada a su dominio para mejorar la seguridad. El siguiente comando es un ejemplo:

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**nota**  
Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

1. En la instancia de origen, conceda al usuario de replicación los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE`. Por ejemplo, para conceder los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE` referidos a todas las bases de datos al usuario "`repl_user`" del dominio, ejecute el siguiente comando:

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. Convertir la base de datos de Amazon RDS en la réplica. Conéctese a la base de datos de Amazon RDS como usuario principal e identifique la base de datos de origen como la instancia de replicación de origen con el procedimiento almacenado de Amazon RDS adecuado: 
   + [mysql\$1rds\$1set\$1external\$1master (versiones principales de RDS para MySQL 8.0 y anteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master)
   + [mysql.rds\$1set\$1external\$1source (RDS para las versiones principales de MySQL 8.4 y superiores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source)

   Si tiene un archivo de copia de seguridad con formato SQL, utilice el nombre de archivo de registro y la ubicación del registro principal que determinó en el paso 4. Si utilizó formato de texto delimitado, utilice el nombre y la posición que determinó cuando se crearon los archivos de copia de seguridad. Los siguientes comandos son ejemplos:

   **MySQL 8.4 y versiones posteriores**

   ```
   CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```

   **MySQL 8.0 y versiones anteriores**

   ```
   CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**nota**  
Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

1. En la base de datos de Amazon RDS, para empezar la replicación, ejecute el comando siguiente que usa el procedimiento almacenado [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication):

   ```
   CALL mysql.rds_start_replication;
   ```

1. En la base de datos de Amazon RDS, para determinar si la réplica está actualizada con la instancia de replicación de origen, ejecute el comando [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html). Los resultados del comando `SHOW REPLICA STATUS` incluyen el campo `Seconds_Behind_Master`. Cuando el campo `Seconds_Behind_Master` devuelve 0, la réplica está actualizada con la instancia de replicación de origen.
**nota**  
Versiones anteriores de MySQL utilizaban `SHOW SLAVE STATUS` en lugar de `SHOW REPLICA STATUS`. Si usa una versión de MySQL anterior a la 8.0.23, utilice `SHOW SLAVE STATUS`. 

1. Una vez que la base de datos de Amazon RDS esté actualizada, active las copias de seguridad automatizadas para poder restaurar la base de datos si es necesario. Puede activar o modificar copias de seguridad automatizadas para la base de datos de Amazon RDS mediante la [consola de Amazon RDS](https://console.aws.amazon.com/rds/). Para obtener más información, consulte [Introducción a las copias de seguridad](USER_WorkingWithAutomatedBackups.md).

## Tarea 5: Redirigir la aplicación en funcionamiento a la instancia de Amazon RDS
<a name="mysql-importing-data-reduced-downtime-redirect-app"></a>

Una vez que la base de datos MySQL esté actualizada con la instancia de replicación de origen, puede actualizar la aplicación activa para utilizar la instancia de Amazon RDS. 

![\[Flujo de trabajo que muestra la detención de la replicación y el direccionamiento de la aplicación en funcionamiento a la base de datos en Amazon RDS.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_6.png)


### Redirección de la aplicación activa a la base de datos MySQL y detención de la replicación
<a name="mysql-importing-data-reduced-downtime-redirect-app-stop-app"></a>

1. Para añadir el grupo de seguridad de VPC para la base de datos de Amazon RDS, añada la dirección IP del servidor que aloja la aplicación. Para obtener más información sobre la modificación de un grupo de seguridad de VPC, consulte [Configuración de reglas de grupos de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) en la *Guía del usuario de Amazon Virtual Private Cloud*. 

1. Compruebe que el valor del campo `Seconds_Behind_Master` en el comando [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) sea 0, lo que indica que la réplica está actualizada con la instancia de replicación de origen.

   ```
   SHOW REPLICA STATUS;
   ```
**nota**  
Versiones anteriores de MySQL utilizaban `SHOW SLAVE STATUS` en lugar de `SHOW REPLICA STATUS`. Si usa una versión de MySQL anterior a la 8.0.23, utilice `SHOW SLAVE STATUS`. 

1. Cierre todas las conexiones con el origen cuando se completen las transacciones.

1. Actualice la aplicación para que use la base de datos de Amazon RDS. Normalmente, la actualización implicará cambar la configuración de conexión para identificar el nombre de host y el puerto de la base de datos de Amazon RDS, la cuenta de usuario y la contraseña con las que conectarse y la base de datos que se debe emplear.

1. Conéctese a la instancia de base de datos.

   Para un clúster de base de datos Multi-AZ, conéctese a la instancia de base de datos de escritor.

1. Detenga la replicación de la instancia de Amazon RDS mediante la ejecución del comando siguiente que usa el procedimiento almacenado [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication):

   ```
   CALL mysql.rds_stop_replication;
   ```

1. Restablezca la configuración de replicación para que esta instancia ya no se identifique como réplica mediante el uso del procedimiento almacenado de Amazon RDS adecuado en la base de datos de Amazon RDS:
   +  [mysql\$1rds\$1reset\$1external\$1master (versiones principales de RDS para MySQL 8.0 y anteriores)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 
   + [mysql.rds\$1reset\$1external\$1source (RDS para las versiones principales de MySQL 8.4 y superiores)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_source)

   **MySQL 8.4 y versiones posteriores**

   ```
   CALL mysql.rds_reset_external_source;
   ```

   **MySQL 8.0 y versiones anteriores**

   ```
   CALL mysql.rds_reset_external_master;
   ```

1. Active las características adicionales de Amazon RDS, como la compatibilidad con Multi-AZ y las réplicas de lectura. Para obtener más información, consulte [Configuración y administración de una implementación multi-AZ para Amazon RDS](Concepts.MultiAZ.md) y [Trabajo con réplicas de lectura de instancias de base de datos](USER_ReadRepl.md).

# Importación de datos de cualquier origen a una instancia de base de datos de Amazon RDS para MySQL
<a name="mysql-importing-data-any-source"></a>

Con Amazon RDS, puede migrar datos de MySQL existentes de cualquier origen a una instancia de base de datos de RDS para MySQL. Puede transferir datos de bases de datos en las instalaciones, otros proveedores de nube o instancias de base de datos de RDS para MySQL existentes a la instancia de base de datos de RDS para MySQL de destino. Con esta funcionalidad, puede consolidar bases de datos, implementar soluciones de recuperación ante desastres o realizar la transición desde bases de datos autoadministradas. Los escenarios comunes incluyen pasar de servidores de MySQL autoalojados a instancias de base de datos de Amazon RDS totalmente administradas, consolidar varias bases de datos MySQL en una sola instancia de base de datos o crear entornos de prueba con datos de producción. En las siguientes secciones se proporcionan instrucciones paso a paso para importar los datos de MySQL mediante métodos como `mysqldump`, archivos de copia de seguridad o replicación.

## Paso 1: crear archivos sin formato con los datos que se van a cargar
<a name="mysql-importing-data-any-source-create-flat-files"></a>

Utilice un formato habitual, como valores separados por comas (CSV), para almacenar los datos que se deben cargar. Cada tabla debe tener su propio archivo. No puede combinar los datos de varias tablas en el mismo archivo. Dé a cada archivo el nombre de la tabla correspondiente. Puede elegir la extensión que desee para el nombre de los archivos. Por ejemplo, si el nombre de la tabla es `sales`, el nombre del archivo podría ser `sales.csv` o `sales.txt`.

Si es posible, ordene los datos según la clave principal de la tabla que se va a cargar. Esto mejorará drásticamente los tiempos de carga y minimizará los requisitos de almacenamiento en disco. 

La velocidad y la eficiencia de este procedimiento dependen de que el tamaño de los archivos sea pequeño. Si el tamaño sin comprimir de algún archivo es mayor de 1 GiB, divídalo en varios archivos y cárguelos por separado.

En los sistemas de tipo Unix (incluido Linux), utilice el comando `split`. Por ejemplo, el siguiente comando divide el archivo `sales.csv` en varios archivos de menos de 1 GiB y los divide solo en los saltos de línea (-C 1024m). Los nombres de los nuevos archivos incluyen sufijos numéricos ascendentes. El siguiente comando genera archivos con nombres como `sales.part_00` y `sales.part_01`. 

```
split -C 1024m -d sales.csv sales.part_ 
```

Otros sistemas operativos disponen de utilidades similares.

Puede almacenar los archivos sin formato en cualquier lugar. No obstante, cuando cargue los datos en el [paso 5](#mysql-importing-data-any-source-load-data), debe invocar el intérprete de comandos de `mysql` desde la misma ubicación donde existen los archivos o utilizar la ruta absoluta de los archivos cuando ejecute `LOAD DATA LOCAL INFILE`.

## Paso 2: Detener las aplicaciones con acceso a la instancia de base de datos de destino
<a name="mysql-importing-data-any-source-stop-apps"></a>

Antes de iniciar una carga grande, detenga toda la actividad de aplicaciones de acceder a la instancia de base de datos de destino que prevé cargar. Se recomienda esto en particular si otras sesiones modificarán las tablas que se cargan o las tablas a las que hacen referencia. Hacer esto reduce el riesgo de violaciones de restricciones que se producen durante la carga y mejoran el desempeño de carga. También permite restaurar la instancia de base de datos al estado inmediatamente anterior a la carga sin perder los cambios efectuados por los procesos no implicados en la carga. 

Por supuesto, en ocasiones esto no será posible o no resultará práctico. Si no puede detener el acceso de las aplicaciones con acceso a la instancia de base de datos antes de la carga, tome las medidas oportunas para asegurar la disponibilidad e integridad de los datos. Los pasos específicos requeridos varían mucho en función de cada caso y de los requisitos del sitio. 

## Paso 3: crear una instantánea de base de datos
<a name="mysql-importing-data-any-source-create-snapshot"></a>

Si tiene previsto cargar los datos en una nueva instancia de base de datos que aún está vacía, puede omitir este paso. De lo contrario, recomendamos crear instantáneas de bases de datos de la instancia de base de datos de Amazon RDS elegida como destino antes y después de la carga de los datos. Las instantáneas de base de datos de Amazon RDS son copias de seguridad completas de la instancia de base de datos que puede usar para restaurar la instancia de base de datos a un estado conocido. Cuando se inicia una instantánea de base de datos, las operaciones de E/S de la instancia de base de datos se suspenden de forma temporal mientras se crea una copia de seguridad de la base de datos. 

La creación de una instantánea de base de datos inmediatamente antes de la carga permite restaurar la base de datos al estado previo a la carga, si es necesario. Una instantánea de base de datos tomada inmediatamente después de la carga le evita tener que volver a cargar los datos en caso de error. También puede usar instantáneas de bases de datos después de la carga para importar datos a nuevas instancias de bases de datos. 

En el ejemplo siguiente se ejecuta el comando [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) de la AWS CLI para crear una instantánea de base de datos de la instancia `AcmeRDS` y se otorga el identificador `"preload"` a la instantánea de base de datos.

Para Linux, macOS o Unix:

```
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

También puede utilizar la funcionalidad de restauración de instantáneas de bases de datos para crear instancias de bases de datos de prueba para simulacros o para deshacer cambios realizados durante la carga. 

Tenga en cuenta que al restaurar una base de datos a partir de una instantánea de base de datos se crea una instancia nueva de base de datos que, como todas las instancias de base de datos, tiene un identificador y un punto de conexión únicos. Para restaurar la instancia de base de datos sin cambiar de punto de conexión, primero, elimine la instancia de base de datos para poder reutilizar el mismo punto de conexión. 

Por ejemplo, para crear una instancia de base de datos para simulacros u otras pruebas, asigne a la instancia de base de datos su propio identificador. En el ejemplo, el identificador es `AcmeRDS-2`. El ejemplo se conecta a la instancia de base de datos mediante el punto de conexión asociado con `AcmeRDS-2`. Para obtener más información, consulte [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html).

Para Linux, macOS o Unix:

```
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS-2 ^
    --db-snapshot-identifier preload
```

Para reutilizar el punto de conexión existente, es necesario eliminar primero la instancia de base de datos y, luego, asignar el mismo identificador a la base de datos restaurada. Para obtener más información, consulte [delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html). 

En el ejemplo siguiente se toma una instantánea de base de datos final de la instancia de base de datos antes de eliminarla. Esto es opcional, pero recomendable. 

Para Linux, macOS o Unix:

```
aws rds delete-db-instance \
    --db-instance-identifier AcmeRDS \
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds delete-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

## Paso 4 (opcional): Desactivar copias de seguridad automatizadas de Amazon RDS
<a name="mysql-importing-data-any-source-turn-off-automated-backups"></a>

**aviso**  
No desactive las copias de seguridad automatizadas si necesita realizar una recuperación en un momento dado.

La desactivación de las copias de seguridad automatizadas es una optimización del rendimiento y no es un requisito para las cargas de datos. La desactivación de las copias de seguridad automatizadas elimina todas las copias de seguridad existentes. Como resultado, después de desactivar las copias de seguridad automatizadas, no es posible la recuperación en un momento dado. Las instantáneas de base de datos manuales no se ven afectadas por la desactivación de las copias de seguridad automatizadas. Todas las instantáneas de base de datos manuales existentes seguirán estando disponibles para su restauración.

La desactivación de las copias de seguridad automatizadas reduce el tiempo de carga en aproximadamente un 25 % y reduce el espacio de almacenamiento necesario durante la carga. Si planea cargar los datos en una instancia de base de datos nueva que no contiene datos, desactivar las copias de seguridad es una forma sencilla de acelerar la carga y evitar utilizar el almacenamiento adicional que las copias de seguridad necesitan. Sin embargo, en algunos casos, es posible que tenga previsto cargar en una instancia de base de datos que ya contiene datos. Si es así, evalúe los beneficios de la desactivación de las copias de seguridad frente al impacto de perder la capacidad de realizar una recuperación a un momento dado. 

Las instancias de base de datos tienen copias de seguridad automatizadas activadas de forma predeterminada (con un periodo de retención de un día). Para desactivar las copias de seguridad automatizadas, configure el periodo de retención de copia de seguridad en cero. Después de la carga, puede volver a activar las copias de seguridad mediante la configuración del periodo de retención de copia de seguridad en un valor distinto de cero. Para activar o desactivar las copias de seguridad, Amazon RDS apaga la instancia de base de datos y, a continuación, la reinicia para activar o desactivar el registro de MySQL. 

Ejecute el comando `modify-db-instance` de la AWS CLI para establecer el valor cero como período de retención de copia de seguridad y aplicar el cambio inmediatamente. Al configurar cero como periodo de retención es necesario reiniciar la instancia de base de datos, por lo que debe esperar a que la operación se complete para poder continuar. Para obtener más información, consulte [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html).

Para Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --apply-immediately \
    --backup-retention-period 0
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --apply-immediately ^
    --backup-retention-period 0
```

Puede comprobar el estado de la instancias de base de datos con el comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) de la AWS CLI. En el siguiente ejemplo se muestra el estado de la instancia de base de datos de la instancia de base de datos `AcmeRDS`:

```
aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"
```

Cuando el estado de la instancia de base de datos es `available`, está listo para continuar con el siguiente paso. 

## Paso 5: cargar los datos
<a name="mysql-importing-data-any-source-load-data"></a>

Para leer las filas de los archivos sin formato en las tablas de base de datos, use la instrucción `LOAD DATA LOCAL INFILE` de MySQL.

**nota**  
Debe invocar el intérprete de comandos de `mysql` desde la misma ubicación donde existen los archivos o utilizar la ruta absoluta de los archivos cuando ejecute `LOAD DATA LOCAL INFILE`.

En el siguiente ejemplo, se muestra cómo cargar datos de un archivo denominado `sales.txt` en una tabla denominada `Sales` en la base de datos:

```
mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\';
Query OK, 1 row affected (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0
```

Para obtener más información sobre la instrucción `LOAD DATA`, consulte la [instrucción LOAD DATA](https://dev.mysql.com/doc/refman/8.4/en/load-data.html) en la documentación de MySQL.

## Paso 6: Activar las copias de seguridad automatizadas de Amazon RDS
<a name="mysql-importing-data-any-source-turn-on-automated-backups"></a>

Si desactiva las copias de seguridad automatizadas de Amazon RDS en el [paso 4](#mysql-importing-data-any-source-turn-off-automated-backups), una vez terminada la carga, active las copias de seguridad automatizadas estableciendo nuevamente el periodo de retención de copia de seguridad en el valor que había antes de la carga. Como se ha indicado en el paso 4, Amazon RDS reinicia la instancia de base de datos, por lo que debe estar preparado para una breve interrupción del servicio. 

El siguiente ejemplo ejecuta el comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) de la AWS CLI para activar las copias de seguridad automatizadas para la instancia de base de datos `AcmeRDS` y establecer el periodo de retención en un día:

Para Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --backup-retention-period 1 \
    --apply-immediately
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --backup-retention-period 1 ^
    --apply-immediately
```