Migrar la base de datos existente a Amazon RDS
-
23-10-2019 - |
Pregunta
¿Cómo puedo importar la base de datos MySQL existente en Amazon RDS?
Solución
Hay dos formas de importar datos:
mysqldump
: Si su tamaño de datos es inferior a 1 GB, puede hacer uso directamente del comando mysqldump e importar sus datos a RDS.mysqlimport
: Si el tamaño de sus datos es más de 1 GB o en cualquier otro formato, puede comprimir los datos en archivos planos y cargar los datos utilizando el comando SQLIMPORT.
Otros consejos
encontré Esta página en los documentos de AWS Lo que explica cómo usar mysqldump y encenderlo en una instancia de RDS.
Aquí está su código de ejemplo (use en la línea de comandos/shell/ssh):mysqldump acme | mysql --host=hostname --user=username --password acme
dónde acme
es la base de datos que está migrando y hostname
/username
son los de su instancia de RDS.
Puede conectarse a RDS como si fuera un servidor MySQL normal, solo asegúrese de agregar su EC2 IPS a sus grupos de seguridad por Este foro publica.
Tuve que incluir la contraseña para el mysqldump local, por lo que mi comando terminó luciendo más así:mysqldump --password=local_mysql_pass acme | mysql --host=hostname --user=username --password acme
FWIW, acabo de completar moviendo mis bases de datos. solía esta referencia para los comandos mysql como crear usuarios y otorgar permisos.
¡Espero que esto ayude!
Soy un gran admirador del Sqlyog herramienta. Le permite conectarse a sus bases de datos de origen y objetivo y esquema y/o datos de sincronización. También he usado Sqlwave, pero cambió a Sqlyog. Llevo tanto tiempo desde que hice el interruptor que no recuerdo exactamente por qué cambié. De todos modos, esos son mis dos centavos. Sé que algunos se opondrán a mi sugerencia de las herramientas GUI de Windows para MySQL. De hecho, me gusta tanto el producto SQLYOG que lo llevo a cabo desde el vino (funciona sin problemas desde el vino en Ubuntu para mí). Este Blog podría ser útil.
Un resumen rápido de una publicación de ingeniería gosquecada:
Configuración + arranque
- Seleccione una ventana de mantenimiento y una ventana de copia de seguridad cuando la instancia esté en la carga más baja
- Elija Multi-AZ o no (muy recomendable para autofailover y mantenimiento)
- Arranca su instancia de RDS
- Configurar grupos de seguridad para que sus aplicaciones, etc. puedan acceder a la nueva instancia
Migración de datos + preparación
- Habilitar binlogging si aún no lo ha hecho
- Correr
mysqldump --single-transaction --master-data=2 -C -q dbname -u username -p > backup.sql
en el caso antiguo para tomar un volcado de los datos actuales - Correr
mysql -u username -p -h RDS_endpoint DB_name < backup.sql
Para importar los datos a su instancia de RDS (esto puede llevar un tiempo dependiendo de su tamaño de DB) - Mientras tanto, su instancia de producción actual sigue sirviendo consultas: aquí es donde el
master-data=2
y binlogging entra - En su archivo de backup.sql, tendrá una línea en la parte superior que se parece
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
- Obtenga la diferencia desde
backup.sql
Como un archivo SQLmysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
- Ejecute esas consultas en su instancia de RDS para actualizarla
cat output.sql | mysql -h RDS_endpoint -u username -p DB_name
- Obtenga la nueva posición de registro encontrando
end_log_pos
Al final de lo últimooutput.sql
expediente. - Obtenga la diferencia desde el último
output.sql
(como el paso 6) y repita los pasos 7 + 8.
La migración real
- Tenga todas sus aplicaciones listas para implementar rápidamente con la nueva instancia de RDS
- Obtén lo ultimo
end_log_pos
deoutput.sql
- Correr
FLUSH TABLES WITH READ LOCK;
en el viejo caso para detener todas las escrituras - Comience a implementar sus aplicaciones con la nueva instancia de RDS
- Ejecute los pasos 6-8 desde arriba para actualizar la instancia RDS con las últimas consultas al servidor anterior
Conclusión
Usando este método, tendrá una pequeña cantidad de tiempo (dependiendo de cuánto tiempo se tarda en implementar sus aplicaciones + cuántas escribe su instancia de MySQL, probablemente solo uno o dos minutos) con las escrituras rechazadas de su antiguo servidor, pero pero Tendrá una migración consistente sin tiempo de inactividad.
Una publicación completa y detallada que explica cómo (Gosquared) migramos a RDS con un tiempo de inactividad mínimo (incluida la depuración de errores) está disponible aquí: https://engineering.gosquared.com/migrating-mysql-to-amazon-rds.
Estoy completamente de acuerdo con @SanketDangi.
Hay dos formas de hacer esto una forma es como se sugiere usar cualquiera mysqldump
o mysqlimport
.
He visto casos en los que crea problemas mientras restaurar datos en la nube se corrompe.
Sin embargo, importar aplicaciones en la nube se ha vuelto mucho más fácil hoy en día. Intenta descargar su servidor DB en Public Cloud a través de Ravello.
Puede importar su servidor de base de datos en Amazon usando Ravello.
Divulgación: trabajo para Ravello.
La Guía de importación de datos de clientes de AWS RDS para MySQL está disponible aquí: http://aws.amazon.com/articles/2933
- Crear archivos planos que contienen los datos a cargar
- Detenga cualquier aplicación que acceda a la instancia de DB de destino
- Crea una instantánea de DB
- Deshabilitar copias de seguridad automatizadas de Amazon RDS
- Cargue los datos usando mySQLIMPORT
- Habilitar copias de seguridad automatizadas nuevamente
Si está utilizando el terminal, esto es lo que funcionó para mí:
mysqldump -u local_username -plocal_password local_db_name | mysql -h myRDS-at-amazon.rds.amazonaws.com -u rds-username -prds_password_xxxxx remote_db_name
Y luego utilicé MySQL Workbench (descarga gratuita) para verificar que estaba funcionando porque la línea de comando era estática después de presionar enviar, probablemente podría haber puesto al final para ver su salida
NOTA: No hay espacio después de -P
Ejemplo más simple:
# export local db to sql file:
mysqldump -uroot -p —-databases qwe_db > qwe_db.sql
# Now you can edit qwe_db.sql file and change db name at top if you want
# import sql file to AWS RDS:
mysql --host=proddb.cfrnxxxxxxx.eu-central-1.rds.amazonaws.com --port=3306 --user=someuser -p qwe_db < qwe_db.sql
Aquí están los pasos que he hecho y tuve éxito.
Tome el mysqldump de la base de datos necesaria.
mysqldump -u username -p dataBASEname--single-transaction --quick --lock-tablas = false> databasename-backup-$ (fecha +%f) .sql
(No olvide reemplazar el nombre de usuario como raíz, la mayoría de las veces y databasename -> db nombre de la base de datos que va a migrar a RDS)
Una vez solicitado, ingrese su contraseña.
Una vez hecho esto, inicie sesión en la instancia de RDS desde su servidor MySQL (asegúrese de que los grupos de seguridad estén configurados para permitir la conexión de EC2 a RDS)
mysql -h hostaddress -p 3306 -u rdsusername -p
(No olvide reemplazar a Hostaddress con la dirección de su instancia RDS y RDSUSERNMAE con nombre de usuario para su instancia de RDS, cuando se le solicite, también due la contraseña)
Encuentra que Hostaddress en -Conectividad y seguridad -> Punto final y puerto en la base de datos RDS de la consola AWS.
Una vez iniciado sesión, cree la base de datos usando comandos MySQL:
Crear base de datos DataBASEname; Q
Una vez que la base de datos se crea en RDS, importe el archivo SQL creado en el Paso 1:
mysql -h hostaddress -u rdsusername -p dataBASEname <backupFile.sql
Esto debería importar el archivo SQL a RDS y restaurar el contenido en la nueva base de datos.
Referencia de : https://k9webops.com/blog/migrate-an-existing-database-on-mysql-mariadb-to-an-already-running-rdsinstance-on-the-aws/