Pular para o conteúdo principal

Visão geral

Estes passos compilam o VillageSQL sobre o Percona Server para MySQL 8.4. Eles são iguais aos da página Compilar a Partir do Código-Fonte do MySQL 8.4, exceto pelo código que você clona no Passo 1 e por cinco configurações do CMake no Passo 3. O que a compilação Percona inclui e deixa de fora está na página Primeiros Passos com o Percona Server.

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 CMake e as bibliotecas de desenvolvimento necessárias para a compilação. No Linux, ele também instala o compilador; no macOS, as Xcode Command Line Tools o fornecem. 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, informe também o diretório do OpenSSL 3. O openssl sem versão do Homebrew agora é o OpenSSL 4, e o servidor não compila com ele:
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

  • "$HOME/villagesql-server" - Caminho para o repositório clonado do VillageSQL
  • -DWITH_DEBUG=1 - Compila com o mecanismo DBUG e as asserções ativados, sem otimização (recomendado para desenvolvimento)
  • -DWITH_CURL=system - Compila com a biblioteca curl do sistema. O componente keyring_vault do Percona precisa dela; o Passo 2 a instala.
  • -DWITH_ROCKSDB=0, -DWITH_COREDUMPER=OFF, -DWITHOUT_COMPONENT_KEYRING_KMIP=ON, -DWITH_AUTH_OPENID_CONNECT=OFF - Deixam de fora o MyRocks, a biblioteca coredumper, o componente de keyring KMIP e a autenticação OpenID Connect. A release do VillageSQL também os deixa de fora, e o código-fonte dos três primeiros não está no repositório, portanto a etapa de configuração falha sem essas configurações.
  • -DWITH_SSL="$(brew --prefix openssl@3)" - Aponta o cmake para o OpenSSL 3. O Passo 2 instala o openssl@3. Se você pulou o Passo 2, execute brew install openssl@3 antes, porque brew --prefix openssl@3 imprime um caminho mesmo quando o pacote não está instalado, e o cmake então para com Wrong option or path for WITH_SSL=.
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 tudo (recomendado):
Isso compila o servidor, o cliente mysql usado no Passo 7, o SDK de Extensões e os arquivos .veb das extensões de exemplo. Compilar somente o servidor e o cliente:
Esse par é mais rápido e não compila o SDK de Extensões nem os arquivos .veb de exemplo, portanto INSTALL EXTENSION vsql_complex não encontra nenhum pacote para instalar e uma compilação de extensão que passa -DVillageSQL_BUILD_DIR não encontra o SDK.
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):
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 desbloqueia o SIGINT, então Ctrl-C interrompe o servidor quando você o executa a partir de um terminal. Ela também suprime o backtrace de falha e anula --core-file, então não a use quando precisar de um relatório de falha. 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:

Alterar a senha do root

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

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:
Verifique se o servidor foi compilado sobre o Percona:

Passo 8: Configurar usuários e banco de dados

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: "$HOME/build/villagesql/bin/mysql" -u developer -p -D my_database

Passo 9: Executar os testes

Verifique a compilação com a suíte de testes do VillageSQL, a partir do diretório de compilação. Execute os testes como um usuário comum: como root, o executor de testes pula alguns testes, e um deles falha.
--nounit-tests pula os testes de unidade do MySQL upstream, que incluem falhas conhecidas. Execute os testes de unidade do VillageSQL separadamente:
Um teste com falha faz qualquer um dos dois comandos sair com código diferente de zero. Para depuração com GDB, execução de testes individuais, regravação dos resultados esperados 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
  • Leia as mensagens que o mysqld exibe no seu terminal, ou inicie-o com --log-error="$HOME/mysql-data/error.log" e leia esse arquivo

A instalação da extensão falha

  • Certifique-se de que o arquivo .veb da extensão existe no diretório veb_dir ($HOME/build/villagesql/lib/veb para uma compilação a partir do código-fonte) e de que sua biblioteca se chama <extension_name>.so no Linux e no macOS
  • 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

Usando Extensões

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

Criando Extensões

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

Instalar

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