Skip to main content

概要

ソースコードからVillageSQLをビルドすると、最新の機能を利用でき、特定の環境に合わせてビルドをカスタマイズできます。

前提条件

開始する前に、次のものがインストールされていることを確認してください。
  • Git - リポジトリのクローン用
  • サポートされているプラットフォーム - DebianまたはUbuntu Linux、あるいはHomebrewを導入したmacOS
リポジトリには、コンパイラー、CMake、およびビルドに必要な開発ライブラリをインストールするスクリプトが含まれています。ステップ2でこのスクリプトを実行するため、これらのパッケージを自分でインストールする必要はありません。

ステップ1:リポジトリのクローン

GitHubからVillageSQL Serverリポジトリをクローンします。CMakeの次のステップが変更なしで機能するように、ホームディレクトリにクローンします。
MySQLのコードベースが含まれているため、リポジトリのサイズは数GBあります。

ステップ2:ビルド依存関係のインストール

クローンしたリポジトリからセットアップスクリプトを実行します。このスクリプトはオペレーティングシステムを検出し、ビルドに必要なパッケージをインストールします。
Linuxでは、スクリプトはapt-getを使用し、sudoを要求します。macOSでは、Homebrewを使用します。VillageSQLのCIも同じスクリプトでビルド依存関係をインストールするため、パッケージの一覧は常にビルドの内容に追随します。
このスクリプトはDebianまたはUbuntu Linux、およびmacOSをサポートしています。それ以外のLinuxディストリビューションでは、villagesql/bld_tools/setup_linux_build_env.shを読み、同等のパッケージを各自のパッケージマネージャーでインストールしてください。

ステップ3:CMakeによる設定

リポジトリの外部にビルドディレクトリを作成し、プロジェクトを設定します。
macOSでは、CMakeがHomebrewのOpenSSLを見つけられるように-DWITH_SSL=systemを追加します。
パスは両方のプラットフォームで~ではなく$HOMEを使用します。シェルは単語の先頭にある~しか展開しないため、--datadir=~/mysql-data/data~という名前のディレクトリとしてmysqldに渡され、サーバーは異常終了します。また、"$HOME/..."と引用符で囲むことで、ホームディレクトリ名にスペースが含まれる場合でもパスが分割されません。リポジトリのパスが異なる場合は、実際のクローン場所に置き換えてください。

CMakeオプションの説明

  • <path-to-repo> - クローンされたVillageSQLリポジトリへのパス
  • -DWITH_DEBUG=1 - デバッグシンボルを有効にします(開発に推奨)
  • -DCMAKE_INSTALL_PREFIX="$HOME/mysql" - インストールディレクトリを設定します
  • -DWITH_SSL=system - システムのOpenSSLライブラリを使用します(macOSでは必須)

その他のCMakeオプション

デバッグシンボルなしのプロダクションビルド:
カスタムコンパイルコメント付き:
より厳格な警告付きの開発者モード:
再設定する必要がある場合は、最初にCMakeキャッシュをクリアします(ビルドディレクトリ内から実行します)。

ステップ4:コードのコンパイル

makeを使用して、並列コンパイルでVillageSQLをビルドします。ビルドディレクトリ内から: サーバーとクライアントをビルドします(開発に推奨):
mysqlターゲットは、ステップ7で接続に使用するクライアントをビルドします。make -j10 mysqldだけではサーバーのみがビルドされるため、ステップ7で実行するクライアントがありません。 すべてをビルドします:
並列数(-j10)は、CPUコア数に基づいて調整します。システムの応答性を維持するために、合計コア数から2〜4を引いてください。たとえば、12コアのマシンでは、-j10を使用します。
完了したら、サーバーとクライアントのバイナリがビルドされたことを確認します。

ステップ5:データベースの初期化

サーバーを初めて起動する前に、データディレクトリを初期化します。 プロダクション(生成されたパスワードを使用 - 推奨):
開発(パスワードなし - オプション):
rootとして実行する場合(Dockerまたはsudo): rootとして実行する場合(例:Docker内)、MySQLは--user=rootフラグが必要です。
プロダクションのような設定では、--initialize(パスワード付き)を使用します。ローカル開発およびテストでのみ、--initialize-insecure(パスワードなし)を使用します。--initializeを使用すると、一時的なパスワードが生成され、コンソールに出力されます:A temporary password is generated for root@localhost: <password>
システムデータベースが作成されたことを確認し、初期化が成功したことを検証します。

ステップ6:サーバーの起動

VillageSQLサーバーを起動します。
rootとして実行する場合(Dockerまたはsudo):
--gdbフラグは、SIGINTハンドラーをインストールするため、Ctrl-Cを押すとサーバーが正常に停止します。ターミナルから対話的に実行する場合に便利です。バックグラウンドで実行するには、mysqldコマンドに--daemonizeを追加します。

ステップ7:MySQLクライアントでの接続

新しいターミナルを開き、MySQLクライアントを使用してサーバーに接続します。 --initialize-insecure(パスワードなし)を使用する場合:
--initialize(生成されたパスワードを使用)を使用する場合:
MySQLプロンプトが表示されるはずです。

インストールの確認

VillageSQLが実行されていることを確認します。
開発ビルドには、バージョン文字列にgitコミットハッシュが含まれます。

ステップ8:ユーザーとデータベースの設定

rootパスワードの変更

--initializeを使用した場合は、一時パスワードを変更します。

開発ユーザーの作成

日常的な開発のために、root以外のユーザーを作成します。
終了して、新しいユーザーとして再接続します。

データベースの作成

特定のデータベースに接続します:mysql -u developer -p -D my_database
GDBデバッグ、テストの実行、サーバーコードベースへの貢献については、サーバー開発ガイドを参照してください。

トラブルシューティング

ビルドが依存関係の欠如で失敗する

セットアップスクリプトをもう一度実行します。ステップ3ではビルドディレクトリにいるため、スクリプトの絶対パスを指定します。
エラーメッセージで、欠落している具体的なライブラリを確認します。

サーバーが起動しない

  • データディレクトリが初期化されていることを確認します:ls "$HOME/mysql-data/data/"
  • 別のMySQL/VillageSQLインスタンスがポート3306を使用していないことを確認します
  • $HOME/mysql-data/data/*.errでエラーログを確認します

拡張機能のインストールが失敗する

  • 拡張機能ライブラリ(Linux では .so、macOS では .dylib)がビルド出力に存在することを確認します
  • VillageSQLが拡張機能をロードするために必要な権限を持っていることを確認します
  • 拡張機能の名前と.vebファイル名が正しいことを確認します

次のステップ

拡張機能の使用

VillageSQL拡張機能をインストール、更新、および管理する方法を学びます。

拡張機能の作成

VillageSQL用の独自のカスタム拡張機能を構築します。

はじめに

VillageSQLのクイックスタートガイド。