mysql以及redis的主从搭建

django项目配置mysql主从数据库实现读写分离

  • 1、在配置文件中添加slave数据库的配置
"""
DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.mysql',
    	'HOST': '127.0.0.1',
    	'PORT': 3306,  # 主
    	'USER': 'root',   # 主数据库用户名
    	'PASSWORD': 'password', # 主数据库密码
    	'NAME': 'database'  # 主数据库名字
		},
	'slave': {
    	'ENGINE': 'django.db.backends.mysql',
    	'HOST': '127.0.0.1',
    	'PORT': 3307,  #从
		'USER': 'root',   # 从数据库用户名
  		'PASSWORD': 'password', # 从数据库密码
  		'NAME': 'database'  # 从数据库名字
  		}
  	}

"""
  • 2、创建数据库操作的路由分发类
  • 在项目的utils中创建db_router.py文件,并在该文件中定义一个db类,用来进行读写分离
"""
class MysqlDBRouter(object):
	"""数据库主从读写分离路由"""

	def db_read(self, model, **hints):
    	"""读数据库"""
    	return "slave"

	def db_write(self, model, **hints):
    	"""写数据库"""
    	return "default"

	def allow_relation(self, obj1, obj2, **hints):
    	"""是否运行关联操作"""
    	return True

"""
  • 3、项目settings配置文件中配置读写分离的路由
"""
# 配置读写分离
DATABASE_ROUTERS = ['itme_name.utils.db_router.MysqlDBRouter']  # 指定你的路由分发类
"""

redis的主从配置

  • 常用命令
"""
1、根据配置文件启动redis:redis-server  redis.config
2、启动redis客户端:redis-cli-p port
3、slaver连接master:slaveof host:ip
4、关闭redis:shutdown
5、查看主从信息:info replication
"""
  • 配置
"""
1、比如说按照1主2从的结构搭建,即1个master,2个slaver节点
2、redis配置文件redis.conf的配置
	master:6379
	slaver1:6381  slaveof 127.0.0.1 6379
	slaver2:6382  slaveof 127.0.0.1 6379
3、配置主从节点:通过info replication查看主从关系
4、master节点设置key后异步同步到slaver节点;slaver节点只能读取数据,不能修改
5、主节点挂掉之后,手动将s1子节点升级为master(slaveof no one)
	master的节点:shutdown关闭节点
	slaver1节点:slaveof no one将其升级master节点
	slaver2节点:使用slaveof 127.0.0.1 6381重连slave1将其视为master节点
6、哨兵模式:自动监视master节点,当前挂掉后,自动将slaver节点变为master
	sentinel.conf配置文件,修改sentinel monitor host6379(主机名称,随便起) 127.0.0.1 6379 1(代表选举,某个slaver得票超过1票即称为新的master) 
	启动sentinel: ./redis-sentinel ../sentinel.conf
"""
posted @ 2020-05-26 16:09  alen_zhan  阅读(368)  评论(1编辑  收藏  举报
返回顶部