Eu tenho tentado mover um banco de dados existente do MySQL em execução no EC2 para uma nova instância do Amazon RDS (um experimento para ver se podemos avançar). Até agora, não está indo bem. Estou preso na importação inicial antes de configurar a replicação (instruções aqui ).
Eu preparei a instância do RDS conforme descrito e pode conectar-se a ela a partir da instância do EC2 usando o mysql. Eu executei o comando mysqldump como:
mysqldump --master-data --databases db1 db2 > dump.sql
Em seguida, tentou fazer o upload para o RDS com:
mysql -h RDSHost -P 3306 -u rdsuser --password=rdspassword < dump.sql
O primeiro problema estava na linha 22 do despejo:
ALTERAR MASTER PARA MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 106;
Esta linha causou erro ERROR 1227 (42000) at line 22: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
. Não tem problema, apenas comentei essa linha e espero corrigi-la mais tarde via mysql.rds_set_external_master (). Tentada a fazer upload, e tenho um erro muito semelhante: ERROR 1227 (42000) at line 7844: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
. A seção em torno da linha 7844 fica assim:
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`dev`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `jos_contributor_ids_view` AS select `jos_resource_contributors_view`.`uidNumber` AS `uidNumber` from `jos_resource_contributors_view` union select `jos_wiki_contributors_view`.`uidNumber` AS `uidNumber` from `jos_wiki_contributors_view` */;
Ao comentar as duas primeiras linhas e adicionar um 'CREATE' à terceira, consegui superar essa. Mas há toneladas de seções como esta. Existe alguma maneira de contornar isso sem toda a edição? Como uma opção para mysqldump
não produzir nada que precise de privilégios SUPER?
Parece que muitas pessoas tiveram problemas semelhantes, como ter que correr sed
contra a saída do mysqldump / mysqlbinlog! Também vou postar no fórum da AWS - realmente acho que o RDS deve ter uma maneira mais tolerante de importar do mysqldump, ou uma ferramenta específica que pode ser executada em um banco de dados existente para criar um despejo que é uma reclamação com a segurança do RDS. Apenas me perguntei se alguém tinha outras receitas ou truques que possam ajudar aqui.
Obrigado,
Dave
--masterdata=2
. A linha será comentada no despejo.
log_bin_trust_function_creators
parâmetro para 1, mas ainda assim recebo o mesmo erro na linha 7844. #