我有Django的MySQL数据库后端的主 - 从复制设置.目前我只为Master DB阅读和写作,但我的仪表板非常查询.我正在寻找一个选项,我可以在其中定义如下DATABASES
DATABASES = {
'default_slave': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
}
Run Code Online (Sandbox Code Playgroud)
对于仪表板,报告和各种其他应用程序,我想要做的是:
尝试连接:default_slave:default_slave如果可以使用,则使用default
也就是说,如果slave已启动,则从slave数据库本身获取报告,如果没有从master数据库获取报告.
Catch是,slave可以是up或down,我希望这可以动态选择哪个数据库用于获取报告,基于可更新性.
这可能吗 ?我可以预先测试连接并向前移动吗?
有了这个,我会在Master中写和sync_db,并且如果slave已启动,它总是从Slave读取.
需要一些解决方案/提示raw queries以及orm queries
路由器的概念看起来不错,但是奴隶的后备不可达,我不知道这种可能性.
UPDATE
如何进行MULTI-DATABASE
DATABASES
DATABASES = {
'default_slave': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
'default': {
'ENGINE': 'django.db.backends.mysql', …Run Code Online (Sandbox Code Playgroud)