文章目录
- 前言
- 1.读写分离的概念
- 2.读写分离的优点
- 一、Django配置读写分离
- 1.在配置文件中增加slave数据库的配置
- 2.创建数据库操作的路由分发类
- 3.配置读写分离路由
前言
1.读写分离的概念
为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。
2.读写分离的优点
提高读写性能
数据写入和读取是在不同的服务器上进行的,而且可以通过增加从服务器来提高数据库的读取性能
提高数据安全
因为数据已复制到从服务器,可以在从服务器上备份而不破坏主服务器相应数据
一、Django配置读写分离
1.在配置文件中增加slave数据库的配置
在Django的配置文件settings.py中,DATABASES中添加代码如下:
代码语言:javascript复制DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', # 主服务器的运行ip
'PORT': 3306, # 主服务器的运行port
'USER': 'django', # 主服务器的用户名
'PASSWORD': 'django', # 主服务器的密码
'NAME': 'djangobase' # 数据表名
},
'slave': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 8306,
'USER': 'django_slave',
'PASSWORD': 'django_slave',
'NAME': 'djangobase_slave'
}
}
2.创建数据库操作的路由分发类
在项目的utils中创建db_router.py,并进行定义
代码语言:javascript复制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
3.配置读写分离路由
在配置文件中增加
代码语言:javascript复制 # 配置读写分离
DATABASE_ROUTERS = ['项目名.utils.db_router.MasterSlaveDBRouter']