随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

主从分离:https://blog.csdn.net/weixin_39726347/article/details/88051089

1.在项目settings.py下的读写数据库配置如下:

复制代码
DATABASES = {
    '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"上

 4.创建数据库表:

python manage.py makemigrations  # 在migrations文件夹下生成记录

python manage.py migrate --database default  # 默认可以不写参数 ,直接使用 python manage.py migrate 

python manage.py migrate --database slave  # 在从库再迁移一次,就可以在上面建立相同的表,这里的database后面的名字(slave)要和设置中的数据库设置的名字(slave)一样,注意不是库名(readuser)

 5.数据库配置

5.1.进入服务器,使用 :

  cd  //

  find . -name my.cnf

    找到my.cnf配置,默认安装的数据库位置为./etc/my.cnf,lampp的数据库配置文件位置为:/opt/lampp/etc/my.cnf

5.2. 

posted on   大话人生  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示