MySQL 5.7 é oficialmente substituído pelo MySQL 8.0

mysql-5-7-e-oficialmente-substituido-pelo-mysql-8-0

Após oito anos de disponibilidade geral, o MySQL 5.7 atinge oficialmente seu fim de vida (EOL) em outubro de 2023. A boa notícia é que o MySQL 8.0 oferece segurança aprimorada, aumentos potenciais no desempenho, novos tipos de dados e novos recursos como expressões de tabela comuns que oferecem aos desenvolvedores do WordPress uma caixa de ferramentas expandida.

O que há de novo no MySQL 8.0?

Algumas das mudanças no MySQL 8.0 requerem atenção antes da atualização. O MySQL tem uma lista mais detalhada de possíveis conflitos de configuração que você pode enfrentar durante a atualização. Veja abaixo:

Dicionário de dados: O MySQL 8.0 armazena metadados de banco de dados em tabelas transacionais, em vez de arquivos de metadados e tabelas não transacionais como nas versões anteriores. Se você tiver tabelas com nomes conflitantes em seu mysqlbanco de dados, será necessário renomeá-las ou eliminá-las antes de atualizar.

A execução da consulta a seguir no MySQL 5.7 deve identificar essas tabelas.


SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE LOWER(TABLE_SCHEMA) = 'mysql'
and LOWER(TABLE_NAME) IN
(
'catalogs',
'character_sets',
'check_constraints',
'collations',
'column_statistics',
'column_type_elements',
'columns',
'dd_properties',
'events',
'foreign_key_column_usage',
'foreign_keys',
'index_column_usage',
'index_partitions',
'index_stats',
'indexes',
'parameter_type_elements',
'parameters',
'resource_groups',
'routines',
'schemata',
'st_spatial_reference_systems',
'table_partition_values',
'table_partitions',
'table_stats',
'tables',
'tablespace_files',
'tablespaces',
'triggers',
'view_routine_usage',
'view_table_usage'
);

Tipos de dados obsoletos: O MySQL 5.7 suporta vários tipos de dados que se tornaram obsoletos nas versões anteriores, mas não são suportados no MySQL 8.0. Tabelas com colunas temporais usando o formato anterior à 5.6.4 precisarão ser atualizadas usando REPAIR_TABLE. Você pode verificar essas tabelas na linha de comando:

mysqlcheck -u root -p --all-databases --check-upgrade

Isso também verificará se você possui algum .frmarquivo órfão, bem como detectará quaisquer gatilhos com definidores ausentes ou vazios.

Particionamento: O suporte para tabelas particionadas usando um mecanismo de armazenamento sem suporte de particionamento nativo foi descontinuado no MySQL 5.7 e completamente removido no 8.0. Você pode identificar essas tabelas com esta consulta:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
AND CREATE_OPTIONS LIKE '%partitioned%';

O suporte ao particionamento genérico não é mais fornecido. No MySQL 8.0, os únicos mecanismos de armazenamento suportados com manipuladores de particionamento nativos são InnoDB e NDB. Você deve alterar quaisquer tabelas particionadas usando outros mecanismos de armazenamento antes de atualizar para o MySQL 8.0, ou a tabela não estará disponível para uso. A alteração pode consistir na conversão da tabela ou na remoção de seu particionamento.

Palavras-chave reservadas: O MySQL 8.0 possui palavras-chave que não foram reservadas anteriormente, o que pode fazer com que palavras-chave anteriormente usadas como identificadores se tornem ilegais. Veja a lista de palavras-chave reservadas no MySQL 8.0 .

Conjunto de caracteres padrão: O conjunto de caracteres padrão e o agrupamento foram alterados no MySQL 8.0. Os padrões para character_set_servere character_set_databaseforam alterados de latin1para utf8mb4e collation_servere collation_databasealterados de latin1_swedish_cipara utf8mb4_unicode_520_ci.

Novos bancos de dados e objetos usarão esses padrões, a menos que seja especificado de outra forma.

O MySQL 8.0 impõe verificações nos caracteres permitidos. Antes de atualizar, certifique-se de que os comentários de tabela, arquivo e índice não contenham caracteres proibidos. Você pode corrigir isso alterando o conjunto de caracteres ou removendo os caracteres incorretos.

Segurança e autenticação aprimoradas

A partir da versão 8.0, o MySQL introduziu um plugin de autenticação padrão mais seguro, o caching_sha2_password, fortalecendo a segurança em comparação com versões anteriores. Ao atualizar para o MySQL 8.0, a autenticação padrão mudará caching_sha2_passwordpara todas as novas contas de usuário. No entanto, as contas existentes criadas em mysql_native_passworduma versão anterior ainda serão autenticadas com esse plug-in para compatibilidade com versões anteriores.

Atualizando contas existentes

As contas existentes podem ser atualizadas através da linha de comando do MySQL, usando os comandos ALTER DEFAULT PLUGINou ALTER USER. O comando a seguir atualizará um único usuário para o novo plugin de autenticação padrão.

ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'password';

Na maioria dos casos, é preferível usar ALTER DEFAULT PLUGIN, pois isso permitirá atualizar vários usuários ao mesmo tempo. Os comandos abaixo atualizam a configuração do servidor dinamicamente e não requerem a reinicialização do serviço MySQL.

Atualize a autenticação MySQL no Linux/MacOS

Abra o cliente de linha de comando MySQL

mysql -u root -p

Digite a senha root quando solicitado

Execute a instrução ALTER DEFAULT PLUGIN:

ALTER DEFAULT PLUGIN AUTHORIZATION caching_sha2_password;
Opcionalmente, execute instruções ALTER USER individuais

Atualize a autenticação MySQL no Windows

Abra o prompt de comando/terminal. Mude para o diretório que contém os binários do MySQL (frequentemente C:\Program Files\MySQL\MySQL Server 8.0\bin). Execute o executável do cliente MySQL:

mysql.exe -u root -p

Digite a senha root quando solicitado

Execute a instrução ALTER DEFAULT PLUGIN:

ALTER DEFAULT PLUGIN AUTHORIZATION caching_sha2_password;

Opcionalmente, execute instruções individuais ALTER USER.

Desempenho e escalabilidade aprimorados

A eficiência da execução de consultas teve melhorias notáveis ??no MySQL 8.0, graças à melhor otimização no analisador de consultas e melhor armazenamento em cache de planos e resultados de consultas. Os resultados do teste mostram aumentos significativos de velocidade, com uma consulta para recuperar nomes de colunas para todas as tabelas do InnoDB executando centenas de vezes mais rápido no 8.0 em comparação com o MySQL 5.7.

Novos tipos de dados e recursos

Além das melhorias de desempenho e segurança, o MySQL 8.0 introduziu vários novos tipos de dados e recursos que expandem suas capacidades:

Suporte JSON: MySQL 8.0 adiciona suporte para a JSON_MERGE_PATCH ()função, que combina vários documentos JSON e retorna o resultado mesclado. Isso se comporta de maneira semelhante JSON_MERGE_PRESERVE, mas com duas exceções.

Funções de janela – As funções de janela permitem cálculos de linha que consideram linhas vizinhas, semelhantes às funções analíticas em outros bancos de dados. Existem atualmente 11 funções de janela não agregadas, incluindo LAG (), que calcula o valor de um argumento da linha atrasada em relação à linha atual em sua partição, e NTILE (), que calcula o número do intervalo da linha atual em sua partição. Muitas funções agregadas existentes também podem ser usadas como funções de janela no MySQL 8.0.

Expressões de tabela comuns (CTEs): – CTEs recursivos e não recursivos agora são suportados no MySQL. Em essência, as CTEs permitem definir subconsultas e tratá-las como tabelas ou visualizações temporárias dentro do escopo de uma instrução. CTEs são especificados usando uma WITHcláusula e pelo menos uma subseção que fornece uma subconsulta, produzindo um conjunto de resultados e associando um nome à subconsulta.

Conclusão

Há uma série de considerações importantes antes de atualizar do MySQL 5.7 para 8.0, mas os benefícios incluem melhor segurança e maior desempenho. Isso vai além do simples fato de que o 5.7 chegará ao seu EOL em apenas alguns meses.

Acesse a versão completa
Sair da versão mobile