gh-ost
é uma solução de migração de esquema online sem gatilho para o MySQL. É testável e fornece pausabilidade, controle dinâmico/reconfiguração, auditoria e muitas vantagens operacionais.
gh-ost
produz uma carga de trabalho leve no mestre durante toda a migração, dissociada da carga de trabalho existente na tabela migrada.
Ele foi projetado com base em anos de experiência com soluções existentes e altera o paradigma das migrações de tabela.
Todas as ferramentas existentes de troca de schema-schema operam de maneira semelhante: elas criam uma tabela fantasma à semelhança da sua tabela original, migram essa tabela enquanto estão vazias, lenta e incrementalmente os dados da sua tabela original para a tabela fantasma , enquanto isso propaga as mudanças em andamento (Qualquer INSERT
, DELETE
, UPDATE
aplicada à sua tabela) à tabela fantasma . Finalmente, na hora certa, eles substituem sua tabela original pela mesa fantasma .
gh-ost
usa o mesmo padrão. No entanto, difere de todas as ferramentas existentes por não usar gatilhos. Reconhecemos que os gatilhos são a fonte de muitas limitações e riscos.
Em vez disso, gh-ost
usa o fluxo de log binário para capturar alterações na tabela e as aplica de forma assíncrona na tabela fantasma . gh-ost
assume algumas tarefas que outras ferramentas deixam para o banco de dados executar. Como resultado, gh-ost
tem maior controle sobre o processo de migração; pode realmente suspendê -lo; Pode realmente dissociar a carga de gravação da migração da carga de trabalho do mestre.
Além disso, oferece muitas vantagens operacionais que o tornam mais seguro, confiável e divertido de usar.
gh-ost
testando-a em réplicas. gh-ost
emitirá o mesmo fluxo de que teria no mestre, para migrar uma tabela em uma réplica, sem realmente substituir a tabela original, deixando a réplica com duas tabelas que você pode comparar e satisfazer que a ferramenta opera corretamente. É assim que testamos continuamente a produção gh-ost
.gh-ost
acelera, ele realmente cessa as gravações sobre o mestre: sem cópias de linha e nenhum processamento de eventos em andamento. Terilização, você devolve seu mestre à sua carga de trabalho originalgh-ost
, mesmo quando a migração ainda é executada. Você pode iniciar a limpeza à força.gh-ost
para status. gh-ost
escuta no soquete Unix ou TCP.gh-ost
pode ser instruído a adiar o que é provavelmente a etapa mais crítica: a troca de tabelas, até o momento em que você está confortavelmente disponível. Não há necessidade de se preocupar com o ETA estar fora do horário comercial.gh-ost
ao seu ambiente específico.Consulte os documentos para obter mais informações. Não, realmente, leia os documentos.
A folha de trapaceiros tem tudo. Você pode estar interessado em invocar gh-ost
em vários modos:
gh-ost
mostra identidades de servidores envolvidos. Modo necessário se o seu mestre usar a replicação baseada em declaração)gh-ost
prefere o primeiro)gh-ost
.Nossas dicas:
--test-on-replica
Primeiros vezes. Melhor ainda, torne -o contínuo. Temos várias réplicas em que iteramos toda a nossa frota de tabelas de produção, migrando uma a uma, verificando os resultados, a verificação da migração é boa.--execute
.Mais dicas:
--exact-rowcount
para obter uma indicação de progresso precisa--postpone-cut-over-flag-file
para obter controle sobre o tempo de corteVeja também:
gh-ost
no AWS RDSgh-ost
On Azure Database para MySQL Originalmente, foi nomeado gh-osc
: Github Online Schema Change, em empresas como o Facebook Online Schema Change e o PT-Online-Schema-Change.
Mas então uma rara mutação genética aconteceu e o c
se transformou em t
. E isso nos enviou o caminho de tentar descobrir um novo acrônimo. gh-ost
(pronuncia: fantasma ), significa o esquema on-line do Github/Transfigurator/Transfigurator do Github
gh-ost
é licenciado sob a licença do MIT
gh-ost
usa bibliotecas de terceiros, cada uma com sua própria licença. Estes são encontrados aqui.
gh-ost
é liberado em um estado estável, mas com a quilometragem ir. Estamos abertos para obter solicitações. Primeiro, discuta suas intenções por meio de problemas.
Desenvolvemos gh-ost
no Github e para a comunidade. Podemos ter prioridades diferentes das outras. De tempos em tempos, podemos sugerir uma contribuição que não esteja em nosso roteiro imediato, mas que pode atrair outros.
Por favor, consulte a codificação GH-Ost para obter um guia para começar a se desenvolver com o GH-Ost.
gh-ost
agora é GA e estável.
gh-ost
está disponível em formato binário para Linux e Mac OS/X
Baixe o último lançamento aqui
gh-ost
é um projeto Go; É construído com Go 1.15
e acima. Para construir por conta própria, use:
./bin/gh-ost
binário.tar.gz
/tmp/gh-ost-release
De um modo geral, o ramo master
é estável, mas apenas os lançamentos devem ser usados na produção.
gh-ost
foi projetado, autor, revisado e testado pela equipe de infraestrutura de banco de dados no GitHub: