我有一个用Django框架编写的应用程序,可以提取PostgreSQL数据库。
由于我们对停机时间和冗余非常敏感,因此数据库使用到两个热备份服务器的流复制。但是,就目前而言,当主数据库关闭时,我必须手动更改settings.py
中的数据库服务器地址,以便Django切换。
我对Django数据库路由还不十分熟悉,所以我不确定该怎么做,但是可以将Django中的所有三个数据库配置为具有自动路由层 strong>确定其中哪个是当前活动主服务器,并相应地路由其查询?
(在运行时将是完美的,但我会乐于接受“启动时的条件”,并在过程文档中添加一行以对数据库故障转移做出反应时重新启动uwsgi vassal)。
答案 0 :(得分:0)
您可以使用 Django 使用多个数据库。 ORM 对此有很好的支持。这可以从settings.py
开始。另外,还可以设置默认数据库,该数据库将由 Django 使用(默认)。
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},
'users': {
'NAME': 'user_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'priv4te'
}
}
DATABASES
字典的键是“别名” 。
Django的 QuerySet
支持using(db_alias)
方法,该方法可帮助您在数据库之间进行路由。
答案 1 :(得分:-1)
这是Django不能/不应该处理的事情,因为还有许多其他解决方案可以提供此功能。
您可能想改为放置某种负载平衡器,该负载平衡器将能够自动确定数据库的失败实例。
如果您想快速测试一下,这是一个很好的仓库,它结合了MariaDB Galera集群和docker swarm(docker swarm提供的负载平衡):https://github.com/colinmollenhour/mariadb-galera-swarm