Todos los productos
Search
Centro de documentos

PolarDB:Restore to a self-managed MySQL database

Última actualización: Sep 17, 2026

PolarDB permite exportar una copia de seguridad de instantánea desde un clúster basado en discos en la nube como archivo CSV o SQL. Después, puede usar este archivo para restaurar los datos en una base de datos MySQL autogestionada.

Importante

El script de restauración en Python ya no recibe mantenimiento. Evalúe el script antes de utilizarlo.

Requisitos previos

Requisitos del clúster de PolarDB for MySQL

Importante

Para que la restauración sea exitosa, la versión de su base de datos autogestionada debe coincidir con la versión del clúster de origen de PolarDB for MySQL.

El clúster debe cumplir con los siguientes requisitos:

  • Clúster: esta función solo está disponible para la edición Cluster Edition de los clústeres de Enterprise Edition.

  • Región: China (Chengdu), China (Guangzhou), China (Qingdao), China (Beijing), China (Shanghai), China (Zhangjiakou), China (Hangzhou), China (Shenzhen), China (Hong Kong), Malaysia (Kuala Lumpur), Indonesia (Jakarta), Japan (Tokyo), Singapore, US (Silicon Valley), US (Virginia) y Germany (Frankfurt).

    Nota

    Esta función estará disponible en otras regiones próximamente.

  • Otros:

    • El usuario de RAM debe tener permisos para descargar archivos de copia de seguridad. Para otorgar permisos a un usuario de RAM, consulte RAM user permissions.

    • Los datos de copia de seguridad no están cifrados. No es posible descargar archivos de copia de seguridad desde clústeres de PolarDB cifrados.

    • Solo se permite una tarea de descarga (en ejecución o con errores) por clúster o instancia a la vez.

Requisitos de la base de datos MySQL autogestionada

Asegúrese de que el parámetro local_infile esté habilitado en su base de datos MySQL autogestionada.

Nota
  • Compruebe el estado del parámetro local_infile. El valor ON indica que el parámetro está habilitado: SHOW GLOBAL VARIABLES LIKE 'local_infile';

  • Habilite el parámetro local_infile: SET GLOBAL local_infile=1;

Límites

Se aplican los siguientes límites al restaurar datos desde una copia de seguridad descargada hacia una base de datos MySQL autogestionada:

  • No son compatibles los siguientes tipos de campos binarios: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB.

    Nota

    Si un conjunto de copia de seguridad contiene estos tipos de campos, se almacenan en formato hexadecimal. En ese caso, debe usar manualmente la función UNHEX dentro del comando load data local infile para convertir los valores hexadecinales a su formato binario original.

  • No son compatibles los siguientes tipos de campos espaciales: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON y GEOMETRYCOLLECTION.

Notas de uso

  • Utilice la misma versión de base de datos tanto en el clúster de PolarDB for MySQL como en la base de datos MySQL autogestionada. Las funciones incompatibles entre versiones distintas pueden provocar que la operación de restauración falle.

  • Antes de ejecutar el comando de restauración, asegúrese de que la base de datos de destino no contenga bases de datos ni tablas con los mismos nombres que las de los datos de la copia de seguridad. Esto evita conflictos y posibles pérdidas de datos. Elimine previamente cualquier base de datos o tabla que genere conflicto.

  • Interrumpir una tarea de restauración puede generar datos incompletos o provocar que la tarea termine con errores.

Procedimiento

Este ejemplo muestra cómo restaurar datos desde un archivo de copia de seguridad SQL de un clúster de PolarDB for MySQL hacia una base de datos MySQL autogestionada en una instancia de ECS (CentOS 7.8 de 64 bits). Adapte los comandos según su entorno específico.

  1. En la consola de PolarDB, utilice la función Download backup files para convertir el archivo de copia de seguridad del clúster al formato CSV o SQL. Luego, descargue el archivo en su computadora local o en una instancia de ECS.

  2. Descomprima el archivo de copia de seguridad.

    • Para archivos .tar.gz:

      tar -izxvf <compressed_package_name>.tar.gz -C <destination_directory>

      Ejemplo: descomprime backup.tar.gz en /home/mysql/data:

      tar -izxvf backup.tar.gz -C /home/mysql/data
    • Para archivos .tar.zst:

      zstd -d -c <compressed_package_name>.tar.zst | tar -xvf - -C <destination_directory>

      Ejemplo: descomprime backup.tar.zst en /home/mysql/data:

      zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
  3. (Opcional) Compruebe que el archivo de copia de seguridad se haya descomprimido en el directorio especificado (/home/mysql/data).

    ls -al /home/mysql/data
  4. Descargue el script de Python en su computadora local o en la instancia de ECS.

    Importante

    Este script es únicamente de referencia y podría requerir modificaciones para su entorno. Úselo con precaución.

  5. Otorgue permisos de ejecución al script restore_from_downloads.py mediante el siguiente comando:

    chmod +x ./restore_from_downloads.py
  6. Restaure los datos del archivo CSV o SQL en su base de datos autogestionada:

    python ./restore_from_downloads.py <path_to_csv_or_sql_directory> <database_endpoint> <database_port> <database_username> <database_password>

    Ejemplo:

    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    Nota

    Si cierra la ventana de la terminal, el script deja de ejecutarse. Para ejecutar el script en segundo plano, utilice el siguiente comando:

     nohup python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********" > app.log 2>&1 &

    Salida:

    [root@ixxx ~]# python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tesxxx"
    [INFO]: restore data from /home/mysql/data to 127.xxx:3306
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure database: zhxxx ends
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure table: zhxxx ends
    [INFO]: trying to exec: mysql -h127.xxx -P3306 -uroot -p#Tesxxx </home/mysql/data/zxxx
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore data [1/1] of table zhxxx.zhxxx
    Importante
    • Asegúrese de que su base de datos autogestionada no contenga ninguna base de datos con el mismo nombre que alguna de las incluidas en la copia de seguridad. De lo contrario, la operación de restauración fallará.

    • Si el nombre de usuario o la contraseña de la base de datos contienen caracteres especiales, como signos de número (#) o espacios, encierre el valor entre comillas dobles ("") cuando lo pase como parámetro en la línea de comandos. Por ejemplo, si la contraseña de la base de datos es #1234, debe pasar "#1234" en la línea de comandos.

    • Si recibe un error como Command 'python' not found, significa que Python no está instalado o no se encuentra en la variable PATH de su sistema. Compruebe la instalación de Python y el comando utilizado para ejecutarlo. Por ejemplo, si tiene instalado Python 3, puede usar python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".

    • Si aparece el mensaje de advertencia [Warning] Using a password on the command line interface can be insecure al ejecutar un script de Python, se debe a que el script utiliza el comando mysql -h<database endpoint> -P<database port> -u<database username> -p<database password> -e<SQL>. Este método no es seguro porque otros usuarios del sistema pueden ver la contraseña al ejecutar comandos como ps. Esta advertencia no afecta la operación de recuperación. Una vez completada la recuperación, puede iniciar sesión en la base de datos MySQL autogestionada y cambiar la contraseña de la cuenta.

    • Un error como Access denied for user 'xxx'@'xxx' (using password: YES) indica que el nombre de usuario o la contraseña de la base de datos son incorrectos. Compruebe que haya introducido las credenciales correctamente.