网站注册平台怎么注册vscode 网站开发教程
文章目录
- 一、复制是什么?
 - 二、 基本命令
 - 三、 配置(分为配置文件和命令配置)
 - 3.1 配置文件
 - 3.2 命令配置
 - 3.3 嵌套连接
 - 3.4 关闭从属关系
 
- 四、 复制原理
 - 五、 缺点
 
以下是本篇文章正文内容
一、复制是什么?
主从复制
- master(main redis)以写为主,slave(secondary redis)以读为主,不能写数据
 - 当master数据变化时,自动将新的数据异步同步到其他slave数据库
 
功能
- 读写分离:主机只写,从机只读
 - down机恢复:主机down,从机数据可用,但仍是slave,等待主机恢复
 - 数据备份
 - 水平扩容支撑高并发
 
配slave不配master
 权限细节
- master如果配置了 requirepass 参数,需要密码登录
 - slave 需要配置 masterauth来设置检验密码,否则的话master会拒绝slave的访问请求
 
二、 基本命令
info replication  // 查看复制节点的主从关系和配置信息replicaof/slaveof  主库IP 主库端口   
// replicaof/slaveof这两个一样,一般写入进redis.conf配置文件内,但是政治原因redis 5版本后一般用replicaof
// 在运行期间修改slave节点的信息,如果该数据库已经是某个数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步replicaof/slaveof  no one     // 使当前数据库停止与其他数据库的同步,升级为主数据库 
三、 配置(分为配置文件和命令配置)
3.1 配置文件
master 主机中的conf文件需要配置:
- 开启
daemonize yes - 注释掉
bind 127.0.0.1 protected-mode no- 指定redis运行端口 
port 6379 - 指定当前工作目录,
dir 工作路径(有redis.config文件的路径) - pid文件名字,可以默认 
pidfile - log文件名字 
logfile - 连接密码 
requirepass - dump.rdb名字 
dbfilename - AOF设置,可选不开启,
appendonly yes;appendfilename 
slave 从机redis.conf中需要配置 从机配置上主机的ip、端口 replicaof、密码 masterauth
注意防火墙配置,无法连接时可能需要关闭防火墙
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld添加 :firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入: firewall-cmd --reload
查看: firewall-cmd --zone= public --query-port=80/tcp
删除: firewall-cmd --zone= public --remove-port=80/tcp --permanent
 
查看日志信息是否连接成功
 master主机日志:
 
 通过日志可以查看连接状态,日志保存目录在配置文件中logfile 查看。
3.2 命令配置
命令配置是一次性,当重启后就不再生效。
 在需要配置为从机的redis中运行:
replicaof  主库IP 主库端口   # 如果用redis 5.0之前版本,使用:  slaveof 主库IP 主库端口 
masterauth xxxx           # 如果主节点需要密码认证,则需要加上这行。主节点密码为:xxxx。
 
配置VS命令的区别
- 配置,持久稳定
 - 命令,当次生效
 
3.3 嵌套连接
上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master。
- 可以有效减轻主master的写压力
 - 中途变更主从关系时:会清除之前的数据,重新建立拷贝最新的
 - 中间的master不具备写能力
 
replicaof 新主库IP 新主库端口
 

3.4 关闭从属关系
replicaof no one # 使当前数据库停止与其他数据库的同步,转成主数据库
 
关闭后,数据还在从redis中
四、 复制原理
slave启动,同步初请
- slave启动成功连接到master后会发送一个
sync命令 - slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除
 
首次连接,全量复制
- master节点收到
sync命令后会在后台开始保存快照(即RDB持久化,主从复制会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化后,master将rdb快照文件和缓存的命令发送到所有slave,用以完成一次完全同步 - 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
 
心跳持续,保持通信
- repl-ping-replica-period 10 
- master发出PING包的周期,默认是10秒
 
 
进入平稳,增量复制
- master 继续将新的所有收集到的修改命令自动一次传给slave,完成同步
 
从机下线,重连续传
- master 会检查backlog里面的offset,master和slave都会保存一个复制的offset,里面有一个masterId
 - offset 是保存在backlog 中的。master只会把已经复制的offset后面的数据赋值给slave,类似断点续传
 
五、 缺点
复制延时,信号衰减
- 由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,
 - 当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

 
master主机down后,会一直搁置等待主机恢复,默认情况下不会在slave节点自动重选一个master,需要人工干预。
