簡體   English   中英

Django + PostgreSQL 在 EC2 實例上備份和恢復

[英]Django + PostgreSQL backup and restore on an EC2 instance

我有一個簡單的單體架構:

托管在 EC2 實例上的 Django 項目與運行在同一實例上的 PostgreSQL 數據庫通信。 考慮到流量和成本,我選擇了這種架構。 所以,不要在這個上給我 bash 我。 :)

為了災難恢復,我定期轉儲我的數據庫(完整轉儲pg_dump -U postgres fishercoder_db > fishercoder_dump.sql )。

在恢復時,我無法讓 Django 和恢復數據庫彼此很好地交談:

  1. 如果我啟動 Django 並首先運行./manage.py migrate ,然后從轉儲中恢復數據庫,它會失敗,因為 Django 在運行./manage.py migrate后已經創建了一堆內部表,它們的名稱完全相同在我的垃圾場;

  2. 如果我先從轉儲中恢復數據庫,那么我的 Django 應用程序由於運行./manage.py migrate的權限不足而無法正常運行,詳情請點擊此處

我的問題是:

  1. 我的災難恢復策略合理嗎? 還有其他更優化的方法嗎?

  2. 如何使這種方法起作用:在新的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM