PostgreSQLのデータベースをコピー

PostgreSQL中のデータベースをまるごとコピーして欲しいというリクエスト。
以前のエントリでcreatedbを使った手法を書きましたが、コピーされるオリジナルが忙しいDBだとロックの都合でこんなエラーがでます。

$ createdb --template=original_db copy_db
LOG:  文: CREATE DATABASE copy TEMPLATE original_db;
createdb: データベースの生成に失敗しました:ERROR:  元となるデータベース"original_db"は他のユーザによってアクセスされています
DETAIL:  他にこのデータベースを使っている 96 個のセッションがあります。

そこでdumpとrestoreを使ってコピー。
まずコピー先のDBを作成。

$  createdb copy_db ;
LOG:  文: CREATE DATABASE copy_db;

dumpの出力をそのままrestoreに食わせる。ラージオブジェクトがなければ-bは不要。

$ pg_dump -Ft -b original_db | pg_restore -d copy_db