LoginSignup
1
1

More than 5 years have passed since last update.

sqlite3 : Online Backup を bash から実行する

Posted at

概要

  • sqlite3 データベースファイルを、システム稼動中に安全にオンラインバックアップする
  • できるだけ簡単に実施したい

背景

データロガーアプリの DB に sqlite3 を使用している。
高頻度でバックアップを行いたい。

  • 更新頻度: 1 秒
  • DB ファイルサイズ: > 数 100 MB
  • バックアップの頻度: 10 分

問題 : バックアップが書き込みとバッティングする。

  • cp すると、数回に一回ファイルが破損
  • sqlite3 ".backup" は、 Error: database is locked が発生

所要時間は下記の通り。

time cp db.sqlite3 db-backup.sqlite3
> real  0m0.666s
> user  0m0.000s
> sys   0m0.234s
time sqlite3 db.sqlite3 ".backup db-backup.sqlite3"
> real  0m1.878s
> user  0m0.290s
> sys   0m0.970s

方法

.timeout を設定する

sqlite3 db.sqlite3 <<EOF
.timeout 1000
.backup db-backup.sqlite3
EOF

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1