La restauración de bases de datos y tablas utiliza una copia de seguridad completa de los datos (instantánea) y los registros redo generados durante un periodo posterior. Usted puede restaurar los datos de bases de datos o tablas específicas a cualquier momento dentro del periodo de retención de registros. Una vez que identifique cuándo ocurrió una operación accidental, restaure las bases de datos o tablas afectadas al estado previo a dicha operación.
Requisitos previos
Debe existir un conjunto de copias de seguridad disponible. La recuperación a un momento dado primero restaura en el clúster una copia de seguridad completa tomada antes del momento seleccionado. Después, utiliza los registros redo para restaurar los datos incrementales hasta ese momento. Para aumentar la velocidad de restauración, habilite la copia de seguridad mejorada; esta función acorta el ciclo de copia de seguridad e incrementa su densidad.
Escenarios
Ediciones de clúster
La función de restauración de bases de datos y tablas es compatible con PolarDB Enterprise Edition y Standard Edition, pero requiere versiones de revisión específicas del clúster. A continuación se muestran las versiones de revisión mínimas necesarias para cada escenario.
Funciones básicas: versión de revisión mínima necesaria para admitir la restauración de bases de datos y tablas.
-
Clúster primario de GDN/nuevo proceso de restauración: versión de revisión mínima necesaria para usar la función en un clúster primario global database network (GDN) o aprovechar la optimización de velocidad de new restoration process.
NotaEl nuevo flujo de restauración de bases de datos y tablas es una mejora que optimiza la velocidad para restaurar datos en el clúster original. Para obtener más información sobre el mecanismo y la velocidad, consulte Overall Flow and Estimated Time.
|
Serie de edición |
Versión de MySQL |
Arquitectura |
Funciones básicas (versión de revisión mínima) |
Clúster primario de GDN/nuevo proceso de restauración (versión de revisión mínima) |
|
Enterprise Edition (Cluster Edition) |
5.6 |
X86 |
|
|
|
5.7 |
X86 |
|
|
|
|
8.0.1 |
X86 |
|
|
|
|
8.0.2 |
X86 |
|
|
|
|
Standard Edition |
5.6 |
X86 |
|
|
|
5.7 |
X86 |
|
|
|
|
8.0.1 |
X86 |
|
|
|
|
Yitian (ARM) |
|
|
||
|
8.0.2 |
X86 |
|
|
Consulte la versión del kernel de su clúster en la sección Configurations de la página Basic Information de su clúster de PolarDB for MySQL.
Otras limitaciones
La función de restauración de bases de datos y tablas presenta las siguientes limitaciones:
-
Clústeres:
Esta función no es compatible con los clústeres Multi-master Cluster (Limitless) Edition ni con los clústeres secundarios de un global database network (GDN).
-
No se admite la restauración de bases de datos y tablas en clústeres con más de 50 000 tablas cuando ocurre alguna de estas situaciones:
El tipo de almacenamiento es SSD empresarial (ESSD).
El clúster no tiene nodos de solo lectura (RO).
-
Esquemas e índices de tabla:
No se admiten las tablas que contienen un global secondary index (GSI).
No se admite la restauración de un columnstore index (IMCI).
Motores de almacenamiento: solo se restauran las tablas que utilizan el motor de almacenamiento InnoDB.
Estado de los datos: no es posible restaurar las tablas archivadas como cold data.
Si su clúster actual no es compatible con la función de restauración de bases de datos y tablas, utilice full restoration para restaurar los datos en un clúster nuevo y después aplique migrate the data hacia el clúster de origen.
Notas de uso
La restauración a un momento dado consiste en seleccionar un instante específico para restaurar las tablas de la base de datos. Tras este proceso, las tablas contienen únicamente los datos correspondientes a ese instante. Es decir, los datos de la tabla coinciden exactamente con el estado registrado en ese momento.
Actualmente, el método "Restore to a past point in time" de la restauración de bases de datos y tablas solo admite la recuperación desde un momento anterior de una copia de seguridad de nivel 1. No se admite la restauración desde una copia de seguridad de nivel 2.
-
La restauración de bases de datos y tablas falla en los siguientes escenarios:
El nombre de la base de datos o de la tabla especificado ya existe en el clúster original.
Entre el momento en que se genera el conjunto de copias de seguridad y el punto de restauración, se elimina la tabla que desea restaurar, o bien el clúster contiene una base de datos o tabla con el mismo nombre que la de destino.
-
Este proceso restaura únicamente las tablas especificadas. Asegúrese de seleccionar todas las tablas que necesita recuperar.
NotaSi no logra determinar todas las tablas involucradas, restaure los datos históricos de todo el clúster en uno nuevo y luego migre la información de vuelta al clúster original. Para obtener más información, consulte Restore from a backup set y Restore a cluster to a point in time.
-
Si no restaura una base de datos completa, recupere hasta 100 tablas de esa base de datos de forma simultánea. Al restaurar una base de datos completa, se recuperan todas sus tablas.
NotaRestaurar demasiadas tablas al mismo tiempo toma mucho tiempo, por lo que debe evitar hacerlo.
Cuando necesite recuperar una gran cantidad de tablas, restaure todos los datos históricos en un clúster nuevo. Consulte los pasos detallados en Restore from a backup set y Restore a cluster to a point in time.
-
Utilice la restauración de bases de datos y tablas incluso si el clúster contiene más de 50 000 tablas, incluidas las del sistema.
NotaEsta función se encuentra actualmente en versión canary. Para utilizarla, siga las indicaciones de Contact us a fin de unirse a la lista de permitidos y habilitarla.
-
Consulte la cantidad de tablas del clúster, incluidas las del sistema. Ejecute el siguiente comando SQL:
SELECT COUNT(*) FROM information_schema.tables; -
Consulte la cantidad de tablas del sistema en el clúster. Ejecute el siguiente comando SQL:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema IN ('sys', 'performance_schema', 'mysql', 'information_schema', '__recycle_bin__');
La restauración de bases de datos y tablas no admite la recuperación de triggers. Si la tabla original tiene un trigger, este no se restaura.
Tampoco se admite la recuperación de claves externas. Si la tabla original cuenta con una clave externa, esta no se restaura.
Restaure los datos durante las horas de menor actividad.
Paso 1: identificar el momento de la operación errónea
Si ya conoce el momento exacto de la operación accidental, omita este paso. En caso contrario, siga estas instrucciones para determinarlo.
Método 1: SQL Explorer
Si habilitó SQL Explorer en su clúster PolarDB for MySQL Cluster Edition, utilice esta función para consultar el registro de auditoría y determinar el momento de la operación accidental.
SQL Explorer es una función de pago. Los cargos se basan en la capacidad de almacenamiento y el periodo de retención del registro de auditoría. Para obtener más información, consulte SQL Explorer.
SQL Explorer solo muestra los registros SQL generados después de habilitar la función. Si SQL Explorer no estaba habilitado en el clúster cuando ocurrió el incidente, utilice el método 2.
Método 2: obtener y analizar sintácticamente los registros binarios de forma remota
-
Habilite el registro binario para el clúster. Consulte las instrucciones detalladas en Enable binary logging.
NotaDebe habilitar el registro binario del clúster antes de consultar y obtener dicho registro. De lo contrario, se devuelve el error
You are not using binary logging. -
Instale MySQL en su servidor local y conéctese al clúster mediante un cliente de MySQL. Consulte las instrucciones detalladas en Connect to a database cluster. Este tema utiliza un sistema Linux como ejemplo.
root@xxx:~# mysql -h xxx-polardb.rwlb.rds.aliyuncs.com -P3306 -utest_api -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is xxx Server version: 8.0.13 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> -
En el cliente de MySQL conectado, ejecute el siguiente comando para consultar la lista de archivos de registro binario del clúster de destino:
show binary logs;El comando devuelve el siguiente resultado:
+------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000005 | 2639 | +------------------+-----------+ 1 row in set (0.00 sec) -
Obtenga el registro binario de forma remota y guárdelo en su computadora local.
Este tema utiliza un sistema Linux como ejemplo. Primero, ejecute exit para salir del cliente de MySQL. Luego, ejecute el siguiente comando para obtener el registro binario.
mysqlbinlog -u<username> -p<password> -h<endpoint> --read-from-remote-server --raw mysql-bin.******Parámetro
Descripción
Ejemplo
-uNombre de usuario de la cuenta de base de datos en el clúster.
test_api-pContraseña de la cuenta. Si deja este campo vacío, el sistema le pedirá introducirla después de ejecutar el comando.
TestPwd123-hEndpoint público del clúster.
Nota-
Si el endpoint del clúster utiliza el puerto predeterminado 3306, omita el número de puerto. De lo contrario, añádalo al final del endpoint.
-
Actualmente, solo es posible obtener el registro binario de forma remota a través del endpoint público del nodo primario o de un endpoint de clúster (incluidos los endpoints de clúster predeterminados y personalizados). Para conocer cómo solicitar un endpoint público, consulte Manage endpoints.
test-polardb.rwlb.rds.aliyuncs.com--read-from-remote-serverIndica que el registro binario se lee desde el servidor de MySQL y no desde un archivo de registro local.
--read-from-remote-server--rawIndica que el archivo de registro binario obtenido se imprime en su formato original en lugar de mostrarse como datos analizados sintácticamente.
--rawmysql-bin.Nombre del archivo de registro binario de destino, tal como aparece en la columna
Log_namedel resultado del comandoshow binary logs;.mysql-bin.000005Por ejemplo:
mysqlbinlog -utest_api -p -htest-polardb.rwlb.rds.aliyuncs.com --read-from-remote-server --raw mysql-bin.000005 -
-
Ejecute el siguiente comando para consultar el contenido del archivo de registro binario mediante la herramienta
mysqlbinlog:mysqlbinlog -vv --base64-output=decode-rows mysql-bin.****** | moreNota-vv: muestra comandos SQL específicos y comentarios.--base64-output=decode-rows: analiza sintácticamente el archivo de registro binario.
El resultado es similar al siguiente:
[root@iZxxx ~]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000110 | more /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #160217 23:04:37 server id 2802943055 end_log_pos 107 Start: binlog v 4, server v 5.5.18.1-log created 160217 23:04:37 # at 107 #160217 23:04:38 server id 2802943055 end_log_pos 171 Query thread id=584632 exec time=0 error code=0 SET TIMESTAMP=1xxx8/*!*/; SET @@session.pseudo_thread_id=584632/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=2097152/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8 *//*!*/; SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; BEGIN /*!*/; # at 171 Una vez que obtenga el contenido del archivo de registro binario, proceda a analizar sintácticamente el registro binario.
Paso 2: iniciar la restauración de bases de datos y tablas
Inicie sesión en la consola de PolarDB. En el panel de navegación izquierdo, haga clic en Clusters. Seleccione la Region donde se despliega el clúster y luego haga clic en el ID del clúster para acceder a la página de detalles.
En el panel de navegación izquierdo, elija y haga clic en Restore Databases/Tables.
-
En el cuadro de diálogo que aparece, establezca Restoration Type en Point in Time y seleccione el momento obligatorio para Restoration Time.
NotaEl valor de Restoration Time debe encontrarse dentro del rango especificado por Restore To. Además, el conjunto de copias de seguridad completas más cercano al momento seleccionado debe contener la tabla que desea restaurar para que la función Point in Time funcione correctamente. El rango de momentos restaurables depende del periodo de retención configurado en Log Retention Period (Days) dentro de los ajustes de copia de seguridad. El valor predeterminado es de 7 días.
-
Según el consumo de IOPS, la restauración de bases de datos y tablas ofrece tres configuraciones de velocidad: Quick, Standard y Secure. Elija la configuración adecuada según sus necesidades. Para conocer el tiempo estimado de cada opción, consulte Reference test data for database and table restoration speed.
Quick: restaurar datos en el clúster actual consume una gran cantidad de IOPS. Utilice esta configuración durante las horas de menor actividad.
Standard (recomendada para especificaciones con más de 4 núcleos): restaurar datos en el clúster actual consume cierta cantidad de IOPS.
Secure (recomendada para especificaciones con 4 núcleos o menos): restaurar datos en el clúster actual consume muy pocos IOPS, aunque reduce significativamente la velocidad de restauración.
Para clústeres con especificaciones de 4 núcleos o menos, compruebe que los valores de
innodb_io_capacityyinnodb_io_capacity_maxcoincidan con dichas especificaciones. Consulte las especificaciones de clúster y el máximo de IOPS admitido en Compute node specifications for Enterprise Edition y Compute node specifications for Standard Edition, y utilice la velocidad de restauración Secure.
-
En el lado izquierdo de la sección Databases and Tables to Restore, seleccione la base de datos de destino que desea restaurar. En el lado derecho, seleccione las tablas de destino.
NotaSi no especifica nombres nuevos para la base de datos o las tablas, el sistema los genera automáticamente y añade
_backupal nombre original. Por ejemplo, si la tabla original estest, el nombre generado automáticamente serátest_backup.Si selecciona una base de datos de destino sin especificar tablas, se restauran de forma predeterminada todos los datos de dicha base de datos.
Una vez que confirme la selección de las bases de datos y tablas que desea restaurar, haga clic en OK.
Paso 3: comparar los datos
Cuando finalice la restauración de bases de datos y tablas, inicie sesión en el clúster para comparar y comprobar los datos.
Acceda al clúster mediante Data Management Service (DMS), otro cliente o la línea de comandos. Este tema describe cómo iniciar sesión en el clúster mediante DMS para comprobar los datos. Para conocer otros métodos, consulte Connect to a cluster.
En la esquina superior derecha de la página Basic Information del clúster, haga clic en Log on to Database.
En el cuadro de diálogo que aparece, introduzca Database Account y Database Password del clúster, y luego haga clic en Search.
Después de iniciar sesión en DMS, actualice la página. En el panel de navegación izquierdo, haga clic en Logged in instance.
En la lista Logged in instance, haga clic en el nombre del clúster de destino. Luego, busque el nombre de la base de datos de destino y haga doble clic en él para gestionarla.
Localice los datos afectados por la operación accidental. Compruebe si se restauraron al estado previo a dicha operación y si el resto de los datos también coincide con ese estado.