[英]Django + PostgreSQL backup and restore on an EC2 instance
我有一個簡單的單體架構:
托管在 EC2 實例上的 Django 項目與運行在同一實例上的 PostgreSQL 數據庫通信。 考慮到流量和成本,我選擇了這種架構。 所以,不要在這個上給我 bash 我。 :)
為了災難恢復,我定期轉儲我的數據庫(完整轉儲pg_dump -U postgres fishercoder_db > fishercoder_dump.sql
)。
在恢復時,我無法讓 Django 和恢復數據庫彼此很好地交談:
如果我啟動 Django 並首先運行./manage.py migrate
,然后從轉儲中恢復數據庫,它會失敗,因為 Django 在運行./manage.py migrate
后已經創建了一堆內部表,它們的名稱完全相同在我的垃圾場;
如果我先從轉儲中恢復數據庫,那么我的 Django 應用程序由於運行./manage.py migrate
的權限不足而無法正常運行,詳情請點擊此處。
我的問題是:
我的災難恢復策略合理嗎? 還有其他更優化的方法嗎?
如何使這種方法起作用:在新的 EC2 實例上恢復我的站點,並使用從 a.sql 轉儲中恢復的數據庫。
我為此編寫了自己的一組實用程序,因為我永遠無法完全記住必要的命令行選項: https://github.com/FlipperPA/django-pg-copy
您是否嘗試過使用這些選項的pg_restore
?
pg_restore -c --if-exists -h localhost -U [your_django_user] -d [your_django_db] fishercoder_dump.sql
您可能還需要為轉儲考慮一些附加參數:
pg_dump -Fc -c -x ...
-Fc
:自定義格式-c
:(或--clean
):轉儲干凈的版本,帶有 DROPs 對象。 -x
:跳過轉儲訪問權限
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.