データベースの dump
pg_dump -d ${dbname} > /var/tmp/dbname.dump
特定のテーブルのみ dump
pg_dump -d ${dbname} -t ${tablename} > /var/tmp/dbname.dump
特定のテーブル 以外を dump
pg_dump -d ${dbname} -T ${tablename} > /var/tmp/dbname.dump
データベースのリストア
pg_restore -d ${dbname} --jobs8 /var/tmp/dbname.dump
jobs
オプションは、indexの作成などを複数ジョブで実行するためのコマンド。CPUの数以内にする
上記の場合、dumpファイルにDBの削除/生成の命令は入らないので、リストア前に手動でDBを削除/生成する必要がある
COPYコマンドを使って、データの一部だけdump,restoreする方法
データのdump
COPY (SELECT * FROM ${table_name} WHERE id > 123456789) TO '/var/tmp/tablename.dump';
データのrestore
COPY (SELECT * FROM ${table_name} WHERE id > 123456789) FROM '/var/tmp/tablename.dump';
- テーブルは生成されないので、先に以下のコマンドでdump/restoreしておく
テーブルのスキーマのみdumpする方法
pg_dump -d idoudb --no-acl -t ${table_name} -s > /var/tmp/table_name_schema.sql
Aurora PostgreSQLにCOPYコマンドでrestoreする方法
Auroraにはファイルを置けないので、標準入力を使う
cat /var/tmp/tablename.dump | psql -c "COPY tablename FROM STDIN"