最近需要用到Django的MySQL读写分离技术,查了一些资料,把方法整理了下来。

在Django里实现对MySQL的读写分离,实际上就是将不同的读写请求按一定的规则路由到不同的数据库上(可以是不同类型的数据库),我们需要做的就是,定义不同的数据库,定义不同的路由规则。

首先定义我们的主从数据库:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': sae.const.MYSQL_DB,

'USER': sae.const.MYSQL_USER,

'PASSWORD': sae.const.MYSQL_PASS,

'HOST': sae.const.MYSQL_HOST,

'PORT': sae.const.MYSQL_PORT,

},

'slave': {

'ENGINE': 'django.db.backends.mysql',

'NAME': sae.const.MYSQL_DB,

'USER': sae.const.MYSQL_USER,

'PASSWORD': sae.const.MYSQL_PASS,

'HOST': sae.const.MYSQL_HOST_S,

'PORT': sae.const.MYSQL_PORT,

},

}

定义我们的路由规则,路由规则可以有好多个,每个规则是一个类。如下所示:

# -*- coding:utf-8 -*-

class DBRouter(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 None

def allow_syncdb(self, db, model):

return None

最后在setting.py中加上这个路由规则:

DATABASE_ROUTERS = ['opensound.models.DBRouter']

因为Django不负责主从数据库之间的同步,所以如果在读取完数据后马上要对数据进行操作,可以显式地使用主数据库来读取并修改数据。

>>> Author.objects.using('other').all()

>>> my_object.save(using='legacy_users')

参考资料:https://docs.djangoproject.com/en/dev/topics/db/multi-db/

http://www.truease.com/thread-262-1-1.html

sae mysql django_Django中MySQL读写分离技术相关推荐

  1. MySQL的主从复制与读写分离技术实例(一)主从复制

    系统版本:CentOS 6.5   MySQL版本:mysql-5.5.38 生产环境下,如果对同一个数据库服务器即做写服务又做读服务,无论是从安全性.高可用性还是高并发等各个角度都不能满足实际需求, ...

  2. Spring Boot 实现 MySQL 读写分离技术

    你好,我是田哥 有同学私信我,如何实现读写分离,Spring Boot项目,数据库是MySQL,持久层用的是MyBatis. 其实,实现这个很简单的,首先思考一个问题: 在高并发的场景中,关于数据库都 ...

  3. MySQL高可用实现:主从结构下ProxySQL中的读写分离

    墨墨导读:ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎. ProxySQL提供强大的路由规则.当应用程序自身不支持读写分离时,DBA可以通过配置路由规则为应用程序提供透明的读写分 ...

  4. 基于 SpringBoot,来实现MySQL读写分离技术

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:Y ...

  5. 基于SpringBoot,来实现MySQL读写分离技术

    作者:Yrion cnblogs.com/wyq178/p/13352707.html 前言 首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离.加缓存 ...

  6. 基于Mysql主从同步的读写分离

    Mysql读写分离 mysql读写分离技术又称为mysql代理服务,通过在mysql主从同步的基础上增加一台代理服务器来实现将访问数据库时的读和写操作分配到不同服务器上来实现负载均衡,从而提高数据库访 ...

  7. (含PPT)MySQL托管服务架构及读写分离的优化

    关注我们获得更多内容 内容来源:2017 年 08 月 24 日,微软中国首席产品经理宋青见在"ODF 2017开源数据库论坛(北京)"进行<云原生的MySQL托管服务架构及 ...

  8. MySQL高可用和读写分离

    MySQL 高可用和读写分离 文章目录 MySQL 高可用和读写分离 一.从单机到集群 1.1 单机MySQL数据库到几个问题 1.2 单机MySQL到技术演进 二.MySQL的主从复制 2.1 核心 ...

  9. MySQL数据库主从复制与读写分离(图文详解!)

    目录 前言 一:MySQL数据库主从复制与读写分离 1.什么是读写分离? 2.为什么要读写分离呢? 3.什么时候要读写分离? 4.主从复制与读写分离 5.mysql支持的复制类型 (1)STATEME ...

最新文章

  1. 浅谈Android保护技术__代码混淆
  2. 专门入侵检测linux叫什么,入侵检测系统分析及其在Linux下的实现(上)
  3. 深入浅出:移动端(Android 和 iOS)数据采集埋点 SDK
  4. 十五、java的基本数据类型
  5. 忘记glassfish密码,那就重置密码呗
  6. 软件工程的难题-解耦问题
  7. Windows2003系统无法运行CS游戏的解决方案
  8. 在WIN7下用NETSH命令有效防止ARP攻击
  9. Filter Concatenationd的理解
  10. java 在圆圈里添加字母,在圆圈内写入数字或字母的方法
  11. python开根_python如何开根号
  12. 股票圣经后半部,继续讲讲共振和级别定于与盈利方式 (2019-03-02 00:43:49)
  13. 为什么阿里不推荐使用MySQL分区表?
  14. 牛顿的广义二项式定理---微积分推倒的开始
  15. dilated conv的理解
  16. 监控显示登录服务器超时,监控连接服务器超时怎么解决
  17. python中的date的含义_浅谈python中的dateime
  18. 关于财务业务模型的思考
  19. 嵌入式 linux下proc目录下的文件详解
  20. zz在Excel中作ROC曲线

热门文章

  1. pthread_mutex_lock用法
  2. 区分主机 cpu 计算机及计算机系统,小学计算机教案(二)
  3. 2009计算机统考真题,2009年计算机统考真题(完整版).PDF
  4. 二叉树的二叉链表存储结构构建以及先序遍历
  5. 春节添彩 福州花卉市场现“买花潮”
  6. 1491. [NOI2007]社交网络【最短路计数】
  7. UVA 11995 I Can Guess the Data Structure! STL
  8. 用FlashBoot轻松制作瑞星杀毒U盘!
  9. shell中while循环案例
  10. 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?