Estoy intentando copiar mi base de datos mysql de un Amazon EC2 a un RDS:
Hice con éxito una parte mysqldump
de mi base de datos en mi carpeta raíz usando esto:
root@ip-xx-xx-xx-xx:~# mysqldump my_database -u my_username -p > my_database.sql
Luego intenté transferir este archivo .sql a mi nueva base de datos RDS:
root@ip-xx-xx-xx-xx:~# mysql my_database -u my_username -p -h
my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql
Desafortunadamente, recibo el siguiente mensaje de error:
You do not have the SUPER privilege and binary logging is enabled
(you *might* want to use the less safe log_bin_trust_function_creators variable)
Lo intenté de GRANT SUPER..
varias formas, pero también obtengo errores cuando trato de hacerlo. Escribir mysql > FLUSH privileges;
tampoco funciona.
Soy un principiante de mysql, lo siento por una pregunta tan fácil. Pensamientos
mysql
amazon-ec2
amazon-web-services
amazon-rds
grant
tim peterson
fuente
fuente
GRANT SUPER
en RDS. RDS no ofrece ninguna forma de obtener SÚPER privilegios.sql
archivo tiene unaCREATE FUNCTION
declaración que necesita un usuario privilegiado. ver estoRespuestas:
Según http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ , debe establecerlo
log_bin_trust_function_creators
en 1 en la consola de AWS para cargar su archivo de volcado sin errores.Si desea ignorar estos errores y cargar el resto del archivo de volcado, puede usar la
-f
opción:El
-f
informará errores, pero continuará procesando el resto del archivo de volcado.fuente
-f
no ayudó. Tengo el mismo error. Al usar su enlace, tengo problemas con la sintaxis de las herramientas RDS Cli. Es decir, cuando voy a cambiar los privilegios, aparece el siguiente error:rds-modify-db-parameter-group: Malformed input-Unrecognized option: -–parameters=name=log_bin_trust_function_creators, Usage: rds-modify-db-parameter-group DBParameterGroupName --parameters "name=value, value=value, method=value" [ --parameters "name=value, value=value, method=value" ...] [General Options]
./rds-modify-db-parameter-group mygroup -–parameters "name=log_bin_trust_function_creators, value=on, method=immediate" –I="accesskeyxxxxxx" –S="secretkeyxxxxxxxx"
sé que tiene que ser una cita o un problema de doble guión, pero ninguno de esos tipos de cambios está funcionando hasta ahora, ¡uf!-f
opción no hará que desaparezcan los errores, solo permitirá que se procesen las declaraciones SQL no infractoras en el archivo. Por lo que he leído, RDS se está ahogando con los procedimientos almacenados en el archivo de volcado. Intente crear un archivo de volcado sin los procedimientos de la tienda y vea si se carga bien:mysqldump --routines=0 --triggers=0 --events=0 my_database -u my_username -p
-f
opción. La segunda fase podría ser volcar solo rutinas / stred proc,fuente
El problema con los desencadenadores y los procedimientos almacenados en el archivo de volcado es que estas definiciones incluyen al usuario que debe crear el procedimiento almacenado, el DEFINER. Es muy probable que el usuario no exista en el RDS, por lo que se genera un error. Para poder cargar el archivo de volcado, puede eliminar el DEFINER usando sed o Perl y crear el procedimiento almacenado / disparador con el usuario que está realizando la importación.
Ahora debería poder cargar el archivo de volcado fijo
Como se dijo en la respuesta anterior, debe configurar el parámetro DB:
fuente
OldDefiner
@localhost
/ DEFINER =NewDefiner
@localhost
/ g' ./TargetSqlFile.sqlPara mí, solo había 2 comandos en mi archivo de volcado que requerían SUPER privilegios:
SET @@GLOBAL.gtid_purged
SET @@SESSION.SQL_LOG_BIN
De acuerdo con los documentos de mysqldump , puede desactivarlos con
--set-gtid-purged=OFF
.Luego, mirando al hombre mysqldump :
Así que decidí agregar
--set-gtid-purged=OFF
a mimysqldump
comando y luego pude importar con éxito el archivo de volcado resultante.fuente
Como se define en la documentación de AWS, los desencadenantes, los procedimientos y las funciones están deshabilitados de forma predeterminada porque el registro binario está habilitado de forma predeterminada. La desactivación básicamente hace que su base de datos sea más segura, pero si la ha protegido correctamente a través de la red, no importará.
Siga estos pasos y su problema se solucionará https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/
Además, no debe utilizar definidores al crear procedimientos. Un simple comando sed puede eliminarlo.
fuente
Además de editar
necesita eliminar todo DEFINER de su archivo de volcado, consulte el siguiente enlace para ver el comando SED que puede ayudar a limpiar su archivo de volcado sql.
https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243
fuente
Después de usar la respuesta arun-r, si el problema no se resuelve, debe modificar su archivo de volcado. Es simple.
En el archivo de volcado encontrará líneas como:
Tienes que reemplazar:
username_from_dumped_database
por su nombre de usuario en la base de datos rds.host_from_dumped_databse
por%
No sé por qué, pero este truco me funcionó. Un simple editor de texto es suficiente para hacer esto.
fuente