f pg_dump 備份所有的postgres user 資料庫 ~ 迪貝之家

Pages

pg_dump 備份所有的postgres user 資料庫

從書本看到的
偷師阿..........
多簡便的一段程式
就搞定了一切
#!/bin/sh
BACKUP_DIR=/home/postgres/backup
pg_dumpall -g > $BACKUP_DIR/globals.sql
for x in $(psql -c "SELECT datname FROM pg_database WHERE datname NOT IN ('postgres', 'template0', 'template1')" postgres -A -t)
do
pg_dump -Fc $x > $BACKUP_DIR/$x.dmp
done
如果是enterprisedb
把postgres改成edb
就ok了啦~~


上述是custom format
我還測了directory format
它有個好處
pg_dump -j 可以起多個session來備份
幾年前我還手動分拆表格
跑在不同的pg_dump script裡頭
真是個大白癡阿......
不過那個時候我是用pipe 連接pg_dump及pg_restore
直接在target 主機做資料不落地搬移轉
那時候也是被逼出來的
沒辦法的狀況下,借用Oracle的經驗想出來的方法
為的就是降低downtime
directory 備份我倒是第一次測試
抓的是AWS Postgres Aurora的資料
備份指令:
C:\"Program Files"\PostgreSQL\12\bin\pg_dump.exe -h userdb.cluster-crulowpcuo5d.ap-northeast-1.rds.amazonaws.com -U dbdmin -d userdb -Fd -f d:\test
還原指令:
C:\"Program Files"\PostgreSQL\12\bin\pg_restore.exe -h userdb.cluster-crulowpcuo5d.ap-northeast-1.rds.amazonaws.com -U dbdmin -d test d:\test