Skip to main content

Visão geral

Compilar o VillageSQL a partir do código-fonte oferece a você os recursos mais recentes e permite personalizar a compilação para o seu ambiente específico.

Pré-requisitos

Antes de começar, certifique-se de ter os seguintes itens instalados:
  • Git - Para clonar o repositório
  • Uma plataforma compatível - Debian ou Ubuntu Linux, ou macOS com Homebrew
O repositório inclui um script que instala o compilador, o CMake e as bibliotecas de desenvolvimento necessárias para a compilação. O Passo 2 executa esse script, portanto você não precisa instalar esses pacotes por conta própria.

Passo 1: Clonar o repositório

Clone o repositório do VillageSQL Server a partir do GitHub. Clone para o seu diretório pessoal (home) para que os passos do CMake abaixo funcionem sem modificações:
O repositório ocupa vários GB por conta da base de código do MySQL.

Passo 2: Instalar as dependências de compilação

Execute o script de configuração a partir do repositório que você acabou de clonar. O script detecta o seu sistema operacional e instala os pacotes necessários para a compilação:
No Linux, o script usa o apt-get e solicita sudo. No macOS, ele usa o Homebrew. A CI do VillageSQL instala as suas dependências de compilação com o mesmo script, portanto a lista de pacotes permanece atualizada em relação à compilação.
O script é compatível com Debian ou Ubuntu Linux e com macOS. Em outra distribuição Linux, leia villagesql/bld_tools/setup_linux_build_env.sh e instale os pacotes equivalentes com o seu próprio gerenciador de pacotes.

Passo 3: Configurar com o CMake

Crie um diretório de compilação fora do repositório e configure o projeto:
No macOS, adicione -DWITH_SSL=system para que o CMake encontre o OpenSSL do Homebrew:
Os caminhos usam $HOME em vez de ~ em todo o documento, nas duas plataformas. O shell só expande ~ no início de uma palavra, portanto --datadir=~/mysql-data/data chega ao mysqld como um diretório literalmente chamado ~ e o servidor é abortado. As aspas em "$HOME/..." também mantêm o caminho íntegro caso o nome do seu diretório pessoal contenha um espaço. Substitua o caminho do repositório pela localização real do seu clone, se for diferente.

Opções do CMake explicadas

  • <path-to-repo> - Caminho para o repositório clonado do VillageSQL
  • -DWITH_DEBUG=1 - Habilita símbolos de depuração (recomendado para desenvolvimento)
  • -DCMAKE_INSTALL_PREFIX="$HOME/mysql" - Define o diretório de instalação
  • -DWITH_SSL=system - Usa a biblioteca OpenSSL do sistema (obrigatório no macOS)

Opções adicionais do CMake

Compilação de produção sem símbolos de depuração:
Com comentário de compilação personalizado:
Modo de desenvolvedor com avisos mais rigorosos:
Se precisar reconfigurar, limpe primeiro o cache do CMake (execute a partir do diretório de compilação):

Passo 4: Compilar o código

Compile o VillageSQL usando make com compilação paralela. A partir do diretório de compilação: Compilar o servidor e o cliente (recomendado para desenvolvimento):
O alvo mysql compila o cliente usado para conectar no Passo 7; make -j10 mysqld sozinho compila somente o servidor, e o Passo 7 então não teria nenhum cliente para executar. Compilar tudo:
Ajuste o paralelismo (-j10) de acordo com os núcleos da sua CPU. Subtraia de 2 a 4 do total de núcleos para manter o sistema responsivo. Por exemplo, em uma máquina de 12 núcleos, use -j10.
Quando concluir, verifique se os binários do servidor e do cliente foram compilados:

Passo 5: Inicializar o banco de dados

Antes de iniciar o servidor pela primeira vez, inicialize o diretório de dados: Produção (com senha gerada - recomendado):
Desenvolvimento (sem senha - opcional):
Executando como root (Docker ou sudo): Se estiver executando como root (por exemplo, no Docker), o MySQL exige a flag --user=root:
Use --initialize (com senha) para configurações semelhantes às de produção. Use --initialize-insecure (sem senha) apenas para desenvolvimento e testes locais. Ao usar --initialize, uma senha temporária será gerada e exibida no console: A temporary password is generated for root@localhost: <password>
Verifique se a inicialização foi bem-sucedida conferindo se os bancos de dados de sistema foram criados:

Passo 6: Iniciar o servidor

Inicie o servidor VillageSQL:
Executando como root (Docker ou sudo):
A flag --gdb instala um manipulador de SIGINT para que Ctrl-C interrompa o servidor de forma limpa, o que é útil ao executá-lo interativamente a partir de um terminal. Para executar em segundo plano, adicione --daemonize ao comando mysqld.

Passo 7: Conectar com o cliente MySQL

Abra um novo terminal e conecte-se ao servidor usando o cliente MySQL: Se estiver usando —initialize-insecure (sem senha):
Se estiver usando —initialize (com senha gerada):
Você deverá ver o prompt do MySQL:

Verificar a instalação

Verifique se você está executando o VillageSQL:
As compilações de desenvolvimento incluem o hash do commit do git na string de versão:

Passo 8: Configurar usuários e banco de dados

Alterar a senha do root

Se você usou --initialize, altere a senha temporária:

Criar um usuário de desenvolvimento

Para o desenvolvimento diário, crie um usuário que não seja root:
Saia e reconecte-se como o seu novo usuário:

Criar um banco de dados

Conecte-se a um banco de dados específico: mysql -u developer -p -D my_database
Para depuração com GDB, execução de testes e contribuição para a base de código do servidor, consulte o Guia de Desenvolvimento do Servidor.

Solução de problemas

A compilação falha por dependências ausentes

Execute o script de configuração novamente. O Passo 3 deixa você no diretório de compilação, portanto informe o caminho absoluto do script:
Verifique a mensagem de erro para identificar a biblioteca ausente específica.

O servidor não inicia

  • Verifique se o diretório de dados foi inicializado: ls "$HOME/mysql-data/data/"
  • Verifique se outra instância do MySQL/VillageSQL está usando a porta 3306
  • Consulte os logs de erro em $HOME/mysql-data/data/*.err

A instalação da extensão falha

  • Certifique-se de que a biblioteca da extensão (.so no Linux, .dylib no macOS) existe na saída da compilação
  • Verifique se o VillageSQL tem as permissões necessárias para carregar extensões
  • Verifique se o nome da extensão e o nome do arquivo .veb estão corretos

Próximos passos

Instalando Extensões

Aprenda a instalar, atualizar e gerenciar extensões do VillageSQL.

Criando Extensões em C++

Crie suas próprias extensões personalizadas para o VillageSQL.

Introdução

Guia de início rápido para o VillageSQL.