• django 读写分离(数据库连接设置两个名字,一个读,一个写,读写数据库端口、库、用户不同,ip可以不同或相同)


    主从分离: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. 

  • 相关阅读:
    【JAVA】日志管理slf4j
    【JAVA】从java线程来看java内存模型
    【数据结构】---栈和队列
    【数据结构】---链表
    C++ 第10章 反省程序与C++标准模板库
    回忆C++知识点(1)
    C++ 第8章 多态性
    C++ 第7章 继承与派生
    C++ 第6章 数组、指针、字符串
    C++ 第5章 数据的共享与保护
  • 原文地址:https://www.cnblogs.com/jingzaixin/p/13381855.html
Copyright © 2020-2023  润新知