Django+Docker实现MySQL读写分离(数据库主从配置)

Django+Docker实现MySQL读写分离(数据库主从配置)

一.MySql数据库主从配置

数据库的主从配置已经介绍过了,附上链接:
MySQL数据库 + Docker主从同步搭建配置

二. Django实现MySQL读写分离

1. 增加slave数据库的配置

在djanog项目的setting.py文件数据库的配置中添加slave从数据库配置项

DATABASES = {
    'default': { # 写(主机)
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'HOST': '127.0.0.1', # 数据库主机
        'PORT': 3306, # 数据库端口
        'USER': 'root', # 数据库用户名
        'PASSWORD': 'mysql', # 数据库用户密码
        'NAME': 'database_name' # 数据库名字
    },
    'slave': { # 读(从机)
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 8306,
        'USER': 'root',
        'PASSWORD': 'mysql',
        'NAME': 'database_name'
    }
}

# 数据库读写路由
DATABASE_ROUTERS = ['utils.db_router.MasterSlaveDBRouter']

2. 创建和配置数据库读写路由

1.创建数据库读写路由

utils.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

Django+Docker实现MySQL读写分离(数据库主从配置)_第1张图片

2.在setting.py文件中配置数据库读写路由

DATABASE_ROUTERS = ['utils.db_router.MasterSlaveDBRouter']

你可能感兴趣的:(项目部署,Django,数据库,django,数据库,mysql)