djangoのDBデータをAmazon S3にバックアップするパッケージ

2013年2月27日

Djangoプロジェクトで生成したデータベースデータをAmazon S3にバックアップするアプリ
「django-s3-backup」
をgithubにて公開いたしました。

「もうバックアップを心配する日々から解放されたい!」
 
そんな気持ちに応えるアプリです。

コマンドラインベースのアプリで、manage.pyにbackup, restoreコマンドを提供します。
データベース内の全データを堅牢性の高いS3にJSON形式でバックアップ。
データをレストアするときはS3からJSONデータを読み込みレストアを行うことが可能です。
DjangoのORMを駆使してテーブル毎のデータをJSON化しますので、Postgresqlでバックアップしたものをレストア時にMySQLに。といったマイグレーションツールとしても使えます。

それでは具体的に使い方、特徴を見ていきましょう。


Amazon S3とは、99.999999999%の堅牢性を誇示する事実上一度データを預けると消えることのないデータストレージです。バックアップはシステムの健全な運用を行ううえで、非常に大切な作業ですが、HDDが飛んだり、データを誤って消してしまったり、データベースのバージョンアップで単純にデータをレストアするのが難しくなったり、、とどこまでいっても心配が絶えません。

つまり、「安心するためにバックアップするけど、きちんとバックアップしたデータが機能するかどうか心配。。」といった、心理的矛盾がつきまといます。これを解消するためにはバックアップ先の堅牢性を担保することと、データベースシステムの仕様に左右されないフォーマットでのバックアップだと考えました。

 

そこで登場するのが「django-s3-backup」です。githubにて公開していますのでご覧下さい。


このアプリの特徴は以下の通りです:

  1. manage.pyサブコマンド(backup, restore)の提供
  2. DB仕様に左右されない汎用フォーマットJSON形式によるS3へのバックアップ
  3. 並列アップロードによる高速化(python27+)
  4. 巨大テーブルのサポート
  5. DjangoがサポートするDBMS/NoSQLのサポート
    1. Postresql, MySQL, Oracle, SQLite, MongoDB, SimpleDB, CouchDB etc...(NoSQLは要django-nonrel
    2. マイグレーションツールとしての利用も可能
  6. トランザクションのサポート
  7. メモリ効率を意識したJSONストリームencoder/decoder機能

ライセンスは「MITライセンス」ですので、みなさんいろいろと使ってみて下さい。

また、より使えるものにするために協力者も募集中です。

ご要望・ご協力をお待ちしております。

 

次回は、使い方について解説します。