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

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

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 en MySQL de archivos de copia de seguridad desde S3.

La importación de archivos de copia de seguridad desde Amazon S3 es compatible con MySQL 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 Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa. 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?

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 elegir que el asistente cree automáticamente un rol de IAM nuevo en su cuenta cuando restaure la base de datos desde la AWS Management Console. 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. Le recomendamos que utilice la última versión de Percona XtraBackup. Puede instalar Percona XtraBackup desde el artículo sobre cómo descargar Percona XtraBackup.

aviso

Cuando crea una copia de seguridad de base de datos, es posible que XtraBackup guarde credenciales en el archivo xtrabackup_info. Asegúrese de examinar ese archivo para que la configuración tool_command no contenga información confidencial.

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 RDS for 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
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

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 incluido con cada copia de seguridad progresiva para identificar el directorio base y ordenar las copias de seguridad progresivas 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. Sin embargo, si restaura la base de datos mediante la AWS Management Console, le recomendamos que siga el procedimiento descrito en Consola y elija que RDS cree este nuevo rol de IAM por usted.

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

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

En el siguiente ejemplo, sustituya iam_user_id por su propio valor.

{ "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

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*" }, { // If your bucket is encrypted, include the following permission. This permission allows decryption of your AWS KMS key. "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region:customer_id:key/key_id*" ] } ] }
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

Puede importar datos desde Amazon S3 a una nueva instancia de base de datos de MySQL mediante la AWS Management Console, 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 AWS Management Console 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 copia de seguridad de base de datos.

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

  4. 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.
  5. En S3 destination (destino de S3):

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

    2. (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, 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.

  6. En Engine options (Opciones del motor):

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

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

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

      En AWS Management Console, solo está disponible la versión secundaria predeterminada. Puede actualizar su instancia de base de datos después de la importación.

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

  8. 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 operación de restauración pueda realizarse correctamente.

    También puede elegir Enable storage autoscaling (Habilitar el escalado automático del almacenamiento) para permitir el crecimiento futuro automáticamente.

  9. Elija ajustes adicionales según sea necesario.

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

Para importar datos desde Amazon S3 a una nueva instancia de base de datos de MySQL mediante la AWS CLI, llame el comando restore-db-instance-from-s3 con los siguientes parámetros. 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 operación de restauración pueda realizarse correctamente.

También puede utilizar el parámetro --max-allocated-storage para habilitar el escalado automático del almacenamiento y permitir el crecimiento futuro automáticamente.

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

ejemplo

Para Linux, macOS o:Unix

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m5.large \ --engine mysql \ --master-username admin \ --manage-master-user-password \ --s3-bucket-name amzn-s3-demo-bucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 8.0.32 \ --max-allocated-storage 1000

En:Windows

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --manage-master-user-password ^ --s3-bucket-name amzn-s3-demo-bucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 8.0.32 ^ --max-allocated-storage 1000

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.

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 importar datos de una exportación de instantáneas de base de datos a Amazon S3.

  • 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 8.0 y la versión secundaria predeterminada para su Región de AWS es 8.0.35, debe importar los datos en una instancia de base de datos de MySQL versión 8.0.35. 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 migrar de la versión 8.0 a la 5.7 ni migrar de la versión 8.0.32 a la versión 8.0.31.

  • No puede importar la versión 5.5 o 5.6 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.7 a una base de datos de RDS para 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 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:12M:autoextend". 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 aprovisionadas.