TeleDB分散型データベースのコンパイルおよびサーバー構築手順

1. ビルド環境の初期設定

1.1 専用アカウントとストレージディレクトリの作成

データベースプロセスを実行するための専用ユーザーおよびグループを登録し、データ保管用のディレクトリを生成します。

# グループとシステムユーザーの作成
groupadd -r tdb_svc
useradd -r -g tdb_svc -s /sbin/nologin tdb_svc

# データ格納パスの確保
mkdir -p /srv/tdb_root/data
chown tdb_svc:tdb_svc /srv/tdb_root/data

1.2 Boostライブラリのソースビルド

TeleDBのコンパイルにはBoost C++ライブラリ(1.59系)が必須です。システムパスに展開し、バイナリをインストールします。

cd /usr/local/src
tar xf boost_1_59_0.tar.gz
cd boost_1_59_0

./bootstrap.sh --prefix=/usr/local
./b2 -j$(nproc) install

1.3 依存パッケージの一括導入

CMakeおよびシステムライブラリ関連のRPMパッケージを配列処理で導入します。環境に応じてyumリポジトリから直接インストールすることも可能です。

PKG_LIST=(
  "cmake-2.8.12.2-2.el7.x86_64.rpm"
  "rh-varnish6-runtime-4.1-6.el7.x86_64.rpm"
  "rh-varnish6-jemalloc-5.0.1-3.el7.x86_64.rpm"
  "rh-varnish6-jemalloc-devel-5.0.1-3.el7.x86_64.rpm"
  "ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm"
  "ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm"
)

for pkg in "${PKG_LIST[@]}"; do
  rpm -Uvh "/opt/downloads/${pkg}"
done

2. データベースエンジンのコンパイル

2.1 CMake構成パラメータの定義

ソースアーカイブを展開後、以下のCMakeコマンドを実行してビルド設定を生成します。コンパイル過程では一時ファイルが大量に生成されるため、15GB以上の空き領域を確保してください。

cd /opt
unzip teledb-for-mysql-master.zip
cd teledb-for-mysql-master

cmake . \
  -DCMAKE_INSTALL_PREFIX=/srv/tdb_root \
  -DMYSQL_DATADIR=/srv/tdb_root/data \
  -DSYSCONFDIR=/srv/tdb_root \
  -DWITH_BOOST=/usr/local/src/boost_1_59_0 \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/srv/tdb_root/mysqld.sock \
  -DMYSQL_TCP_PORT=53306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci

設定生成が完了したら、並列コンパイルを実行してバイナリをインストールパスへ配置します。

make -j$(nproc) && make install

2.2 構成ファイルの配置

ビルド済みのベースディレクトリ直下に my.cnf を作成し、エンジン固有のパラメータを適用します。

cat > /srv/tdb_root/my.cnf << 'EOF'
[client]
port = 53306
socket = /srv/tdb_root/mysqld.sock
default-character-set = utf8mb4

[mysqld]
port = 53306
socket = /srv/tdb_root/mysqld.sock
basedir = /srv/tdb_root
datadir = /srv/tdb_root/data
pid-file = /srv/tdb_root/tdb.pid
log_error = /srv/tdb_root/error.log
user = tdb_svc

default_storage_engine = InnoDB
max_connections = 800
max_connect_errors = 10000
open_files_limit = 65535
table_open_cache = 256
max_allowed_packet = 128M
binlog_cache_size = 256M
max_heap_table_size = 256M
tmp_table_size = 256M
sort_buffer_size = 32M
join_buffer_size = 32M

innodb_file_per_table = 1
innodb_open_files = 1000
innodb_buffer_pool_size = 2048M
innodb_log_buffer_size = 64M
innodb_log_file_size = 512M
EOF

ファイルおよびディレクトリの所有権をデータベース実行アカウントへ移譲します。

chown -R tdb_svc:tdb_svc /srv/tdb_root

2.3 システムカタログの初期化

初期化スクリプトを実行してデータディレクトリ内に必須のシステムテーブルを構築します。--initialize-insecure オプションを使用することで、rootアカウントの初期パスワードは空欄になります。

/srv/tdb_root/bin/mysqld \
  --initialize-insecure \
  --user=tdb_svc \
  --basedir=/srv/tdb_root \
  --datadir=/srv/tdb_root/data

初期化処理中にランダムパスワードが生成された場合、エラーログから以下のコマンドで抽出可能です。

grep 'temporary password' /srv/tdb_root/error.log | tail -n 1

3. systemdによるサービス管理の構成

3.1 ユニットファイルの定義

従来のSysVinitスクリプトの代わりに、systemd管理用のユニットファイルを新規作成します。これによりプロセスの監視と自動復旧が標準化されます。

cat > /etc/systemd/system/tdb-server.service << 'EOF'
[Unit]
Description=TeleDB Distributed Database Engine
After=network-online.target local-fs.target

[Service]
Type=forking
User=tdb_svc
Group=tdb_svc
ExecStart=/srv/tdb_root/bin/mysqld --defaults-file=/srv/tdb_root/my.cnf --daemonize
ExecStop=/srv/tdb_root/bin/mysqladmin --defaults-file=/srv/tdb_root/my.cnf -u root --port=53306 shutdown
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

3.2 デーモンの有効化と動作確認

ユニット定義をシステムマネージャーへ反映し、データベースサービスを起動します。状態監視コマンドで正常に動作しているか検証してください。

systemctl daemon-reload
systemctl enable tdb-server
systemctl start tdb-server
systemctl status tdb-server

4. TeleDBの技術的特性

TeleDBは中国電信によって独自開発された分散型データベースシステムです。MySQL互換アーキテクチャを基盤としつつ、透過的な分庫分表(シャーディング)機能、高度なSQLルーティングエンジン、およびグローバルインデックス機構を実装しています。主な適用領域は高并发OLTPトランザクション処理であり、集計クエリや複雑な分析処理には適していません。ノード間のデータ分散とトランザクション整合性を確保するため、アプリケーション側は標準的なJDBC/ODBCドライバーを介して接続します。

タグ: TeleDB 分散データベース MySQLフォーク CMakeビルド systemd構成

7月23日 18:27 投稿