PostgreSQL のバックアップをしたい
今自分たちで作っているサービスでは、成り行き上 PostgreSQL を使っている。で、最近バックアップの設定をしたんだけど、今までと同じく pg_dump をどっか別の場所に保存するってのだとつまらないなと思ってちょっとぐぐってみたら wal-e ってのがあった。結論から書くと、これかなり便利。
ただし、ドキュメントはあまり分かりやすいとは言えない。
wal-e がやってくれること
大雑把には
要は PITR (Point In Time Recovery) のためのバックアップが取得できる。PostgreSQL の PITR に関しては、公式サイトのページを参照。
具体的には、
- ベースバックアップの取得
- WAL (Write Ahead Log) の取得
をしてくれる。で、それを Amazon S3, Windows Azure Blob Service, OpenStack Swift に保存することができる。
リストアも、最新へのリストア、あるいは過去へのリストアが出来る。
少し細かい仕組みなど
ベースバックアップは、ユーザーがコマンドで起動するもので、通常は crontab などに設定する。ベースバックアップの取得前後で、begin backup, end backup を実行してくれ、また、ベースバックアップの内容はS3などに自動的に送ってくれる。
次に WAL だが、WAL のコピーは、postgresql.conf に記載した archive_command の設定に従って行われるので、ここに wal-e のコマンドを指定しておく。
リストアに関しては後述。