Importación de datos de una base de datos MySQL externa a una instancia de base de datos de Amazon RDS para MySQL - Amazon Relational Database Service

Importación de datos de una base de datos MySQL externa a una instancia de base de datos de Amazon RDS para MySQL

Puede importar datos desde una base de datos de MariaDB o MySQL existente a una instancia de base de datos de RDS para MariaDB o RDS para MySQL. Esto se lleva a cabo copiando la base de datos con mysqldump y canalizándola de forma directa en la instancia de base de datos de RDS para MariaDB o RDS para MySQL. La utilidad de línea de comandos mysqldump suele utilizarse para crear copias de seguridad y transferir datos de un servidor de MySQL o MariaDB a otro. Se incluye con el software cliente de MySQL y MariaDB.

En MariaDB 10.5, el cliente se llama mariadb-dump. A partir de MariaDB 11.0.1, debe usar mariadb-dump en lugar de mysqldump.

nota

Si importa o exporta grandes cantidades de datos con una instancia de base de datos de MySQL, lo más fiable y rápido para introducir y sacar los datos de Amazon RDS es mediante archivos de copia de seguridad xtrabackup y Amazon S3. Para obtener más información, consulte Restauración de una copia de seguridad en una instancia de base de datos de Amazon RDS para MySQL.

Amazon RDS no admite xtrabackup para MariaDB o mariabackup. Amazon RDS solo admite la importación de Amazon S3 para MySQL.

Un comando mysqldump típico para mover datos de una base de datos externa a una instancia de base de datos de Amazon RDS tiene el aspecto del ejemplo siguiente. Sustituya valores con su propia información. Para MariaDB 11.0.1 y versiones posteriores, sustituya mysqldump por mariadb-dump y mysql por mariadb.

mysqldump -u local_user \ --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u RDS_user \ --port=port_number \ --host=host_name \ -pRDS_password
importante

Asegúrese de no dejar un espacio entre la opción -p y la contraseña especificada.

Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en este ejemplo.

Asegúrese de conocer las siguientes recomendaciones y consideraciones:

  • Excluya los siguientes esquemas del archivo de volcado:

    • sys

    • performance_schema

    • information_schema

    La utilidad mysqldump y mariadb-dump excluye estos esquemas de forma predeterminada.

  • Si necesita migrar usuarios y privilegios, considere la posibilidad de usar una herramienta que genere el lenguaje de control de datos (DCL) para volver a crearlos, como la utilidad pt-show-grants.

  • Para realizar la importación, asegúrese de que el usuario que lo haga tenga acceso a la instancia de base de datos. Para obtener más información, consulte Control de acceso con grupos de seguridad.

Los parámetros son los siguientes:

  • -u local_user: use este parámetro para especificar un nombre de usuario. La primera vez que utilice este parámetro, especifique el nombre de una cuenta de usuario en la base de datos de MariaDB o MySQL local que identifique con el parámetro --databases.

  • --databases database_name: use este parámetro para especificar el nombre de la base de datos en la instancia de MySQL o MariaDB local que desea importar a Amazon RDS.

  • --single-transaction: use este parámetro para asegurarse de que todos los datos cargados desde la base de datos local sean coherentes en un momento determinado. Si hay otros procesos que modifican los datos mientras mysqldump los lee, el uso de este parámetro ayuda a mantener la integridad de los datos.

  • --compress: use este parámetro para reducir el consumo de ancho de banda mediante la compresión de los datos de la base de datos local antes de su envío a Amazon RDS.

  • --order-by-primary: use este parámetro para reducir el tiempo de carga mediante la ordenación de los datos de cada tabla según su clave primaria.

  • --routines: Úselo si existen rutinas como procedimientos almacenados o funciones en la base de datos que está copiando. Establezca el parámetro en 0, lo que excluye las rutinas durante el proceso de importación. Después, vuelva a crear manualmente las rutinas en la base de datos de Amazon RDS.

  • --triggers: Úselo si existen desencadenadores en la base de datos que va a copiar. Establezca el parámetro en 0, lo que excluye los desencadenadores durante el proceso de importación. Después, vuelva a crear manualmente los desencadenadores en la base de datos de Amazon RDS.

  • --events: Úselo si existen eventos en la base de datos que está copiando. Establezca el parámetro en 0, lo que excluye los eventos durante el proceso de importación. Después, vuelva a crear manualmente los eventos en la base de datos de Amazon RDS.

  • -plocal_password: use este parámetro para especificar una contraseña. La primera vez que use este parámetro, especifique la contraseña de la cuenta de usuario identificada con el primer parámetro -u.

  • -u RDS_user: use este parámetro para especificar un nombre de usuario. La segunda vez que utilice este parámetro, especifique el nombre de una cuenta de usuario en la base de datos predeterminada de la instancia de base de datos de MariaDB o MySQL identificada con el parámetro --host.

  • --port port_number: se utiliza para especificar el puerto de la instancia de base de datos de MySQL o MariaDB. El valor predeterminado es 3306, salvo que se haya cambiado al crear la instancia de base de datos.

  • --host host_name: se utiliza para especificar el nombre del sistema de nombres de dominio (DNS) del punto de conexión de la instancia de base de datos de Amazon RDS, por ejemplo, myinstance.123456789012.us-east-1.rds.amazonaws.com. Puede encontrar el valor del punto de conexión en los detalles de la instancia de base de datos en la consola de Amazon RDS.

  • -pRDS_password: use este parámetro para especificar una contraseña. La segunda vez que use este parámetro, debe especificar la contraseña de la cuenta de usuario identificada por el segundo parámetro -u.

Asegúrese de crear de forma manual procedimientos almacenados, desencadenadores, funciones o eventos en su base de datos de Amazon RDS. Si hay alguno de estos objetos en la base de datos que va a copiar, exclúyalo cuando ejecute mysqldump o mariadb-dump. Para hacerlo, incluya los siguientes parámetros con el comando mysqldump o mariadb-dump:

  • --routines=0

  • --triggers=0

  • --events=0

Ejemplo

En el siguiente ejemplo se copia la base de datos de ejemplo world del host local en una instancia de base de datos de RDS para MySQL. Sustituya valores con su propia información. Para copiar la base de datos de ejemplo en una instancia de base de datos de RDS para MariaDB, sustituya mysqldump por mariadb-dump y mysql por mariadb.

Para Linux, macOS o Unix:

sudo mysqldump -u local_user \ --databases world \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u rds_user \ --port=3306 \ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \ -pRDS_password

Para Windows:

Ejecute el siguiente comando en un símbolo del sistema que se haya abierto con un clic con el botón derecho en Símbolo del sistema del menú de programas de Windows y con la selección de Ejecutar como administrador. Sustituya valores con su propia información. Para copiar la base de datos de ejemplo en una instancia de base de datos de RDS para MariaDB, sustituya mysqldump por mariadb-dump y mysql por mariadb.

mysqldump -u local_user ^ --databases world ^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocal_password | mysql -u RDS_user ^ --port=3306 ^ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^ -pRDS_password
nota

Como práctica recomendada de seguridad, especifique credenciales distintas de las que se muestran en el ejemplo.