Converter um banco de dados de produção em dados de teste
15
Quanto mais próximo o teste estiver da produção, melhor ele pode imitar o comportamento da produção. Gostaria de copiar os backups do banco de dados da produção para nossos ambientes de teste, mas o que preciso alterar para que o teste funcione e para não interferir na produção ou enviar e-mails acidentalmente a clientes reais (além de definir web/%secure/base_urlcom o URL de teste)?
Outra maneira de pensar sobre essa questão seria considerar como gerar algo como Magento Sample Data a partir de meus próprios dados de produção.
Também core_url_rewritepode ser importado apenas com a estrutura e executar uma reindexação de URLs do catálogo após a importação, a menos que você precise de todos esses registros (para vários testes).
Você também pode limpar os carrinhos abandonados (dica:) sales_flat_quote, também pode remover pedidos se não precisar deles e apenas manter um número limitado
2) Definições de configuração
web / (não seguro | seguro) / base_url
endereços de email de contato
desativar email ( system/smtp/disable) para não enviar emails por engano
Para dev, ignorar o conteúdo de algumas tabelas é bom. Para controle de qualidade / preparação, convém que todas essas tabelas sejam preenchidas para refletir a produção o mais próximo possível.
beeplogic
@FlorinelChris: Eu pensei que a pergunta era sobre a simplificação da migração de banco de dados e não torná-la tão complexa :) Bu de qualquer forma, boa resposta!
user487772
@ A parte mais difícil é colocar tudo isso em um script ... executá-lo depois é a solução simples.
FlorinelChis
2
Escrevemos um script para lidar com despejos de banco de dados para ramificação. Leia este artigo .
O princípio básico é que ele lê local.xmlpara buscar as credenciais do banco de dados e, em seguida, despeja os dados nessa base. Ele divide o despejo em duas partes, somente a estrutura e depois os dados. Mas a chave é que ele acelera o processo de despejo convencional ignorando dados não essenciais e evita criticamente qualquer bloqueio de tabela durante o despejo que, de outra forma, bloquearia / travaria seu site ativo.
Quando você tiver o dump do MySQL, poderá alterar a URL com muita facilidade usando sed
sed -i 's/www.mydomain.com/staging.mydomain.com/g'./var/db.sql
Em seguida, execute uma importação do mysql no seu novo banco de dados.
Portanto, sem o script, uma versão muito básica seria assim.
mysqldump -hHostname -uUsername LiveDbname-p > db.sql
sed -i 's/www.mydomain.com/staging.mydomain.com/g' db.sql
mysql -hHostname -uUsername DevDbname-p < db.sql
Não há nenhum motivo para excluir o arquivo local.xml ou executar novamente o instalador se você alterar os URLs no banco de dados dessa maneira.
Todo o processo de ramificação está bem coberto em nosso Guia Magento GIT . Esse é um bom processo para criar ramificações de desenvolvimento, mas reduz o DB ativo por uma margem significativa. Portanto, os testes não serão completamente iguais aos do site ativo.
Portanto, executar um dump de banco de dados baunilha, substituir sed, a importação de banco de dados é suficiente para um site de preparação. E espelhará / corresponderá ao site ao vivo o mais próximo possível.
Em termos de impedir a comunicação com os clientes - nunca achamos isso necessário, pois sempre criamos contas deliberadamente para testes, nunca usando pedidos reais de clientes para testes.
Uma opção para o problema do email é configurar o site de desenvolvimento para redirecionar TODOS os emails para você. Adiciona um pouco de tranqüilidade.
Como você faz isso depende do seu ambiente - para nós, adicionar isso ao vhost faz o trabalho:
Mas suponha que eu diga ao meu sistema de teste que enviei um pedido - ele não enviaria um email ao cliente real sobre isso?
Kojiro
Os únicos outros itens que precisam ser alterados são as informações de registro do módulo de terceiros, se você estiver executando chaves que são por domínio, em vez de serem apenas chaves de ativação. Também incluo endereços de e-mail para que o pedido transacional do teste vá para uma conta de teste em vez do balcão de pedidos. Quando você inicia, baseUrls seguros e não seguros são tudo o que é necessário. Se você planeja fazer isso com frequência, empacote tudo em um arquivo sql e importe-o após a importação do magento db.
Fiasco Labs
@kojiro - Não se você configurar algumas contas de teste. Converse com o administrador de e-mail da sua empresa, configure-o com alguns apelidos de e-mail.
Fiasco Labs
@FiascoLabs Estou confuso. Nesse cenário, acabei de importar um banco de dados Magento de produção com clientes reais. Se eu processar um pedido real com um cliente real, que benefícios os aliases de email farão?
Kojiro
@kojiro, você está correto. Depois de importar um conjunto de dados da produção, você precisa limpar / atualizar informações confidenciais / do cliente. Esta não é uma boa resposta, pois não trata a situação corretamente.
beeplogic
0
Tente isso, ele embaralha os e-mails dos usuários para ajudar com seu problema no envio acidental de clientes ao vivo do ambiente de teste
UPDATE customer_entity SET email = REPLACE(email,'@','-test@abcxyz123-')
Escrevemos um script para lidar com despejos de banco de dados para ramificação. Leia este artigo .
O princípio básico é que ele lê
local.xml
para buscar as credenciais do banco de dados e, em seguida, despeja os dados nessa base. Ele divide o despejo em duas partes, somente a estrutura e depois os dados. Mas a chave é que ele acelera o processo de despejo convencional ignorando dados não essenciais e evita criticamente qualquer bloqueio de tabela durante o despejo que, de outra forma, bloquearia / travaria seu site ativo.Quando você tiver o dump do MySQL, poderá alterar a URL com muita facilidade usando
sed
Em seguida, execute uma importação do mysql no seu novo banco de dados.
Portanto, sem o script, uma versão muito básica seria assim.
Não há nenhum motivo para excluir o arquivo local.xml ou executar novamente o instalador se você alterar os URLs no banco de dados dessa maneira.
Todo o processo de ramificação está bem coberto em nosso Guia Magento GIT . Esse é um bom processo para criar ramificações de desenvolvimento, mas reduz o DB ativo por uma margem significativa. Portanto, os testes não serão completamente iguais aos do site ativo.
Portanto, executar um dump de banco de dados baunilha, substituir sed, a importação de banco de dados é suficiente para um site de preparação. E espelhará / corresponderá ao site ao vivo o mais próximo possível.
Em termos de impedir a comunicação com os clientes - nunca achamos isso necessário, pois sempre criamos contas deliberadamente para testes, nunca usando pedidos reais de clientes para testes.
fonte
Uma opção para o problema do email é configurar o site de desenvolvimento para redirecionar TODOS os emails para você. Adiciona um pouco de tranqüilidade.
Como você faz isso depende do seu ambiente - para nós, adicionar isso ao vhost faz o trabalho:
fonte
Nada. Alterar URLs seguros e não seguros é suficiente.
Você também pode omitir os
log_*
dados das tabelas apenas para tornar seu despejo mais leve.fonte
Tente isso, ele embaralha os e-mails dos usuários para ajudar com seu problema no envio acidental de clientes ao vivo do ambiente de teste
fonte