状況
以下の二つのデータを読み書きするWebアプリがあります。
- 大量のバイナリファイル(1ファイル数十MB)
- 各バイナリファイルに付随する情報を書き込んだDB
基本的にWebアプリからアクセスして使用するため、
ファイルとDB間の整合性はWebアプリが担保しております。
Webアプリがバイナリファイルに行う操作は以下のとおりです。
- バイナリファイルの追加に合わせて、DBの行追加を行う。
- DBの行削除を行う時、バイナリファイルの削除も合わせて行う。
- 登録済みのバイナリファイルを読み取って配信する
- バイナリファイルの変更は発生しない。
解決したいこと
これらのデータを、サービスを止めずにバックアップしようと考えたとき、
バックアップデータに不整合がおきないようにする方法に悩んでおります。
現状、考えている方法は以下のとおりです。
- バイナリファイル ⇒ blobxferでバックアップ先にコピーする
- DB ⇒ mysqldumpの結果をバックアップ先にコピーする
実行順序に関係なく、バックアップ途中でデータに変更があった場合、
バイナリファイルはあるのにDBに情報が無い、またはその逆が起きてしまいます。
不整合が起きない方法、または起きても後から解消できる方法は無いでしょうか?
環境
- OS: Ubuntu 18.04
- DB: MySQL 8.0
- Webアプリ: Python 3.7.3
- バックアップ先: Azure Blob Storage
あなたの回答
tips
プレビュー