当前位置: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   

人气教程排行