zoukankan      html  css  js  c++  java
  • 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
    """
    
  • 相关阅读:
    document
    reg() replace
    BOM和DOM的区别
    注册表
    实现移动端通过下拉菜单栏实现pc端的导航栏
    通过ajax获取api,并且通过jquery获取自定义属性
    git的使用
    当盒子不设置width,而设置max-width遇到的问题
    CSS之position
    JavaScript之数组常用的方法
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12966220.html
Copyright © 2011-2022 走看看