当前位置:Gxlcms >
数据库问题 >
django 读写分离(数据库连接设置两个名字,一个读,一个写,读写数据库端口、库、用户不同,ip可以不同或相同)
django 读写分离(数据库连接设置两个名字,一个读,一个写,读写数据库端口、库、用户不同,ip可以不同或相同)
时间:2021-07-01 10:21:17
帮助过:25人阅读
‘default‘: {
‘ENGINE‘:
‘django.db.backends.mysql‘,
‘NAME‘:
‘wanwen‘,
‘USER‘:
‘root‘,
‘PASSWORD‘:
‘root‘,
‘HOST‘:
‘192.168.1.102‘,
‘PORT‘:
‘3306‘, # 数据库使用的端口
‘OPTIONS‘:{
‘init_command‘:
‘SET default_storage_engine=INNODB;‘}, #设置数据库为INNODB,为第三方数据库登录用
‘CONN_MAX_AGE‘:
600, #数据库持久化,此处设置600秒即10分钟,有助于减少内存泄漏或导致一种片状连接的问题,可以设置更长,建议不超过1小时
#设置的持久化连接每次都将存活10分钟
},
‘slave‘: {
‘ENGINE‘:
‘django.db.backends.mysql‘,
‘NAME‘:
‘wanwenread‘,
‘USER‘:
‘readuser‘,
‘PASSWORD‘:
‘redpasswd‘,
‘HOST‘:
‘192.168.1.102‘,
‘PORT‘:
‘8306‘, # 数据库使用的端口
‘OPTIONS‘: {
‘init_command‘:
‘SET default_storage_engine=INNODB;‘}, # 设置数据库为INNODB,为第三方数据库登录用
‘CONN_MAX_AGE‘:
600, # 数据库持久化,此处设置600秒即10分钟,有助于减少内存泄漏或导致一种片状连接的问题,可以设置更长,建议不超过1小时
# 设置的持久化连接每次都将存活10分钟
}
}
2.1.在项目根目录下创建数据库路由文件db_router.py,内容如下:
class MasterSlaveDBRouter(object):
"""数据库主从读写分离路由"""
def db_for_read(self, model, **hints):
"""读数据库"""
return "slave"
def db_for_write(self, model, **hints):
"""写数据库"""
return "default"
def allow_relation(self, obj1, obj2, **hints):
"""是否运行关联操作"""
return True
2.2 .一主多从
2.3.分库分表
2.4. 手动分离
3.项目setting配置文件中配置读写分离路由:
# 数据库配置读写分离
DATABASE_ROUTERS = [‘db_router.MasterSlaveDBRouter‘,] # 指定你的路由分发类,读都在"slave"上,写都在"default"上
django 读写分离(数据库连接设置两个名字,一个读,一个写,读写数据库端口、库、用户不同,ip可以不同或相同)
标签:data masters 读写 不同 nod options net write code