Postgresql互換のAlloyDB OmniをMisskeyで使う
Googleが開発しているPostgresql互換のAlloyDB Omniを触ってみました。
導入までをメモがてら残しておきます。
AlloyDB OmniはPostgresql互換でトランザクション性能が高いと謳われているデータベースサーバーソフトウェアです。
現在はプレビュー版が無料で利用できます。
検証環境
- CPU2コア、メモリ8GB
- Ubuntu 22.04
- alloydb-omni-0.3.0-preview-postgresql-15.2
AlloyDB Omniの最小要件
ちなみに、AlloyDB Omniの最小要件は次のとおりです。
- OS: Debian、Ubuntu、Red Hat Enterprise Linux version 8以上s
- CPU: 2 CPU (x86/AMD64)
- メモリ: 2GB (推奨は8GB)
- ストレージ: 20 GB
他にもいくつか要件はありますが、最近のVPSなら動くと思います。(ConoHaでは動きました。)
Dockerのインストール
AlloyDB OmniはDockerで動くため、インストールします。
Install Docker Engine on Ubuntu | Docker Docsを参考にします。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
鍵の登録とaptのsource listの更新が終わったら、Dockerをインストールします。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
AlloyDB Omni のインストール
基本的にはInstall AlloyDB Omni | AlloyDB for PostgreSQL | Google Cloudに書いてある通りに進めば良いです。
まずはAlloyDB Omni CLIをインストールします。
ただ、手順書通りにやるとapt updateする度に次の警告が出るため気持ち悪いです。
W: https://asia-apt.pkg.dev/projects/alloydb-omni/dists/alloydb-omni-apt/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
よって次のように読み替えました。
(REGIONはasiaを選びました。)
curl -fsSL https://asia-apt.pkg.dev/doc/repo-signing-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo-signing-key.gpg
sudo chmod a+r /etc/apt/keyrings/repo-signing-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/repo-signing-key.gpg] https://asia-apt.pkg.dev/projects/alloydb-omni alloydb-omni-apt main" \
| sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
あとはalloydb-cliをインストールすれば良いです。
sudo apt update
sudo apt install alloydb-cli
終わったらシステムチェックをしてサーバーが動作要件を満たしていることを確認します。
全てSUCCESSでしたら大丈夫です。
sudo alloydb system-check
AlloyDB Omniのデータを保存するためのディレクトリを作成します。
mkdir /opt/alloydb
作ったら、AlloyDB Omniの本体をインストールします。
sudo alloydb database-server install --data-dir=/opt/alloydb
起動するには次のコマンドを実行します。
statusで稼働状況の確認が、stopで停止ができます。
sudo alloydb database-server start
AlloyDB Omniへの接続
psqlコマンドの実行や、pgdump、restoreはdockerコンテナ経由で行うようです。
docker exec -it pg-service psql -h localhost -U postgres
AlloyDB OmniをMisskeyで使う
まずはpg-serviceでPostgresqlにログインし、ユーザーとデータベースを作成します。
CREATE ROLE "misskey-user" LOGIN CREATEDB PASSWORD 'password';
CREATE DATABASE "misskey-db" OWNER "misskey-user";
もしPostgresqlから移行する場合は、dumpファイルをインポートします。
cat misskey-db.dump | docker exec -i pg-service pg_restore -U misskey-user -d misskey-db -h localhost
あとは .config/default.ymlのPostgresqlサーバーのアドレスをAlloyDB Omniが動いているIPアドレスに変更すれば、Misskeyが使えます。
ちなみに、AlloyDB Omniのバックアップはpg_dumpコマンドで行えます。
docker exec pg-service pg_dump -U misskey-user -d misskey-db -h localhost > /tmp/misskey-db.dump
メモリとディスクの使用状況
500MBほどのデータベースをリストアして動かしたところ、メモリは4.7GBほど使用していました。
素のPostgresqlよりもメモリを使うようです。
$ free -h
total used free shared buff/cache available
Mem: 7.8Gi 4.7Gi 762Mi 2.0Mi 2.3Gi 2.7Gi
Swap: 13Gi 0.0Ki 13Gi
ディスクの使用量は11GBほど。
$ sudo du -hd1 /opt/alloydb/
4.0K /opt/alloydb/cores
8.0K /opt/alloydb/scripts
502M /opt/alloydb/data
11G /opt/alloydb/
中を覗くと default-alloydb-swap
というファイルが10GBほど使っているようです。
感想
データベースのサイズがそこまで大きくないせいか、私の環境ではPostgresqlと体感あまり変わらないですね。
今後、データサイズが大きくなった時に真価を発揮するかもしれません。
その後、かんなすきーのデータベースをお試しで入れて試しましたが、
データベースの全文検索結果が返ってくるまで、60秒から30秒程度になったので性能は良くなってそうです。
リードレプリカを追加したり、メモリを増やせばより快適になるかもしれませんが、そんなお金はないので今回はここまで。