Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> GaussDB(for MySQL)> Guía del usuario> Migración de datos> Migración de datos a GaussDB(for MySQL) mediante mysqldump
Actualización más reciente 2023-12-14 GMT+08:00

Migración de datos a GaussDB(for MySQL) mediante mysqldump

Mysqlpump no se recomienda porque puede dar como resultado un volcado de núcleo en escenarios de respaldo paralelos. Se recomienda Mysqldump en su lugar.

Preparación para la migración de datos

Puede acceder a instancias de GaussDB(for MySQL) a través de una red privada o una red pública.

  1. Prepare un ECS en la misma subred de VPC que la instancia de GaussDB(for MySQL) o vincule un EIP a la instancia de GaussDB(for MySQL).
    • Para conectarse a una instancia a través de un ECS, primero debe crearse un ECS.

      Compre un ECS e inicie sesión en el ECS.

    • Para conectarse a una instancia a través de un EIP, debe:
      1. Enlaza el EIP a la instancia. Para más detalles, consulte Vinculación de una EIP.
      2. Asegúrese de que el dispositivo local puede acceder al EIP que se ha enlazado a la instancia.
  2. Instale el cliente MySQL en el ECS o dispositivo preparado.

    Para obtener más información, consulte ¿Cómo puedo instalar el cliente MySQL?

    La versión del cliente MySQL debe ser la misma o posterior que la instalada en la instancia de GaussDB(for MySQL). La base de datos o cliente MySQL proporciona las herramientas mysqldump y mysql por defecto.

Exportación de datos

Antes de migrar los datos a GaussDB(for MySQL) es necesario exportarlos primero.

  • La herramienta de exportación debe coincidir con la versión del motor de base de datos.
  • La migración de la base de datos se realiza sin conexión. Antes de la migración, debe detener cualquier aplicación que utilice la base de datos de origen.
  1. Inicie sesión en el ECS preparado o en el dispositivo que puede acceder a las instancias de GaussDB(for MySQL).
  2. Utilice mysqldump para exportar los metadatos a un archivo SQL.

    Las bases de datos MySQL son necesarias para la gestión de GaussDB(for MySQL). Al exportar metadatos, no especifique --all-database o las bases de datos no estarán disponibles.

    mysqldump --databases <DB_NAME> --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u <DB_USER> -p -h <DB_ADDRESS> -P <DB_PORT> |sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/DEFINER[ ]*=.*EVENT/EVENT/' > <BACKUP_FILE>

    • DB_NAME indica el nombre de la base de datos que se va a migrar.
    • DB_USER indica el nombre de usuario de la base de datos.
    • DB_ADDRESS indica la dirección de la base de datos.
    • DB_PORT indica el puerto de la base de datos.
    • BACKUP_FILE indica el nombre del archivo al que se exportarán los datos.

    Introduzca la contraseña de la base de datos cuando se le solicite.

    Ejemplo:

    mysqldump --databases gaussdb --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u root -p -h 192.xx.xx.xx -P 3306 |sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/DEFINER[ ]*=.*EVENT/EVENT/' > dump-defs.sql

    Enter password:

    Después de ejecutar este comando, se generará el archivo dump-defs.sql.

  3. Utilice mysqldump para exportar datos a un archivo SQL.

    Las bases de datos MySQL son necesarias para la gestión de GaussDB(for MySQL). Al exportar metadatos, no especifique --all-database o las bases de datos no estarán disponibles.

    mysqldump --databases <DB_NAME> --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u <DB_USER> -p -h <DB_ADDRESS> -P <DB_PORT> -r <BACKUP_FILE>

    Para obtener más información sobre los parámetros del comando anterior, consulte 2.

    Introduzca la contraseña de la base de datos cuando se le solicite.

    Ejemplo:

    mysqldump --databases gaussdb --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u root -p -h 192.xx.xx.xx -P 3306 -r dump-data.sql

    Después de ejecutar este comando, se generará el archivo dump-data.sql.

Importación de datos

Puede utilizar un cliente para conectarse a una instancia de GaussDB(for MySQL) a través de un ECS o un dispositivo y, a continuación, importar el archivo SQL exportado a esa instancia.

Si la base de datos de origen invoca a activadores, procedimientos almacenados, funciones o eventos, debe establecer log_bin_trust_function_creators en ON para la base de datos de destino antes de importar datos.

  1. Importe metadatos a GaussDB(for MySQL).

    mysql -f -h <DB_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR>/dump-defs.sql

    • DB_ADDRESS indica la dirección IP de la instancia de GaussDB(for MySQL).
    • DB_PORT indica el puerto de la instancia de GaussDB(for MySQL).
    • BACKUP_DIR indica el directorio donde se almacenará dump-defs.sql.

    Ejemplo:

    mysql -f -h 172.xx.xx.xx -P 3306 -u root -p < dump-defs.sql

    Enter password:

  2. Importe datos a GaussDB(for MySQL).

    mysql -f -h <DB_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR>/dump-data.sql

    • DB_ADDRESS indica la dirección IP de la instancia de GaussDB(for MySQL).
    • DB_PORT indica el puerto de la instancia de GaussDB(for MySQL).
    • BACKUP_DIR indica el directorio donde se almacenará dump-data.sql.

    Ejemplo:

    mysql -f -h 172.xx.xx.198 -P 3306 -u root -p < dump-data.sql

    Enter password:

  3. Utilice la herramienta MySQL para conectarse a la instancia y ver el resultado.

    mysql> show databases;

    En este ejemplo, se ha importado la base de datos denominada my_db.

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | my_db              |
    | mysql              |
    | performance_schema |
    +--------------------+
    4 rows in set (0.00 sec)