Criptografar seu link e protegê-lo de vírus, malware, etc! Tornou seu link seguro para visita

Como automatizar migrações de banco de dados MySQL com Skeema


 Skeema é uma ferramenta CLI de código aberto que permite sincronizar esquemas de banco de dados MySQL em vários hosts. Funciona com arquivos SQL simples contendo instruções CREATE TABLE.

As migrações de banco de dados são um dos desafios mais comuns no processo de desenvolvimento de software. Como você cria uma versão do seu esquema e aplica as alterações a todos os seus ambientes?

O Skeema ajuda a aliviar esse ponto problemático, permitindo que você gerencie seu esquema como SQL regular. Não há sintaxe especial ou formato de arquivo de configuração para aprender. Quando você empurra seu esquema para um host, Skeema puxará as definições das tabelas naquele host e as comparará com seus arquivos locais. Em seguida, ele calculará as instruções CREATE, ALTER e DROP para fazer o host remoto corresponder aos seus arquivos SQL.

Você precisará usar tabelas InnoDB para obter o máximo do Skeema. Ele pode funcionar com tabelas MyISAM, mas nem todos os recursos são suportados e você pode ter problemas.

Primeiros passos

Skeema está disponível para Linux e Mac. Pacotes DEB e RPM são oferecidos, bem como binários autônomos pré-compilados. Faça o download apropriado para o seu sistema e instale o pacote ou extraia o binário para um diretório que está no seu caminho.

Publicidade

O primeiro estágio no uso do Skeema é obter o esquema existente do seu banco de dados. Se você já possui uma coleção de arquivos SQL com instruções CREATE TABLE, pode usá-los no estado em que se encontram. Caso contrário, execute o comando skeema init para obter o SQL que representa um banco de dados ativo.

A CLI da

Skeema aceita os mesmos argumentos do comando regular do mysql. Use os sinalizadores -h, -u e -p para especificar seu host MySQL, nome de usuário e senha. O usuário MySQL deve ter acesso administrativo aos seus esquemas; caso contrário, Skeema pode não ser capaz de inspecioná-los ou aplicar todas as alterações. Skeema irá depositar seus arquivos SQL em um novo diretório dentro do seu diretório de trabalho; adicione o sinalizador -d para escolher como ele é chamado.

 skeema init -h example. com -u root -p -d my-sql 

O padrão do Skeema é exportar o SQL para todos os esquemas no host. Cada esquema obterá seu próprio subdiretório na pasta my-sql. Use o sinalizador --schema para indicar um esquema específico para exportar. Ele será colocado diretamente em my-sql, sem qualquer aninhamento de subdiretório.

Sincronizando esquemas

Assim que tiver seu SQL, você estará pronto para sincronizá-lo com outro host. Use o comando skeema push para comparar seu SQL local com outro servidor MySQL. Skeema aplicará automaticamente todas as alterações que detectar.

 cd my-sql skeema push -h example. com -u root -p -d my-sql 

Tente editar uma das instruções CREATE TABLE em seu SQL. Adicione uma nova coluna ou altere o tipo de uma existente. Quando você empurra skeema, Skeema irá gerar uma instrução ALTER TABLE que atualiza a tabela remota para corresponder.

Operações potencialmente destrutivas, como descartar uma tabela ou alterar o tipo de dados de uma coluna, são desativadas por padrão. Isso ajuda a evitar perda de dados não intencional se você executar o Skeema acidentalmente ou especificar um servidor incorreto. As operações destrutivas são ativadas adicionando-se o sinalizador --allow-unsafe aos comandos push skeema.

Usando vários ambientes

Um uso comum do Skeema é manter vários ambientes em sincronia. Se você tiver servidores locais, de desenvolvimento e de produção, o Skeema permite que você os nomeie para que possa facilmente empurrar e puxar entre eles.

Publicidade

Edite o arquivo . skeema em seu diretório de esquema para habilitar esta funcionalidade. Esta é uma estrutura de configuração semelhante a INI, em que cada seção define um novo ambiente nomeado. Você terá um único ambiente de produção, adicionado pelo skeema init, para começar.

Especifique os detalhes de conexão de cada servidor para que você possa fazer push e pull para manter tudo sincronizado. As chaves na parte superior do arquivo, fora de qualquer seção, são configurações globais aplicadas a todos os ambientes.

 default-character-set = utf8mb4 default-collation = utf8mb4_general_ci generator = skeema: 1.5.2-community schema = example-db [produção] flavour = mysql: 8.0 host = example. com porta = 3306 senha = exemplo de usuário = mysql [local] flavour = mysql: 8.0 host = localhost porta = 3306 senha = exemplo de usuário = mysql 

Agora você pode sincronizar facilmente as mudanças entre os ambientes:

 skeema puxa produção local push skeema 

Esta sequência de comando primeiro atualiza seus arquivos SQL no disco para corresponder ao esquema do seu servidor local. As alterações são então aplicadas ao ambiente de produção ao vivo. Como alternativa, você pode editar manualmente o SQL em disco e enviar para local e produção.

Essa abordagem torna as migrações de banco de dados simples, repetíveis e menos sujeitas a erros. Você pode incorporar o Skeema a um pipeline de CI para implementar as alterações do banco de dados na produção como parte de seu fluxo de implantação regular.

Execuções secas e fiapos

Às vezes, você pode querer verificar as mudanças que um ambiente precisa sem realmente aplicá-las. Nesse caso, use skeema diff para comparar um ambiente nomeado com seus arquivos SQL em disco. Skeema mostrará as diferenças para que você possa antecipar os efeitos de um impulso de skeema.

Publicidade

Skeema também possui uma ferramenta de fiapos embutida. Execute o skeema lint para analisar seus arquivos SQL e encontrar possíveis problemas. Várias regras configuráveis ​​são suportadas. Isso ajuda a garantir que seu SQL seja consistente, com suporte e compatível com as práticas recomendadas modernas do MySQL. Os resultados do lint também são mostrados durante os comandos skeema push e skeema pull.

Mais opções

Os comandos Skeema têm vários sinalizadores compartilhados que permitem personalizar as operações. Aqui estão alguns dos mais significativos:

  •  ignore-table – Especifique uma lista de nomes de tabelas a serem excluídos da sincronização. Essas tabelas não serão enviadas para um host remoto ou retiradas dele. O sinalizador suporta sintaxe regex.
  •  ignore-trigger – ignore-table, mas aplicado a gatilhos.
  •  temp-schema – O nome do esquema temporário a ser criado no host do banco de dados. Este banco de dados é usado pela Skeema como um palco para mudanças intermediárias durante as operações push / pull. Ele é excluído automaticamente após a conclusão da operação.
  •  área de trabalho – Controla onde o esquema temporário é criado. O padrão é usar o host remoto, mas docker é suportado como um valor alternativo. Isso criará um novo contêiner Docker do MySQL em sua máquina local para cada operação Skeema. Ele só funcionará se você tiver o Docker instalado.
  •  opções de conexão – Uma lista separada por vírgulas de opções do MySQL para definir na conexão de banco de dados remoto, como sql_mode = 'ALLOW_INVALID_DATES', innodb_lock_wait_timeout = 1.

Essas opções oferecem mais controle sobre as operações do Skeema. Eles permitem que você configure a conexão do banco de dados para corresponder exatamente à configuração do MySQL do seu aplicativo.

Conclusão

A Skeema elimina a dor das migrações de banco de dados, fornecendo automação e compatibilidade com pipelines de implantação de CI / CD. Ele incorpora um linter SQL integrado, uma ferramenta diff e um mecanismo de sincronização.

Uma versão premium adiciona funcionalidade extra, incluindo a capacidade de trabalhar com visualizações e gatilhos. Skeema Premium é uma oferta comercial construída sobre o núcleo da Comunidade Skeema de código aberto. É vendido por US $ 99 / mês e também oferece suporte a sistemas Windows.

A adoção do Skeema torna mais fácil compartilhar as alterações do esquema do banco de dados com sua equipe, mantendo todos os seus ambientes sincronizados. É uma escolha mais segura do que compartilhar manualmente as instruções ALTER TABLE que podem ser perdidas e não criar uma representação canônica do seu esquema atual.

tp

Privacy Policy | Cookie Policy | Terms and Condition| Contato | sitemap

    Parceiros