Esta página descreve problemas e incompatibilidades conhecidos que podem ocorrer depois de fazer um upgrade da versão principal do Cloud SQL para MySQL 5.7 para o Cloud SQL para MySQL 8.0.
Para mais informações sobre o upgrade da versão principal, consulte Fazer upgrade da versão principal do banco de dados no local. Para mais informações sobre registros de erros, consulte e Visualizar registros de erros.
Problemas de desempenho
As seções a seguir abordam problemas de desempenho conhecidos.
Problemas com a consulta SELECT DISTINCT
Se você usar a consulta SELECT DISTINCT no MySQL 8.0.18 até o MySQL 8.0.20, poderá ter uma redução no desempenho. Os tempos de execução da consulta podem levar três vezes mais tempo em comparação com o MySQL 5.7.
Para mais informações, consulte o bug do MySQL nº 99593.
Para resolver o problema, siga estas recomendações para solucionar problemas:
- Atualize para o MySQL 8.0.21, qualquer versão secundária posterior ou a versão mais recente.
- Se você estiver usando o MySQL 8.0.18 até o MySQL 8.0.20, atualize
o valor da flag de banco de dados
internal_tmp_mem_storage_engineparamemory:SET SESSION internal_tmp_mem_storage_engine='memory' ;
Problemas com consultas GROUP BY
Se você usar consultas SELECT... GROUP BY no MySQL 8.0.36 ou versões anteriores, poderá ter uma redução no desempenho e um aumento nos tempos de execução da consulta.
Isso pode acontecer se a consulta usar o TempTable
mecanismo.
Para mais informações, consulte o bug do MySQL nº 107700
Para resolver o problema, siga estas recomendações para solucionar problemas:
- Atualize para o MySQL 8.0.37, qualquer versão secundária posterior ou a versão mais recente.
- Se você estiver usando o MySQL 8.0.36 ou versões anteriores, atualize a
internal_tmp_mem_storage_engineflag de banco de dados para usar o mecanismo de memória em vez do mecanismo de tabela temporária:SET SESSION internal_tmp_mem_storage_engine='memory' ;
Problemas em linhas de execução de baixa simultaneidade
As instâncias criadas no MySQL 8.0.22 ou versões mais recentes que oferecem suporte a aplicativos cliente com linhas de execução de baixa simultaneidade podem apresentar problemas de desempenho e aumento nos tempos de execução da consulta.
O MySQL 8.0.22 introduziu a innodb_log_writer_threads
flag para melhorar o desempenho em sistemas de alta simultaneidade. Essa flag está ativada por padrão. Se você tiver instâncias criadas no MySQL 8.0.22 ou versões mais recentes que oferecem suporte a aplicativos cliente com linhas de execução de baixa simultaneidade, recomendamos desativar a flag innodb_log_writer_threads.
Para mais informações, consulte o bug do MySQL nº 93734.
Problemas com JOINS
Se você usar JOIN consultas com a
eq_ref
visualização em instâncias que usam o MySQL 8.0.29 até o MySQL 8.0.32, poderá
ter problemas de desempenho significativos.
Para mais informações, consulte o bug do MySQL nº 109361.
Para resolver o problema, atualize para o MySQL 8.0.33, qualquer versão secundária posterior ou a versão mais recente.
Problemas com a cláusula LIMIT e ORDER BY
Se você executar uma consulta com as cláusulas LIMIT e ORDER BY no MySQL 8.0.32 ou versões anteriores, poderá ter um problema de desempenho. Em alguns casos, um plano de consulta diferente pode ser usado no MySQL 8.0 em comparação com o MySQL 5.7 para a mesma consulta.
Para mais informações, consulte Mudanças no MySQL 8.0.33.
Para resolver o problema, atualize para o MySQL 8.0.33, qualquer versão secundária posterior ou a versão mais recente.
Problemas de vazamento de memória no MySQL 8.0
As seções a seguir abordam problemas conhecidos de vazamento de memória no MySQL 8.0 ou versões mais recentes. Esses problemas também podem afetar o desempenho da instância.
Vazamento de memória causado por consultas de intervalo
Se você usar o otimizador de intervalo em instâncias com o MySQL 8.0.16 até o MySQL 8.0.28, o consumo de memória poderá ser alto pelo arquivo de código e pela função memory/sql/THD::main_mem_root. Isso pode fazer com que a instância fique sem memória (OOM).
Para mais informações, consulte o bug do MySQL nº 105331.
Para resolver o problema, atualize para o MySQL 8.0.29, qualquer versão secundária posterior ou a versão mais recente.
Vazamento de memória associado a procedimentos armazenados
Se você executar uma consulta em um procedimento armazenado em instâncias com o MySQL 8.0.27 até 8.0.31, a consulta poderá consumir uma quantidade muito alta de memória no arquivo de código e na função memory/sql/sp_head::execute_mem_root.
Para mais informações, consulte o bug do MySQL nº 107327.
Para resolver o problema, atualize para o MySQL 8.0.32, qualquer versão secundária posterior ou a versão mais recente.
Vazamento de memória causado pelo acesso a uma visualização usando SELECT
Se você usar a consulta SELECT no MySQL 8.0.35 ou versões anteriores e o aplicativo usar várias chamadas de visualização, poderá ocorrer um vazamento de memória perceptível.
Além disso, se a visualização DEFINER estiver definida como root@'%' ou um usuário derivado da função cloudsqlsuperuser, poderá ocorrer um vazamento de memória. Isso ocorre porque a função cloudsqlsuperuser tem privilégios de revogação parcial.
Para mais informações, consulte o bug do MySQL nº 103133.
Para resolver o problema, siga estas recomendações para solucionar problemas:
- Atualize para o MySQL 8.0.36, qualquer versão secundária posterior ou a versão mais recente.
- Se você estiver usando o MySQL 8.0.35 ou versões anteriores, use um usuário separado
para a visualização
DEFINER, especificamente um usuário que não tenha privilégios de revogação parcial. Se você precisar usar o usuárioroot@'%'ou a funçãocloudsqlsuperuser, use-os apenas para processos administrativos e não para consultas de aplicativos. Se o vazamento de memória persistir, faça upgrade para o MySQL 8.0.36, qualquer versão secundária posterior ou a versão mais recente.
Problemas de replicação
A seção a seguir aborda problemas conhecidos relacionados à replicação.
Problemas com a replicação paralela
Se você usar a replicação paralela em uma réplica multithread que tenha o componente slave_preserve_commit_order ativado e a instância for usada para cargas de trabalho de gravação alta, as operações de instância poderão ser pausadas indefinidamente devido a um deadlock e ao acúmulo de tempo de atraso de replicação.
Esse problema é encontrado no MySQL 8.0.27 até o MySQL 8.0.32.
Para mais informações, consulte o bug do MySQL nº 95863 e o bug do MySQL nº 103636.
Para resolver o problema, siga estas recomendações para solucionar problemas:
- Atualize para o MySQL 8.0.33, qualquer versão secundária posterior ou a versão mais recente.
- Desative a replicação paralela para ajudar a verificar a causa desse problema e, em seguida, programe um upgrade adequado. Embora a desativação da replicação paralela possa resolver o problema temporariamente, ela não é recomendada como uma solução de longo prazo.
Problemas de privilégios
As seções a seguir discutem problemas conhecidos relacionados a privilégios.
Mudanças nos privilégios
O MySQL mudou os sistemas de segurança e gerenciamento de contas no MySQL 8.0.
Depois de fazer upgrade para o MySQL 8.0, os usuários criados no MySQL 5.7 podem não ter os mesmos privilégios e acesso que os usuários criados no MySQL 8.0. Como resultado, os usuários criados no MySQL 5.7 podem receber uma mensagem de erro de acesso negado nos seguintes cenários:
- Os usuários atualizados do MySQL 5.7 podem não ter
CREATE ROLEeDROP ROLEprivilégios, já que esses privilégios não existiam no MySQL 5.7. - Os usuários atualizados do MySQL 5.7 podem não conseguir executar o
KILLcomando, que agora precisa deCONNECTION_ADMINprivilégios para funcionar em MySQL 8.0.
Para mais informações, consulte todos os privilégios disponíveis no MySQL 8.0.
Uma mensagem de erro de exemplo é semelhante a esta:
ERROR 1227 (42000): Access denied; you need (at least one of) the GRANT OPTION privilege(s) for this operation
Não é possível atribuir diretamente nenhum desses privilégios atualizados a um usuário atual.
Para resolver esse problema, um administrador com os privilégios GRANT OPTION precisa redefinir os privilégios do usuário após o upgrade para concluir o upgrade da versão principal.
Para mais informações, consulte Fazer upgrade da versão principal do banco de dados no local.
Mudanças nos privilégios causam erro de acesso negado
Os usuários criados no MySQL 5.7 que fizeram upgrade para o MySQL 8.0 podem não conseguir se conectar ao banco de dados devido a um problema de privilégios. Nesses casos, os usuários podem receber a seguinte mensagem de erro:
Access denied for user 'USER_NAME'@'%' to database 'MY_DATABASE_NAME' ;
O MySQL 8.0.16 introduziu a flag de banco de dados partial_revokes e a ativou por padrão, possibilitando a revogação parcial dos privilégios do usuário.
Se os usuários criados no MySQL 5.7 foram definidos usando caracteres curinga, eles não poderão se conectar ao banco de dados. Os caracteres curinga não são mais compatíveis com o MySQL 8.0.16 ou versões mais recentes. Isso significa que o MySQL não consegue encontrar uma correspondência exata para o banco de dados e o usuário, o que pode fazer com que algumas atribuições de privilégios atuais sejam perdidas no upgrade.
Esse problema afeta o MySQL 8.0.16 ou versões mais recentes.
Para mais informações, consulte Configurar flags de banco de dados e Segurança e gerenciamento de contas.
Para resolver esse problema, um administrador precisa atribuir permissões manualmente aos usuários no MySQL 8.0.
Mudanças nos valores de flag entre o MySQL 5.7 e o MySQL 8.0
Ao fazer upgrade do MySQL 5.7 para o MySQL 8.0, alguns valores de flag de banco de dados podem ser alterados devido a uma mudança nos valores padrão entre as versões. Esse comportamento pode causar problemas de desempenho.
Para mais informações, consulte Novos valores padrão no MySQL 8.0.
Para resolver esse problema, verifique se todos os valores de flag de banco de dados atribuídos manualmente definidos no MySQL 5.7 ainda são aplicados após o upgrade para o MySQL 8.0 ou versões mais recentes. Recomendamos deixar os valores padrão atribuídos às flags do sistema.
A seguir
- Faça upgrade da versão principal do banco de dados com a migração de dados
- Faça upgrade da versão secundária do banco de dados