Se acontecer de você ter um laptop ou máquina velha por aí e acumulando poeira, você pode querer reaproveitá-la. Um banco de dados SQL rápido para processamento analítico (por exemplo, para gerar relatórios ad-hoc) soa bem? Se sim, continue lendo!
Neste artigo, mostrarei como tirar o pó de um laptop antigo e reutilizá-lo como um servidor de banco de dados dedicado para análises sobre Rocky Linux e Docker.
Usei este Lenovo Thinkpad T440s com processador Intel® Core™ i7, DDR3L-SDRAM de 8 GB e SSD de 256 GB:
O Rocky Linux é a continuação do CentOS , um sistema operacional corporativo de código aberto compatível com o Red Hat Enterprise Linux (RHEL).
Ele oferece bons recursos de segurança e administração e, como é baseado no RHEL, possui uma comunidade vasta e ativa ao seu redor.
Docker é um software de virtualização executado em sistemas Linux sem virtualizar o hardware. Isso otimiza os recursos disponíveis, mantendo as vantagens dos ambientes isolados.
Você pode configurar o Docker em sua máquina comum do dia a dia, se preferir, mas se tiver um laptop antigo com o hardware mínimo necessário para executar o Rocky Linux, sugiro aproveitá-lo.
Antes de começar, certifique-se de fazer backup de todos os arquivos importantes que você possa ter em sua máquina antiga.
Use ferramentas online como Google Drive, DropBox ou discos rígidos externos. Atribua 1 ou 2 horas exclusivamente a esta tarefa. Explore o sistema de arquivos e evite surpresas desagradáveis posteriormente.
Não vou entrar em detalhes sobre como instalar o Rocky Linux. Consulte a documentação oficial se quiser ver instruções detalhadas.
No entanto, certifique-se de configurar uma conexão Wi-Fi com DHCP (ou Ethernet, se preferir) na GUI de instalação.
Você não precisa criar usuários adicionais, o root
é suficiente. Além disso, não instale o servidor com a opção GUI . Em vez disso, recomendo selecionar Sistema operacional personalizado e adicionar o seguinte software:
Siga as instruções de instalação para concluir o processo.
Se você configurou uma conexão Wi-Fi durante a instalação, terá que executar algumas etapas adicionais.
Conecte a máquina ao seu roteador usando um cabo Ethernet .
Execute encli connection
e anote o nome da conexão Ethernet. No meu caso, foi enp0s25 .
Habilite a conexão executando nmcli connection up enp0s25
(use o nome da sua conexão).
Instale o utilitário Wi-Fi ausente executando yum install NetworkManager-wifi
Desconecte o cabo Ethernet.
Reinicie a máquina executando reboot
.
Depois que a máquina reiniciar, faça o login como root e verifique se a conexão Wi-Fi está funcionando executando ping google.com
.
Instale a IU de gerenciamento de rede usando dnf install NetworkManager-tui
.
Execute o nmtui
e edite a conexão Wi-Fi para usar um IP estático manual. Eu defini o endereço do servidor como 192.168.1.200/24 e adicionei o gateway e os servidores DNS que obtive de outra máquina (macOS) na mesma rede usando ifconfig
. Use ip addr
no Linux ou ipconfig
no Windows. Aqui está um exemplo:
Para evitar que o laptop entre automaticamente em modo suspenso quando a tampa é fechada, edite o arquivo /etc/systemd/logind.conf
e defina as seguintes propriedades (você pode usar o vi
ou instalar o GNU nano usando yum install nano
):
[Login] HandleLidSwitch=lock LidSwitchIgnoreInhibited=no
Para preservar as alterações anteriores na reinicialização, execute systemctl restart systemd-logind.service
.
Verifique se tudo funciona reiniciando sua máquina.
Neste ponto, você pode passar para sua máquina do dia-a-dia e conectar-se ao novo servidor usando SSH:
ssh [email protected]
Você também pode atribuir um nome de host em sua máquina cliente. Edite o arquivo /etc/hosts (máquinas do tipo Unix) ou o arquivo c:\Windows\System32\drivers\etc\hosts (no Windows) e adicione a seguinte linha (use qualquer nome que desejar, mas especifique o endereço IP estático que você configurou antes):
192.168.1.200 pickanyname.local
Você terá que fazer isso em todas as máquinas que usar para se conectar ao servidor se quiser usar o nome do host em vez do endereço IP. Depois disso, você poderá se conectar ao servidor da seguinte maneira:
ssh [email protected]
Após conectar-se ao servidor via SSH, instale o docker executando os seguintes comandos:
yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce \ docker-ce-cli \ containerd.io \ docker-compose-plugin
Para fazer com que o serviço Docker seja iniciado automaticamente quando a máquina for reiniciada, execute estes comandos:
systemctl enable docker.service systemctl start docker.service
Com o Docker pronto, é fácil instalar software enquanto mantém seu servidor organizado. O software roda em ambientes isolados chamados containers . Você pode criar contêineres a partir de imagens personalizadas ou prontas para uso.
Uma imagem é um modelo com instruções sobre como criar um contêiner. Você pode iniciar, reiniciar, parar e até excluir contêineres quando não os quiser mais em seu sistema. Tudo isso sem deixar lixo no sistema operacional do seu host (Rocky Linux, neste artigo).
Um banco de dados é um bom candidato para ser executado em um ambiente isolado. Execute o seguinte comando para iniciar um contêiner que executa um servidor MariaDB com o mecanismo ColumnStore incluído:
docker run --detach \ --name mariadb-cs \ --restart unless-stopped \ --env MARIADB_ROOT_PASSWORD='password' \ --publish '3306:3306/tcp' \ --expose '3306' \ mariadb/columnstore
Isso baixa a imagem MariaDB/columnstore do Docker Hub (um registro público de imagens do Docker mantido pela Docker Inc.).
Depois de baixar a imagem, o Docker cria um novo contêiner com o nome MariaDB-cs e inicia o contêiner, iniciando efetivamente o servidor de banco de dados MariaDB na porta 3306.
O comando também expõe a porta para o mundo externo para que você possa se conectar ao banco de dados, por exemplo, de sua máquina de desenvolvimento.
O que você acabou de instalar permite usar o mecanismo de armazenamento MariaDB ColumnStore ao criar uma tabela. Por exemplo:
CREATE TABLE some_table( ... column definitions here ... ) ENGINE=ColumnStore;
Isso diz ao banco de dados MariaDB para usar o mecanismo ColumnStore para armazenar os dados de forma colunar. Esse mecanismo foi projetado para dimensionamento de big data e pode processar petabytes de dados, liberando você da definição e manutenção de índices. Isso o torna ideal para consultas ad hoc em conjuntos de dados muito grandes.
Você ainda pode usar o mecanismo InnoDB padrão adequado para cargas de trabalho transacionais quando necessário. Basta omitir a opção ENGINE
. Você pode unir tabelas que usam ColumnStore com tabelas que usam InnoDB em uma única instrução SQL.
Você também pode usar a replicação entre um nó transacional (InnoDB) e um nó analítico (ColumnStore) para habilitar cargas de trabalho híbridas transacionais-analíticas (HTAP).
A melhor maneira de experimentar o ColumnStore é testá-lo usando um conjunto de dados existente.
Confira este repositório do Github que carrega 5 milhões de linhas em uma tabela que você pode usar para executar consultas analíticas e veja você mesmo o desempenho do ColumnStore.