Restauración de una copia de seguridad en una instancia de base de datos MySQL en Amazon RDS - Amazon Relational Database Service

Restauración de una copia de seguridad en una instancia de base de datos MySQL en Amazon RDS

Amazon RDS admite la importación de bases de datos MySQL mediante archivos de copia de seguridad. Puede crear una copia de seguridad de la base de datos y, a continuación, almacenarla 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.

La situación descrita en esta sección restaura una copia de seguridad de una base de datos en las instalaciones. Puede utilizar esta técnica para bases de datos en otras ubicaciones, como Amazon EC2 o los servicios en la nube que no son de AWS, siempre que se pueda acceder a la base de datos.

Puede encontrar la situación admitida en el siguiente diagrama.


            Importación por parte de MySQL de archivos de copia de seguridad de la arquitectura S3

La importación de archivos de copia de seguridad desde Amazon S3 se admite para MySQL versión 5.6, 5.7 y 8.0. La importación de archivos de copia de seguridad desde Amazon S3 está disponible en todas las regiones de AWS.

Recomendamos importar la base de datos a Amazon RDS mediante archivos de copia de seguridad si la base de datos en las instalaciones puede estar sin conexión mientras se crea, se copia y se restaura el archivo de copia de seguridad. Si la base de datos no puede estar sin conexión, puede usar la replicación de registro binario (binlog) para actualizar su base de datos una vez que haya migrado a Amazon RDS a través de Amazon S3 tal como se explica en este tema. Para obtener más información, consulte Replicación con una instancia de base de datos MySQL o MariaDB que se ejecuta fuera de Amazon RDS. También puede utilizar AWS Database Migration Service para migrar su base de datos a Amazon RDS. Para obtener más información, consulte ¿Qué es AWS Database Migration Service?

Limitaciones y recomendaciones para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS

A continuación se muestran algunas limitaciones y recomendaciones para importar archivos de copia de seguridad de Amazon S3:

  • Solo puede importar sus datos a una nueva instancia de base de datos y no a una existente.

  • Debe usar Percona XtraBackup para crear la copia de seguridad de su base de datos local.

  • No puede migrar de una base de datos de origen que tenga tablas definidas fuera del directorio de datos de MySQL predeterminado.

  • Debe importar sus datos a la versión secundaria predeterminada de su versión principal de MySQL en su región de AWS. Por ejemplo, si su versión principal es MySQL 5.6 y la versión secundaria predeterminada para su región de AWS es 5.6.44, debe importar los datos en una instancia de base de datos de MySQL versión 5.6.44. Puede actualizar su instancia de base de datos después de la importación. Para obtener información acerca de cómo determinar la versión secundaria predeterminada, consulte Versiones de MySQL en Amazon RDS.

  • No se admite la migración a versiones anteriores en el caso de las versiones principales y secundarias. Por ejemplo, no puede realizar la migración de la versión 5.7 a la 5.6, y no puede efectuar la migración de la versión 5.6.39 a la versión 5.6.37.

  • No puede importar la versión 5.5 de una base de datos MySQL.

  • No puede importar una base de datos de MySQL en las instalaciones desde una versión principal a otra. Por ejemplo, no puede importar una base de datos de MySQL 5.6 a una base de datos de Amazon RDS MySQL 5.7 o 8.0. Del mismo modo, no puede importar una base de datos de MySQL 5.7 a una base de datos de Amazon RDS MySQL 8.0. Puede actualizar su instancia de base de datos una vez que complete la importación.

  • No puede restaurar desde una base de datos de origen cifrada, pero puede restaurar a una instancia de base de datos de Amazon RDS cifrada.

  • No puede restaurar desde una copia de seguridad cifrada en el bucket de Amazon S3.

  • No se puede restaurar desde un bucket de Amazon S3 situado en una región de AWS que no coincide con la de la instancia de base de datos de Amazon RDS.

  • La importación de Amazon S3 no es compatible en la clase de instancia de base de datos db.t2.micro. Sin embargo, puede restaurar en 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 .

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

  • Al restaurar la base de datos, la copia de seguridad se copia y, a continuación, se extrae en la instancia de base de datos. Por lo tanto, aprovisione un espacio de almacenamiento para la instancia de base de datos que sea igual o mayor que la suma del tamaño de la copia de seguridad, más el tamaño de la base de datos original en el disco.

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

  • Las cuentas de usuario no se importan automáticamente. Guarde sus cuentas de usuario de su base de datos de origen y añádalas a su nueva instancia de base de datos posteriormente.

  • Las funciones no se importan automáticamente. Guarde sus funciones de su base de datos de origen y añádalas a su nueva instancia de base de datos posteriormente.

  • Los procedimientos almacenados no se importan automáticamente. Guarde sus procedimientos almacenados de su base de datos de origen y añádalos a su nueva instancia de base de datos posteriormente.

  • La información de zona horaria no se importa automáticamente. Registre la información de zona horaria para su base de datos de origen y establezca la zona horaria de su nueva instancia de base de datos posteriormente. Para obtener más información, consulte Zona horaria local para las instancias de bases de datos MySQL.

  • El parámetro innodb_data_file_path debe configurarse con un solo archivo de datos que utilice el nombre de archivo de datos predeterminado "ibdata1". Las bases de datos con dos archivos de datos, o con un archivo de datos con un nombre diferente, no se pueden migrar con este método.

    A continuación se muestran ejemplos de nombres de archivo no permitidos: "innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend" y "innodb_data_file_path=ibdata01:50M:autoextend".

  • El tamaño máximo de la base de datos restaurada es el tamaño máximo admitido menos el tamaño de la copia de seguridad. Por lo tanto, si el tamaño máximo de la base de datos admitido es 64 TiB y el tamaño de la copia de seguridad es 30 TiB, el tamaño máximo de la base de datos restaurada será de 34 TiB, como en el ejemplo siguiente:

    64 TiB - 30 TiB = 34 TiB

    Para obtener información sobre el tamaño máximo de base de datos admitido en Amazon RDS for MySQL, consulte Almacenamiento de SSD de uso general y Almacenamiento de SSD de IOPS provisionadas.

Información general de configuración para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS

Estos son los componentes que necesita configurar para importar archivos de copia de seguridad de Amazon S3 a Amazon RDS:

  • Un bucket de Amazon S3 para almacenar los archivos de copia de seguridad.

  • una copia de seguridad de su base de datos local creada por Percona XtraBackup.

  • Un rol de AWS Identity and Access Management (IAM) para permitir a Amazon RDS el acceso al bucket.

Si ya tiene un bucket de Amazon S3, puede utilizarlo. Si no dispone de un bucket de Amazon S3, puede crear uno nuevo. Si desea crear un bucket, consulte Creación de un bucket.

Use la herramienta Percona XtraBackup para crear su copia de seguridad. Para obtener más información, consulte Creación de su copia de seguridad de base de datos.

Si ya tiene un rol de IAM, puede utilizarlo. Si no dispone de un rol de IAM, puede crear uno manualmente. También puede hacer que el asistente cree automáticamente un rol de IAM en su cuenta cuando restaure la base de datos desde la Consola de administración de AWS. Si desea crear un nuevo rol de IAM manualmente o asociar políticas de confianza y de permisos a un rol de IAM existente, consulte Creación manual de un rol de IAM. Si desea hacer que se cree un nuevo rol de IAM automáticamente, siga el procedimiento en Consola.

Creación de su copia de seguridad de base de datos

Use el software Percona XtraBackup para crear su backup. Puede instalar Percona XtraBackup desde el artículo sobre cómo descargar Percona XtraBackup.

nota

Para la migración de MySQL 8.0, debe usar Percona XtraBackup 8.0. Percona XtraBackup 8.0.12 y versiones posteriores admiten la migración de todas las versiones de MySQL. Si migra a Amazon RDS MySQL 8.0.20 o posterior, debe usar Percona XtraBackup 8.0.12 o posterior.

Para las migraciones de MySQL 5.7, también puede usar Percona XtraBackup 2.4. Para migraciones de versiones de MySQL anteriores, también puede usar Percona XtraBackup 2.3 o 2.4.

Puede crear una copia de seguridad completa de sus archivos de base de datos MySQL mediante Percona XtraBackup. 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 su base de datos con Percona XtraBackup, consulte la documentación de Percona XtraBackup y el artículo sobre el archivo binario xtrabackup en el sitio web de Percona.

Creación de una copia de seguridad completa con Percona XtraBackup

Si desea crear una copia de seguridad completa de los archivos de base de datos de MySQL que se pueda restaurar desde Amazon S3, use la utilidad Percona XtraBackup (xtrabackup) para crear una copia de seguridad de la base de datos.

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 su backup en un solo archivo (que se puede dividir posteriormente si es necesario), puede guardar el backup en uno de los siguientes formatos:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

nota

Percona XtraBackUp 8.0 solo admite Percona xbstream para la compresión.

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos Gzip.

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

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos tar.

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

El siguiente comando crea una copia de seguridad de la base de datos MySQL dividido en varios archivos xbstream.

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

Uso de copias de seguridad incrementales con Percona XtraBackup

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 lugar de eso, puede ahorrar una cantidad considerable de tiempo copiando los directorios y archivos de backup existentes en su bucket de Amazon S3. Para obtener más información acerca de la creación de copias de seguridad incrementales con Percona XtraBackup, consulte el artículo acerca de la copia de seguridad incremental.

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 el backup completo y también todos los directorios y archivos del backup 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 que se incluye 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

Amazon RDS consume sus archivos de copia de seguridad en función del nombre de archivo. Asigne la extensión de archivo adecuada a los archivos de copia de seguridad según el formato de archivo: por ejemplo, .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. Utilice la opción split al ejecutar el comando xtrabackup para asegurarse de que la escritura y la asignación de nombre de sus archivos de backup se realice en el orden correcto.

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 su base de datos: --tables, --tables-exclude, --tables-file, --databases, --databases-exclude o --databases-file.

Amazon RDS admite copias de seguridad incrementales creadas con Percona XtraBackup. Para obtener más información acerca de la creación de copias de seguridad incrementales con Percona XtraBackup, consulte el artículo acerca de la copia de seguridad incremental.

Creación manual de un rol de IAM

Si no dispone de un rol de IAM, puede crear uno manualmente. También puede hacer que el asistente cree automáticamente un nuevo rol de IAM cuando restaure la base de datos desde la Consola de administración de AWS. Si desea hacer que se cree un nuevo rol de IAM automáticamente, siga el procedimiento en Consola.

Para crear manualmente un nuevo rol de IAM para importar su base de datos desde Amazon S3, debe crear 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 backup desde Amazon S3, use Para obtener más información acerca de cómo crear un rol, consulte Crear un rol para delegar permisos a un servicio de AWS.

También puede hacer que el asistente cree automáticamente un rol de IAM nuevo cuando restaure la base de datos desde la Consola de administración de AWS. Si desea hacer que se cree un nuevo rol de IAM automáticamente, siga el procedimiento en Consola

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.

ejemplo Política de confianza para importar desde Amazon S3

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

ejemplo Política de permisos para importar desde Amazon S3: permisos de usuario de IAM

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

ejemplo Política de permisos para importar desde Amazon S3: permisos de rol

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::bucket_name/prefix*" } ] }
nota

Si incluye un prefijo del nombre de archivo, incluya el asterisco (*) 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

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

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

  2. En la esquina superior derecha de la consola de Amazon RDS, elija la región de AWS en la que se va a crear su instancia de base de datos. Elija la misma región de AWS que el bucket de Amazon S3 que contiene su backup de base de datos.

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

  4. Elija Restore from S3 para lanzar el asistente.

    El asistente se abre en la página Select engine.

  5. En la página Select engine (Seleccionar motor), elija MySQL y, a continuación, Next (Siguiente).

    Aparecerá la página Specify source backup details.

    
                        La página donde especifica los detalles de su copia de seguridad de base de datos de origen
  6. En la página Specify source backup details, especifique la información del backup.

    1. En Source engine, seleccione mysql.

    2. En Source engine version, seleccione la versión de MySQL de su base de datos de origen.

    3. En S3 bucket, elija su bucket de Amazon S3.

    4. (Opcional) En S3 folder path prefix (Prefijo de ruta de carpeta de S3), escriba un prefijo de ruta de archivo para los archivos almacenados en el bucket de Amazon S3. Si no especifica un prefijo, RDS creará su instancia de base de datos con todos los archivos y carpetas de la carpeta raíz del bucket de S3. Si especifica un prefijo, RDS creará su 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, suponga que almacena los archivos de backup en S3 en una subcarpeta denominada copias de seguridad y que tiene varios conjuntos de archivos de backup, cada uno en su propio directorio (gzip_backup1, gzip_backup2, etc.). En este caso, debe especificar un prefijo de backups/gzip_backup1 para restaurar a partir de los archivos de la carpeta gzip_backup1.

    5. En Create a new role (Crear un nuevo rol), elija Yes (Sí) para crear un nuevo rol de IAM en su cuenta o elija No para seleccionar un rol de IAM existente.

    6. En IAM role (Rol de IAM), seleccione un rol de IAM existente o, en IAM role name (Nombre de rol de IAM), especifique el nombre para un nuevo rol de IAM. Puede hacer que se cree automáticamente un rol de IAM eligiendo Yes (Sí) en Create a New Role (Crear un nuevo rol).

  7. Elija Next para continuar. Aparecerá la página Specify DB details.

    En la página Specify DB Details (Especificar detalles de base de datos), 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.

    nota

    Asegúrese de asignar memoria suficiente para su nueva instancia de base de datos de modo que la restauración pueda realizarse correctamente. También puede asignar memoria adicional para el crecimiento futuro.

  8. Elija Next para continuar. Aparecerá la página Configure advanced settings.

    Especifique la información adicional que Amazon RDS necesita para lanzar 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.

  9. Elija Create database (Crear base de datos).

Para importar datos desde Amazon S3 a una nueva instancia de base de datos MySQL mediante la AWS CLI, llame al comando restore-db-instance-from-s3 con los parámetros siguientes. Para obtener más información acerca de cada ajuste, consulte Configuración de instancias de base de datos.

nota

Asegúrese de asignar memoria suficiente para su nueva instancia de base de datos de modo que la restauración pueda realizarse correctamente. También puede asignar memoria adicional para el crecimiento futuro.

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

ejemplo

Para Linux, macOS o Unix:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m4.large \ --engine mysql \ --master-username masterawsuser \ --master-user-password masteruserpassword \ --s3-bucket-name mybucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.40

Para Windows:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m4.large ^ --engine mysql ^ --master-username masterawsuser ^ --master-user-password masteruserpassword ^ --s3-bucket-name mybucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 5.6.40

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.