ダンプ&リストア(平文形式)
平文(SQL形式)で取得する。このとき、リストア時のためにテーブル削除やテーブル作成構文を含めるかどうかオプション指定できる。
リストアはpsqlコマンドで行う。
※INSERT文形式とCOPY文形式のどちらかを選択できます。INSERT形式の場合、「改行」を含むデータをこの平文形式で取得すると、リストアするときに改行が反映されなくなることがあったと思います(ちょっとうろ覚えなので違ったらすみません)。そのときは手動でCHR(10)をデータ中に追加して元に戻しましたが。
$ pg_dump testdb > /tmp/testdb.dump
ダンプ&リストア(アーカイブ形式)
ダンプ
アーカイブ形式(圧縮されてます)で取得する。リストア時のためのテーブル削除とかのオプションは不要(リストア時に指定する)。
$ pg_dump -F c testdb > /tmp/testdb.dump
平文とアーカイブの使い分けですが、開発中のように、SQL文を手動で書き換えたりするのなら平文の方がよいです。ただし上記のように改行は要注意だったと思います。運用中など、単純にバックアップ・リストアができればいいなら、アーカイブ形式の方が高速・容量も小さくて良いと思います。
リストア
-cでリストア前にデータを削除する
$ pg_restore -c -d testdb /tmp/testdb.dump
レプリケーション
こちらの方のページが詳しいです
PostgreSQL9.6 レプリケーション設定
※以下、断片的なメモです(そのうち整理します)
recovery.confに、restore_commandを設定することで、たしかレプリケーションが追い付かなくなったときのコマンドを指定できる。SCP時(SSH接続)に鍵指定が必要な場合は「-i 鍵ファイル名」をオプション指定すればよい。
recovery.conf
restore_command = 'scp マスタのホスト名orIPアドレス:/path/to/archive_log/%f %p'