O dbdeployer é uma ferramenta para realizar o deploy de banco de dados MySQL em diversas topologias e configurações. Essa ferramenta foi criada por Giuseppe (Giuseppe dbdeployer) e manteve seu desenvolvimento até 2023.
Até então, a ferramenta funcionava conforme o esperado, mas com a versão 8.4 se tornando GA (General Availability), infelizmente, algumas funções não funcionavam corretamente, muito por conta de variáveis que não existem mais ou de mudanças na linguagem (slave -> replica e master -> source).
Considerando que utilizamos muito essa ferramenta na Percona, decidi criar um fork do projeto original e mantê-lo a partir de agora. Você pode encontrar a minha versão no seguinte link: Roberto dbdeployer.
Dito isso, esse blog post será uma breve explicação de como instalar e utilizar para testes futuros.
Instalação e uso:
O primeiro passo será a instalação:
Acesse as releases no github e faça o download do binário compatível com seu OS
|
1 2 3 4 |
$ wget https://github.com/Robertoh98/dbdeployer/releases/download/v1.74.0/dbdeployer-1.74.0.linux.tar.gz $ tar -xvf dbdeployer-1.74.0.linux.tar.gz $ chmod +x dbdeployer-1.74.0.linux $ sudo mv dbdeployer-1.74.0.linux /usr/local/bin/dbdeployer |
Próximo passo de configuração é executar o init, para criação das pastas necessárias:
|
1 2 3 |
$ dbdeployer init SANDBOX_BINARY /home/robertodebem/opt/mysql SANDBOX_HOME /home/robertodebem/sandboxes |
Instalação e configuração realizadas. Hora de baixar os binários, para esse meu teste, estou usando Linux com glibc 2.34. Caso você não tenha certeza do seu glibc, verifique com o seguinte comando:
|
1 2 |
$ ldd --version ldd (GNU libc) 2.34 |
Sabendo a versão do glibc e o OS, você pode realizar o download do binário, para esse teste, estarei baixando o Percona Server versão 8.4.7 para glibc 2.34:
|
1 2 3 |
$ wget https://downloads.percona.com/downloads/Percona-Server-8.4/Percona-Server-8.4.7-7/binary/tarball/Percona-Server-8.4.7-7-Linux.x86_64.glibc2.34.tar.gz $ tar -zxvf Percona-Server-8.4.7-7-Linux.x86_64.glibc2.34.tar.gz $ mv Percona-Server-8.4.7-7-Linux.x86_64.glibc2.34 /home/robertodebem/opt/mysql/8.4.7 |
Agora, com tudo configurado e instalado, você pode iniciar várias topologias do MySQL, utilizando somente um comando, por exemplo, o comando abaixo irá iniciar uma instância standalone:
|
1 2 3 4 |
$ dbdeployer deploy single 8.4.7 --port=42123 Database installed in $HOME/sandboxes/msb_8_4_7 run 'dbdeployer usage single' for basic instructions' .. sandbox server started |
Pronto, sua instância standalone MySQL está de pé, outro exemplo seria replicação:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$ dbdeployer deploy replication 8.4.7 --base-port=41123 Installing and starting master .. sandbox server started Installing and starting slave1 .. sandbox server started Installing and starting slave2 .. sandbox server started $HOME/sandboxes/rsandbox_8_4_7/initialize_slaves initializing slave 1 initializing slave 2 Replication directory installed in $HOME/sandboxes/rsandbox_8_4_7 run 'dbdeployer usage multiple' for basic instructions' |
Todas as instâncias estarão localizadas no seu sandbox:
|
1 2 3 4 |
# SANDBOX_HOME /home/robertodebem/sandboxes $ cd /home/robertodebem/sandboxes $ $ ls msb_8_4_7 rsandbox_8_4_7 |
Para acessar a instância standalone, podemos utilizar o executável use dentro da pasta msb_8_4_7:
|
1 2 3 4 5 6 7 |
$ cd msb_8_4_7/ $ ./use Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.4.7-7 Percona Server (GPL), Release 7, Revision 9a19f1fd [...] mysql [localhost:42123] {msandbox} ((none)) > |
Para a replicação você pode usar os executáveis n* como o exemplo abaixo:
|
1 2 3 4 5 6 7 8 9 10 |
$ cd rsandbox_8_4_7/ $ ./n1 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 8.4.7-7 Percona Server (GPL), Release 7, Revision 9a19f1fd [...] $ ./n3 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 17 Server version: 8.4.7-7 Percona Server (GPL), Release 7, Revision 9a19f1fd |
Ou os executáveis use dentro da pasta da cada instância:
|
1 2 |
$ ls -d */ master/ node1/ node2/ |
Para desligar todas as instâncias é possível utilizar o comando global:
|
1 2 3 4 5 6 7 8 9 |
$ dbdeployer global stop # Running "stop" on msb_8_4_7 stop /home/robertodebem/sandboxes/msb_8_4_7 # Running "stop_all" on rsandbox_8_4_7 # executing 'stop' on /home/robertodebem/sandboxes/rsandbox_8_4_7 stop /home/robertodebem/sandboxes/rsandbox_8_4_7/node1 stop /home/robertodebem/sandboxes/rsandbox_8_4_7/node2 stop /home/robertodebem/sandboxes/rsandbox_8_4_7/master |
Conclusão
O dbdeployer continua sendo uma forma prática e rápida de subir MySQL em várias topologias (standalone, replication, group replication) com poucos comandos, sem precisar configurar tudo à mão. Com o fork mantido e ajustado para MySQL 8.4, a ferramenta volta a ser uma opção viável para testes, desenvolvimento e demonstrações, inclusive com Percona Server 8.4. Algumas funções estão no roadmap do dbdeployer, como InnoDB Cluster e ClusterSet!
Caso encontre um bug, tenha sugestões ou contribuições, sinta-se à vontade para acessar o github e criar uma issue/pull request! Bons estudos!






COMENTÁRIOS
Excelente!! Sucesso amigo!!
Abraços.
Capin