🙌
SurrealDBのデータを永続化(persistent)する
※ 2022/11/15: volumes
へのバインドについて追記してタイトルを変更
SurrealDB、いじってます
環境
surreal 1.0.0-beta.8+20220930.c246533 for linux on x86_64
永続化したい
SurrealDBとはなんぞや、という話についてはいったん割愛します。
おもしろそうなので触ってみているところなのですが、dockerでSurrealDBを立ち上げるにあたって、「永続化どうやるの?」という疑問にぶち当たりました。
mysqlやpostgresqlだとデータを保存しているファイルがあって、そのファイルの格納先であるディレクトリをホストのディレクトリに丸ごとマウントしたりする、あれです。
こうするようです
compose.yaml
services:
surrealdb:
container_name: surrealdb
image: surrealdb/surrealdb:latest
command: start --log debug --user root --pass root file://database # <- コレ
ports:
- "8000:8000"
volumes:
- type: bind
source: ./surrealdb/database # <- マウント先はお使いの構成に合わせてよしなに
target: /database
公式のQuick Startではmemory
のように記述してオンメモリ動作を指定していたオプションに、file
スキーマでディレクトリを指定すると、そこへ永続化します。このfile://database
はコンテナ内に作られますので、volumes
でホストのディレクトリにバインドしてあげればよいです。
ちなみにdocker compose up -d
で起動直後のdatabaseディレクトリはこんな感じになりました。何がなんのファイルかまではよくわかってませんが、とりあえずログはLOG
ファイルに順次追記されていくようです。
❯ tree .
.
├── 000004.log
├── CURRENT
├── IDENTITY
├── LOCK
├── LOG
├── MANIFEST-000005
└── OPTIONS-000007
せっかくなので後ほど「使ってみた」記事も書いてみようと思います。
ではまた!
追記(2022/11/15)
ファイルシステムへのマウントは非推奨とのことで追記しました。Volumeに永続化する場合はこうなります。
compose.yaml
services:
surrealdb:
container_name: surrealdb
image: surrealdb/surrealdb:latest
command: start --log debug --user root --pass root file://database # <- コレ
ports:
- "8000:8000"
volumes:
- type: volume
source: surrealdbdata # volume名はよしなに。volumesで定義した名前と合っていればOKです。
target: /database
volumes:
surrealdbdata: # <- この名前を合わせます
Discussion