Diretrizes gerais do MySQL

Consulte Requisitos do sistema para versões compatíveis do MySQL.

Adobe forte A recomenda que você observe o seguinte padrão ao configurar seu banco de dados:

  • O Adobe Commerce usa Acionadores do banco de dados MySQL para melhorar o acesso ao banco de dados durante a reindexação. Elas são criadas quando o modo do indexador é definido como programação. O aplicativo não oferece suporte a acionadores personalizados no banco de dados porque esses acionadores podem introduzir incompatibilidades com versões futuras do Adobe Commerce.
  • Familiarize-se com essas limitações potenciais do acionador MySQL antes de continuar.
  • Para aprimorar a postura de segurança do banco de dados, ative a opção STRICT_ALL_TABLES Modo SQL para impedir o armazenamento de valores de dados inválidos, o que pode causar interações indesejadas no banco de dados.
  • A Adobe Commerce faz não suporta replicação baseada em instruções MySQL. Certifique-se de usar somente replicação baseada em linha.
WARNING
O Adobe Commerce usa atualmente CREATE TEMPORARY TABLE demonstrativos dentro de transações, que são incompatível com implementações de banco de dados usam replicação baseada em GTID, como Instâncias de segunda geração do SQL da Google Cloud. Considere o MySQL para Cloud SQL 8.0 como uma alternativa.
NOTE
Se o servidor Web e o servidor de banco de dados estiverem em hosts diferentes, execute as tarefas discutidas neste tópico no host do servidor de banco de dados e, em seguida, consulte Configurar uma conexão remota com o banco de dados MySQL.

Instalação do MySQL no Ubuntu

O Adobe Commerce 2.4 requer uma instalação limpa do MySQL 8.0. Siga os links abaixo para obter instruções sobre como instalar o MySQL em sua máquina.

Se você espera importar um grande número de produtos, é possível aumentar o valor de max_allowed_packet maior que o padrão, 16 MB.

NOTE
O valor padrão se aplica ao Adobe Commerce na infraestrutura em nuvem e projetos locais. Os clientes do Adobe Commerce na infraestrutura em nuvem Pro devem abrir um tíquete de suporte para aumentar o max_allowed_packet valor. Os clientes iniciais do Adobe Commerce na infraestrutura em nuvem podem aumentar o valor atualizando a configuração no /etc/mysql/mysql.cnf arquivo.

Para aumentar o valor, abra a variável /etc/mysql/mysql.cnf em um editor de texto e localize o valor de max_allowed_packet. Salve as alterações no mysql.cnf arquivo, feche o editor de texto e reinicie o MySQL (service mysql restart).

Para verificar opcionalmente o valor definido, digite o seguinte comando em um mysql> prompt:

SHOW VARIABLES LIKE 'max_allowed_packet';

Em seguida, Configurar a instância do banco de dados.

Alterações no MySQL 8

Para o Adobe Commerce 2.4, adicionamos suporte para MySQL 8.
Esta seção descreve as principais alterações no MySQL 8 que os desenvolvedores devem estar cientes.

Largura removida para tipos inteiros (preenchimento)

A especificação de largura de exibição para tipos de dados inteiros (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) foi descontinuada no MySQL 8.0.17. Instruções que incluem definições de tipo de dados em sua saída não mostram mais a largura de exibição para tipos inteiros, exceto para TINYINT(1). Os Conectores MySQL presumem que as colunas TINYINT(1) se originaram como colunas BOOLEAN. Essa exceção permite que eles continuem fazendo essa suposição.

Exemplo

Descreva admin_user no mysql 8.19

Campo
Tipo
Null
Chave
Padrão
Extra
user_id
int unsigned
NÃO
PRI
NULL
auto_increment
firstname
varchar(32)
SIM
NULL
lastname
varchar(32)
SIM
NULL
email
varchar(128)
SIM
NULL
username
varchar(40)
SIM
UNI
NULL
password
varchar(255)
NÃO
NULL
created
timestamp
NÃO
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NÃO
CURRENT_TIMESTAMP
DEFAULT_GENERATED ao atualizar CURRENT_TIMESTAMP
logdate
timestamp
SIM
NULL
lognum
smallint unsigned
NÃO
0

Exceto por TINYINT( 1), todo o preenchimento de números inteiros (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) deve ser removido do db_schema.xml arquivo.

Para obter mais informações, consulte https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Comportamento padrão ORDER BY

Antes da versão 8.0, as entradas eram classificadas pela chave estrangeira. A ordem de classificação padrão depende do mecanismo usado.
Sempre especifique uma ordem de classificação se o código depender de uma classificação específica.

Qualificadores ASC e DESC obsoletos para GROUP BY

A partir do MySQL 8.0.13, o ASC ou DESC qualificadores para GROUP BY cláusulas foram removidas. Consultas que dependiam anteriormente de GROUP BY a classificação pode produzir resultados diferentes das versões anteriores do MySQL. Para produzir uma determinada ordem de classificação, forneça uma ORDER BY Cláusula.

Commerce e MySQL 8

Houve algumas alterações no Adobe Commerce para oferecer suporte adequado ao MySQL 8.

Comportamento de consulta e inserção

O Adobe Commerce desativou o comportamento de validação regular definindo SET SQL_MODE='' em /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Com a validação desativada, é possível que o MySQL trunca os dados. No MySQL, o comportamento do Query foi alterado: Select * on my_table where IP='127.0.0.1' O não retorna mais os resultados porque o endereço IP agora é visto corretamente como uma cadeia de caracteres, em vez de um número inteiro.

Atualização do MySQL 5.7 para MySQL 8

Para atualizar corretamente o MySQL da versão 5.7 para a versão 8, siga estas etapas na ordem:

  1. Atualize o Adobe Commerce para 2.4.0. Teste tudo e verifique se o seu sistema funciona conforme o esperado.

  2. Habilitar modo de manutenção:

    code language-bash
    bin/magento maintenance:enable
    
  3. Faça um backup do banco de dados:

    code language-bash
    bin/magento setup:backup --db
    
  4. Atualize o MySQL para a versão 8.

  5. Importe os dados de backup para o MySQL.

  6. Limpe o cache:

    code language-bash
    bin/magento cache:clean
    
  7. Desabilitar modo de manutenção:

    code language-bash
    bin/magento maintenance:disable
    

Configuração da instância do banco de dados

Esta seção discute como criar uma instância de banco de dados para o Adobe Commerce. Embora uma nova instância de banco de dados seja recomendada, você pode instalar o Adobe Commerce opcionalmente com uma instância de banco de dados existente.

Para configurar uma instância do banco de dados MySQL:

  1. Faça logon no servidor de banco de dados como qualquer usuário.

  2. Vá para um prompt de comando do MySQL:

    code language-bash
    mysql -u root -p
    
  3. Insira o MySQL root senha do usuário quando solicitado.

  4. Insira os seguintes comandos na ordem mostrada para criar uma instância de banco de dados chamada magento com nome de usuário magento:

    code language-sql
    create database magento;
    
    code language-sql
    create user 'magento'@'localhost' IDENTIFIED BY 'magento';
    
    code language-sql
    GRANT ALL ON magento.* TO 'magento'@'localhost';
    
    code language-sql
    flush privileges;
    
  5. Enter exit para sair do prompt de comando.

  6. Verifique o banco de dados:

    code language-bash
    mysql -u magento -p
    

    Se o monitor MySQL for exibido, você criou o banco de dados corretamente. Se um erro for exibido, repita os comandos anteriores.

  7. Se o servidor Web e o servidor de banco de dados estiverem em hosts diferentes, execute as tarefas discutidas neste tópico no host do servidor de banco de dados e, em seguida, consulte Configurar uma conexão remota com o banco de dados MySQL.

    Recomendamos que você configure sua instância do banco de dados conforme apropriado para sua empresa. Ao configurar seu banco de dados, lembre-se do seguinte:

    • Indexadores requerem mais tmp_table_size e max_heap_table_size valores (por exemplo, 64 M). Se você configurar a variável batch_size , é possível ajustar esse valor junto com as configurações de tamanho da tabela para melhorar o desempenho do indexador. Consulte a Guia de otimização para obter mais informações.

    • Para um desempenho ideal, verifique se todas as tabelas de índice do MySQL e do Adobe Commerce podem ser mantidas na memória (por exemplo, configurar innodb_buffer_pool_size).

    • A reindexação no MariaDB 10.4 leva mais tempo em comparação com outras versões do MariaDB ou MySQL. Consulte Práticas recomendadas de configuração.

  8. Para MySQL TIMESTAMP para seguir as preferências e a composição esperadas pela arquitetura de esquema declarativa do aplicativo, a variável de sistema explicit_defaults_for_timestamp deve ser definido como on.

    Referências:

    Se esta configuração não estiver ativada, bin/magento setup:db:status sempre relata que a variável Declarative Schema is not up to date.

NOTE
A variável explicit_defaults_for_timestamp está obsoleta. Essa configuração controla comportamentos de carimbo de data e hora obsoletos que serão removidos em uma versão futura do MySQL. Quando esses comportamentos são removidos, a variável explicit_defaults_for_timestamp A configuração do também é removida.
WARNING
Para projetos de infraestrutura em nuvem do Adobe Commerce, a explicit_defaults_for_timestamp a configuração padrão do MySQL (MariaDB) é DESLIGADO.

A reindexação no MariaDB 10.4 e 10.6 leva mais tempo em comparação com as versões anteriores do MariaDB ou MySQL. Para acelerar a reindexação, recomendamos definir esses parâmetros de configuração do MariaDB:

Se ocorrer degradação de desempenho não relacionada à indexação após a atualização para o MariaDB 10.6, considere ativar o --query-cache-type configuração. Por exemplo, --query-cache-type=ON.

Antes de atualizar o Adobe Commerce em projetos de infraestrutura em nuvem, também pode ser necessário atualizar o MariaDB (consulte Práticas recomendadas de atualização do MariaDB).

Por exemplo:

  • Adobe Commerce 2.4.6 com MariaDB versão 10.5.1 ou superior
  • Adobe Commerce 2.3.5 com MariaDB versão 10.3 ou anterior

Além dessas recomendações, você deve consultar o administrador do banco de dados sobre a configuração dos seguintes parâmetros:

NOTE
Essas configurações estão disponíveis somente para implantações locais. Os clientes do Adobe Commerce na infraestrutura em nuvem não têm acesso a essas configurações.
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995