Ir para o conteúdo

Como resolvo um erro de mysqldump no Amazon RDS MySQL ou MariaDB?

4 minuto de leitura
0

Quero solucionar um erro ao usar o mysqldump no Amazon Relational Database Service (Amazon RDS) para importar ou exportar dados.

Resolução

Use as etapas de resolução a seguir para resolver seu erro.

Erro "Couldn't start FLUSH TABLES WITH READ LOCK"

Quando você usa mysqpdump para exportar dados com a opção —master-data, 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. O Amazon RDS não oferece suporte a GLOBAL READ LOCK. Quando o MySQL executa um comando CHANGE MASTER TO, o nome e a posição do arquivo de log binário são registrados no arquivo mysqldump. Para obter mais informações, consulte ER_ACCESS_DENIED_ERROR no site do MySQL.

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 parada ou pegue o mysqldump de uma réplica de leitura do Amazon RDS. Isso permite que você obtenha a posição exata do log ao executar o comando SHOW SLAVE STATUS. Porque quando você interrompe a réplica, essa ação 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 do Amazon RDS MySQL dessa instância de banco de dados do RDS:

  1. Defina um valor para a retenção do log binário.

  2. Interrompe 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 o comando 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 em sua aplicação, execute o seguinte comando para iniciar a replicação novamente:

    CALL mysql.rds_start_replication;

    Se você não usar a réplica em sua aplicação, pode excluí-la.

Erros Max_allowed_packet

Esse erro ocorre quando o comando mysqldump solicita um pacote maior que o valor do parâmetro max_allowed_packet definido em sua instância de banco de dados do RDS. Para obter mais informações, consulte Packet too large (Pacote muito grande) no site do MySQL.

Para resolver esse erro, aumente o valor global de 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, é possível modificar o comando da seguinte forma:

$ mysqldump --max\_allowed\_packet=1G ......

Erros de privilégios SUPER e DEFINER

Esse erro indica um ou mais dos seguintes problemas:

Erros de conexão

Para obter mais informações sobre a causa e a resolução desse erro, consulte Como resolvo o erro "MySQL server has gone away" ao me conectar a uma instância de banco de dados MySQL do Amazon RDS?

Informações relacionadas

mysqldump no site do MySQL

Como faço para ativar funções, procedimentos e gatilhos para minha instância de banco de dados Amazon RDS para MySQL?