私は、マスターリモートのMySQLデータベースサーバーと、そのレプリカを私のDjangoアプリケーション用のスレーブデータベースとして設定しました。どちらもamazon ubuntu ec2インスタンス上で動作します。マスターデータベースがダウンしている場合に自動的にスレーブデータベースにアクセスするようにDjangoを設定するには?Django内の複数のデータベースサーバを自動的に切り替える方法。
答えて
Djangorは、私はあなたの例を与える 、この疑問を解決するために、DBのルータを使用します。
class DBRouter(object):
"""
A router to control all database operations on models in the
auth application.
"""
def db_for_read(self, model, **hints):
"""
Attempts to read auth models go to auth_db.
"""
if model._meta.app_label == 'xxx':
return 'salvedb' # this name you defined in settings of django project
return None
def db_for_write(self, model, **hints):
"""
Attempts to write auth models go to auth_db.
"""
if model._meta.app_label == 'xxx':
return 'salvedb'
return None
def allow_relation(self, obj1, obj2, **hints):
"""
Allow relations if a model in the auth app is involved.
"""
#if obj1._meta.app_label == 'auth' or \
# obj2._meta.app_label == 'auth':
# return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
"""
Make sure the auth app only appears in the 'auth_db'
database.
"""
#if app_label == 'auth':
# return db == 'auth_db'
return None
とあなたの設定にこのルータを追加します。
DATABASE_ROUTERS = ['path.routers.DBRouter']
か、ジャンゴのドキュメントを読むことができます公式サイト:https://docs.djangoproject.com/en/1.11/topics/db/multi-db/#automatic-database-routing
あなたのソリューションは別々のDBに別々のモデルデータを格納するためのものだと思います。私は別のアプリケーション用に別々のDBを使用していません。私はすべてのアプリのデータをマスタDBとスレーブDBに同期して保存しています。私が望むのは、マスターが失敗した場合、DjangoはスレーブDBから読み書きする必要があることです。 – albinantony143
書き込みと読み取りの分離は、django db routerで行うことができます。私はSwitch of MasterとSlaveをDevOpsで実行できると思います。 – Hayden
- 1. メディアプレーヤーを次のトラックに自動的に切り替える方法は?
- 2. クロムコンソールを特定のフレームに自動的に切り替える
- 3. ユニックスのユーザーを自動的に切り替える
- 4. 動的ドロップダウンメニューの切り替え方向
- 5. 起動時にビューを自動的に切り替えます。
- 6. springboot異なるデータソースを動的に切り替える方法
- 7. スタイルシートを動的に切り替える
- 8. フィールドセットを動的に切り替える
- 9. データベースを動的に切り替える
- 10. Datatables自動的にページ間を切り替える
- 11. RTSラインを自動的に切り替える(Delphi Prism SerialPort)
- 12. ASP.NETテキストボックスでシステム言語を自動的に切り替える
- 13. iframeへの切り替え方法/切り替え方法
- 14. androidの複数のスレッドを切り替える方法
- 15. 画面を動的に切り替える方法
- 16. Laravel - データベース間を動的に切り替える方法
- 17. Spring Securityでアプリケーションコンテキストを動的に切り替える方法は?
- 18. 複数のチェックボックスを切り替える
- 19. ディスクリプタセットと自動レイアウトの切り替え
- 20. HAProxyピア間の自動切り替え方法
- 21. jstreeの動的メニューでの切り替え方法
- 22. 詳細レポートに自動的に切り替えます
- 23. 動的に作成されたコンポーネントの切り替え/切り替え
- 24. Code Firstの複数のコンテキスト(同じベースの)を動的に切り替える方法
- 25. Emacs、R、Org-mode:Rコードブロック内で自動的にESSモードに切り替える方法は?
- 26. 複数のIDのスライド切り替え
- 27. 2つの実行中のプログラムを自動的に切り替える
- 28. gitでブランチを切り替えるたびにnpmを自動的に再起動する方法は?
- 29. 基盤を6つのタブに自動的に切り替える
- 30. SeleniumをPythonでフレーム内のフィールドに切り替える方法
[スレーブがダウンしている場合の[Django Multiple Databases Fallback to Master]]の重複可能性(https://stackoverflow.com/questions/26608906/django-mult ips-databases-fall-to-master-if-slave-is-down) – kmcodes
[この解決方法]を確認してください(https://stackoverflow.com/questions/26608906/django-multiple-databases-fallback-to-master- if-slave-is-down)を指定します。あなたの質問のより詳細なバージョンです。 – kmcodes