Software

Docker 的 PostgreSQL 如何做 dump

後來有部分專案換成了 postgresql 所以這邊也記錄一下 PostgreSQL 如何做備份還原,而 PostgreSQL 有兩種方式

  1. 產出純 sql script
    備份 DB

    docker exec -i CONTAINER pg_dump -U USER -d DATABASE > backup.sql

    還原 DB

    docker exec -i CONTAINER pg_dump -U USER -d DATABASE < backup.sql
  2. 採用 PostgreSQL 格式
    備份 DB

    docker exec -i CONTAINER pg_dump -Fc -U USER -d DATABASE > backup.dump

    還原 DB

    docker exec -i CONTAINER pg_restore -U USER -d DATABASE < backup.dump

    使用 pg_restore 的時候如果遇到表權限問題可以加上 --no-owner來略過權限
    3.採用分檔案形式
    備份DB

    docker exec -i CONTAINER pg_dump -Fd -j 8 -U USER -d DATABASE  backup_dir

    還原DB

    docker exec -i CONTAINER pg_restore -U prd -j 8 -d DATABASE backup_dir

以上只是一些比較單純常用到的,如果是大型資料庫建議可以使用 -Fd 來做平行 Table 轉存