Estou usando uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) que está executando MySQL ou MariaDB. Estou usando o mysqldump para importar ou exportar dados e estou recebendo um erro. Como faço para solucionar esses erros?
Breve descrição
Você pode receber os seguintes erros ao usar o mysqldump:
- Erros Couldn't execute FLUSH TABLES WITH READ LOCK
- Erros Max_allowed_packet
- Erros de privilégio(s) SUPER e DEFINER
- Erros de conexão perdidos ou interrompidos
Resolução
Erro Couldn't execute FLUSH TABLES WITH READ LOCK
Ao usar a opção**--master-data** com mysqldump para exportar dados, você pode receber um erro semelhante ao seguinte:
"mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'user'@'%' (using password: YES) (1045)"
A opção**--master-data** adquire um FLUSH TABLES WITH READ LOCK. Isso exige privilégios SUPER que o usuário principal do Amazon RDS não tem, e o Amazon RDS não oferece suporte ao GLOBAL READ LOCK. Quando o MySQL executa uma instrução CHANGE MASTER TO para obter informações de log, o nome e a posição (coordenadas) do arquivo de log binário são registrados no arquivo mysqldump. Para obter mais informações, consulte a documentação do MySQL para ER_ACCESS_DENIED_ERROR.
Para resolver esse erro, remova a opção --master-data. Ao remover essa opção, você não recebe uma posição de log exata no mysqldump. Para contornar esse problema, pegue o mysqldump quando sua aplicação estiver parado ou pegue o mysqldump de uma réplica de leitura do Amazon RDS. Isso permite que você obtenha a posição exata do log executando SHOW SLAVE STATUS porque a interrupção da réplica confirma que as posições do log binário não mudam. Siga estas etapas para criar um mysqldump a partir de uma réplica de leitura MySQL do Amazon RDS dessa instância de banco de dados do RDS.
1.Defina um valor para a retenção do log binário.
2.Pare a replicação executando o seguinte comando na réplica de leitura:
CALL mysql.rds_stop_replication;
3.Pegue o mysqldump sem --master-data=2 da réplica de leitura.
4.Execute SHOW SLAVE STATUS na réplica e capture o Master_Log_File e o Exec_Master_Log_Pos.
5.Se você usar a réplica para sua aplicação, inicie a replicação novamente usando o seguinte procedimento armazenado:
CALL mysql.rds_start_replication;
Se você não usar a réplica para sua aplicação, poderá excluí-la.
Max_allowed_packet errors
Ao usar mysqldump para exportar dados, você pode receber um erro semelhante ao seguinte:
"Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `tb_name` at row: XX"
Esse erro ocorre quando o comando mysqldump solicita um pacote maior que o valor do parâmetro max_allowed_packet definido para sua instância de banco de dados do RDS. Para obter mais informações, consulte a documentação do MySQL para Pacote muito grande.
Para resolver erros max_allowed_packet, aumente o valor global para max_allowed_packet ou configure o max_allowed_packet no mysqldump para essa sessão (em vez de globalmente para todo o banco de dados). Por exemplo, você pode modificar o comando da seguinte forma:
$ mysqldump --max_allowed_packet=1G ......
Erros de privilégio(s) SUPER e DEFINER
Ao usar o mysqldump para importar dados para uma instância de banco de dados do RDS que esteja executando o MySQL ou o MariaDB, você pode receber um erro semelhante ao seguinte:
"ERROR 1227 (42000) at line XX: Access denied; you need (at least one of) the SUPER privilege(s) for this operation"
Esse erro indica um ou mais dos seguintes problemas:
Erros de conexão perdidos ou interrompidos
Ao usar o mysqldump para importar dados, você pode receber um erro semelhante ao seguinte:
"mysqldump: error 2013: lost connection to mysql server during query when dumping table"
-ou-
"mysqldump: Aborted connection XXXXXX to db: 'db_name' user: 'master_user' host: 'XXXXXXX' (Got timeout writing communication packets)"
Para obter mais informações sobre a causa e a resolução desse erro, consulte How do I resolve the error "MySQL server has gone away" when connecting to my Amazon RDS MySQL DB instance?
Informações relacionadas
Documentação do MySQL para mysqldump
Como faço para ativar funções, procedimentos e gatilhos para minha instância de banco de dados Amazon RDS for MySQL?