Diretrizes gerais do MySQL
Consulte Requisitos do Sistema para obter as versões do MySQL com suporte.
O Adobe fortemente recomenda que você observe o seguinte padrão ao configurar seu banco de dados:
- O Adobe Commerce usa gatilhos de 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 agenda. 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 estas limitações potenciais do acionador MySQL antes de continuar.
- Para aprimorar sua postura de segurança do banco de dados, habilite o modo SQL
STRICT_ALL_TABLES
para impedir o armazenamento de valores de dados inválidos, o que pode causar interações indesejadas no banco de dados. - O Adobe Commerce não oferece suporte à replicação baseada em instruções MySQL. Certifique-se de usar somente replicação baseada em linha.
CREATE TEMPORARY TABLE
instruções dentro de transações, que são incompatíveis com implementações de banco de dados, e usam replicação baseada em GTID, como instâncias de segunda geração do Google Cloud SQL. Considere o MySQL para Cloud SQL 8.0 como uma alternativa.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, pode aumentar o valor de max_allowed_packet
, que é maior que o padrão, 16 MB.
max_allowed_packet
. Os clientes iniciais do Adobe Commerce na infraestrutura em nuvem podem aumentar o valor atualizando a configuração no arquivo /etc/mysql/mysql.cnf
.Para aumentar o valor, abra o arquivo /etc/mysql/mysql.cnf
em um editor de texto e localize o valor para max_allowed_packet
. Salve as alterações no arquivo mysql.cnf
, feche o editor de texto e reinicie o MySQL (service mysql restart
).
Para verificar opcionalmente o valor definido, digite o seguinte comando em um prompt mysql>
:
SHOW VARIABLES LIKE 'max_allowed_packet';
Em seguida, Configure 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
int unsigned
NULL
auto_increment
firstname
varchar(32)
NULL
lastname
varchar(32
)NULL
email
varchar(128)
NULL
username
varchar(40)
NULL
password
varchar(255)
NULL
created
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
na atualização CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
0
Exceto por TINYINT(1), todo o preenchimento de inteiros (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) deve ser removido do arquivo db_schema.xml
.
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, os qualificadores ASC
ou DESC
obsoletos para as cláusulas GROUP BY
foram removidos. Consultas que anteriormente dependiam da classificação GROUP BY
podem produzir resultados diferentes das versões anteriores do MySQL. Para produzir uma determinada ordem de classificação, forneça uma cláusula ORDER BY
.
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 desabilitou 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 da Consulta mudou: Select * on my_table where IP='127.0.0.1'
não retorna mais resultados porque o endereço IP agora é visto corretamente como uma cadeia de caracteres, em vez de um 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:
-
Atualize o Adobe Commerce para 2.4.0.
Teste tudo e verifique se o seu sistema funciona conforme o esperado. -
Habilitar modo de manutenção:
code language-bash bin/magento maintenance:enable
-
Faça um backup do banco de dados:
code language-bash bin/magento setup:backup --db
-
Atualize o MySQL para a versão 8.
-
Importe os dados de backup para o MySQL.
-
Limpe o cache:
code language-bash bin/magento cache:clean
-
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:
-
Faça logon no servidor de banco de dados como qualquer usuário.
-
Vá para um prompt de comando do MySQL:
code language-bash mysql -u root -p
-
Digite a senha do usuário
root
do MySQL quando solicitado. -
Digite os seguintes comandos na ordem mostrada para criar uma instância de banco de dados chamada
magento
com o nome de usuáriomagento
: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;
-
Digite
exit
para sair do prompt de comando. -
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.
-
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. Em seguida, consulte Configurar uma conexão de banco de dados MySQL remota.
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 valores maiores de
tmp_table_size
emax_heap_table_size
(por exemplo, 64 M). Se você configurar o parâmetrobatch_size
, poderá ajustar esse valor junto com as configurações de tamanho da tabela para melhorar o desempenho do indexador. Consulte o 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.
-
-
Para que os campos
TIMESTAMP
do MySQL sigam as preferências e a composição esperadas pela arquitetura de esquema declarativa do aplicativo, a variável de sistemaexplicit_defaults_for_timestamp
deve ser definida comoon
.Referências:
Se esta configuração não estiver habilitada,
bin/magento setup:db:status
sempre relata queDeclarative Schema is not up to date
.
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 configuração explicit_defaults_for_timestamp
também é removida.explicit_defaults_for_timestamp
para MySQL (MariaDB) assume o padrão 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 você sofrer degradação de desempenho não relacionada à indexação após a atualização para MariaDB 10.6, considere habilitar a configuração --query-cache-type
. Por exemplo, --query-cache-type=ON
.
Antes de atualizar o Adobe Commerce em projetos de infraestrutura em nuvem, talvez também seja 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: