Skip to content

PostgreSQL のバックアップツール? wal-e が便利

PostgreSQL のバックアップツール? wal-e が便利 published on PostgreSQL のバックアップツール? wal-e が便利 へのコメントはまだありません

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 のコマンドを指定しておく。

リストアに関しては後述。

Continue reading PostgreSQL のバックアップツール? wal-e が便利

SquerylでPostgreSQLのgeometry関連関数を使う

SquerylでPostgreSQLのgeometry関連関数を使う published on SquerylでPostgreSQLのgeometry関連関数を使う への1件のコメント

以前別ブログで、Squerylで最初からは用意されていない集計関数(median)を実装する、というエントリを書いた。今回はそれと似た内容で、PostgreSQLの位置情報の関数をSquerylで使えるようにしてみる。

Squeryl 0.9.5-6

距離を調べるSQL

今回使いたいのは、2点間の距離を調べる <-> という関数。例えば、以下のクエリーのように、ある位置(36.726637,139.526557)から3000m以内にある点のうち、距離が近い順に30件取得したいとする。これをSquerylを使って実現したい。

SELECT p.*, (p.latlng <-> POINT(36.726637,139.526557)) * 111000 as l
FROM place p
WHERE (p.latlng <-> POINT(36.726637,139.526557)) < 3000.0 / 111000.0
ORDER BY p.latlng <-> POINT(36.726637,139.526557)
LIMIT 30

Continue reading SquerylでPostgreSQLのgeometry関連関数を使う