Estou postando esta pergunta porque gostaria de saber qual é o melhor fluxo de trabalho de desenvolvimento para alguém que deseja gerenciar todos os aspectos de uma loja online.
Como em todo o desenvolvimento da Web, é claro, é muito importante ter uma cópia ao vivo e pelo menos uma cópia de desenvolvimento de toda a solução de software. No entanto, gerenciar coisas do Magento não é como gerenciar outro software "baseado em arquivo", porque também existe um componente de banco de dados que entra em jogo; portanto, além do fato de eu poder usar uma ferramenta como o Git como uma ferramenta VCS para controle de origem, como Eu administro diferenças no banco de dados entre as versões ao vivo e de desenvolvimento?
É claro que eu poderia fazer backups do banco de dados ao vivo via cron e inserir as instruções SQL INSERT do backup no controle de origem, mas depois disso dois bancos de dados evoluirão separadamente enquanto os clientes registram e fazem pedidos por um lado, que entram no banco de dados ao vivo e como atualizações são feitas no banco de dados de desenvolvimento separadamente. Quando se trata de mesclar desenvolvimento e versões ao vivo, os arquivos php podem ser atualizados sem problemas via git (usando gitignore no único arquivo que hospeda os detalhes de configuração do banco de dados), mas e os arquivos de banco de dados? Como mesclar os dois arquivos que contêm instruções SQL INSERT dos dois backups sem causar um desastre e destruir o sistema?
Esta é a área sombria do ciclo de vida de desenvolvimento do Magento que estou enfrentando: gerenciando diferenças de banco de dados.
Parece-me que a única solução para sincronizar o conteúdo do banco de dados que diferem entre as versões de desenvolvimento / teste e ao vivo da loja Magento é anotar em um pedaço de papel todas as alterações feitas na versão de desenvolvimento pelo painel de administração do Magento, e espero não cometer erros e, depois que tudo for testado e funcionar, vá para a versão ao vivo e realize exatamente as mesmas mudanças enquanto o Magento é colocado offline e colocado no modo de manutenção. Como este é um processo manual, ele é propenso a erros.
Então, qual é a melhor maneira de lidar com a sincronização de banco de dados entre o servidor magento de teste e o servidor magento ativo?
Obrigado.
fonte
Respostas:
Opções que eu conheço
1.) Manual - em outras palavras, repetir suas ações manualmente no back-end = como você mencionou propenso a erros, reduza a velocidade
2.) No nível do banco de dados com consultas SQL diretas = propenso a erros
3.) Crie uma extensão que adicione, faça alterações através de scripts de configuração / atualização do sql. Esses arquivos fazem parte do seu repositório e podem ser implantados. Essa abordagem ignora principalmente a interface do usuário.
4.) Houve algum trabalho em andamento na tentativa de tornar parte desse fluxo de trabalho mais agradável em projetos como este , mas acho que ainda não está pronto para o horário nobre.
De todas essas opções, atualmente sou a favor do 3.)
fonte
Há um mageploy que pode resolver esse problema também.
fonte
Existem ferramentas de banco de dados como o Toad para MySQL da Quest Software (agora Dell). Essa ferramenta de gerenciamento de banco de dados possui recursos de comparação de dados e estrutura que você pode usar para ver alterações entre dois bancos de dados. Apenas mantenha os backups (ou git commit) das versões do banco de dados que você deseja comparar e pronto. Existe até um gerador de scripts para sincronizar os dois.
fonte
Resolvemos esse problema criando um banco de dados remoto para os desenvolvimentos local e intermediário para leitura / gravação. Realmente ajuda com tempo e eficiência; não é mais necessário clonar, carregar o banco de dados no ambiente de todos.
fonte