建网站如果不买域名别人能不能访问,唐山室内设计公司排名,建了个网站百度上会有么,台州模板网建站Redis学习大纲 一、3主3从的集群配置#xff1a;
1.1.集群规划
1.分片集群需要的节点数量较多#xff0c;这里我们搭建一个最小的分片集群#xff0c;包含3个master节点#xff0c;每个master包含一个slave节点#xff0c;结构如下#xff1a; 2.每组是一主一从#x… Redis学习大纲 一、3主3从的集群配置
1.1.集群规划
1.分片集群需要的节点数量较多这里我们搭建一个最小的分片集群包含3个master节点每个master包含一个slave节点结构如下 2.每组是一主一从一共3组来模拟分片集群这里我们会在同一台虚拟机中开启2个redis实例,实现一主一从信息如下
IPPORT角色192.168.111.1756381master192.168.111.1756382slave192.168.111.1726383master192.168.11.1726384slave192.168.111.1746385master192.168.111.1746386slave 1.2.新建6个实例
1.在3台服务器上新建目录mkdir -p /myredis/cluster2.在192.168.111.172服务器上在/myredis/cluster目录下新建配置文件命名为redisCluster6381.conf 和 命名为redisCluster6382.conf 4.在192.168.111.174服务器上在/myredis/cluster目录下新建配置文件命名为redisCluster6383.conf 和 命名为redisCluster6384.conf5.在192.168.111.175服务器上在/myredis/cluster目录下新建配置文件命名为redisCluster6385.conf 和 命名为redisCluster6386.conf 1.3.启动6台实例
1.在192.168.111.175服务器上启动81和82实例 2.在192.168.111.172服务器上启动83和84实例 3.192.168.111.174服务器上启动85和86实例 1.4.创建集群环境
1.虽然服务启动了但是目前每个服务之间都是独立的没有任何关联。2.我们需要执行命令来创建集群在Redis5.0之前创建集群比较麻烦5.0之后集群管理命令都集成到了redis-cli中3.命令格式如下 redis-cli --cluster或者./redis-trib.rb代表集群操作命令create代表是创建集群--replicas 1或者--cluster-replicas 1 指定集群中每个master的副本个数为1此时节点总数 ÷ (replicas 1) 得到的就是master的数量。因此节点列表中的前n个就是master其它节点都是slave节点随机分配到不同master
redis-cli --cluster create --cluster-replicas 1 192.168.111.175:6381 192.168.111.175:6382 192.168.111.172:6383 192.168.111.172:6384 192.168.111.174:6384 192.168.172.174:63854.上面的命令运行后的样子 5.这里输入yes则集群开始创建 1.5.集群测试
a.查看集群状态
1.方式1以6381为切入点查看集群的状态命令是info replication 方式2以6381为切入点查看集群的状态命令是cluster nodes 二、3主3从的Redis集群读写
2.1.对6381新增两个key来分析
1.尝试连接6381节点存储key时发现有的key可以存储有的不可以
2.2.为何报错
一定要注意槽位的范围区间需要路由到位
2.3.如何解决
1.集群操作时需要给redis-cli加上-c参数才可以 三、主从容错切换迁移案例 四、主从扩容案例
二、集群伸缩
4.1.获取redis集群操作环境下的命令
1.redis-cli --cluster提供了很多操作集群的命令可以通过下面方式查看 2.比如添加节点的命令
4.2.集群伸长
a.需求分析:
1.需求向集群中添加一个新的master节点并向其中存储 num 102.这里需要两个新的功能 添加一个节点到集群中将部分插槽分配到新插槽 3.添加过程 启动一个新的redis实例端口为7004添加7004到之前的集群并作为一个master节点给7004节点分配插槽使得num这个key可以存储到7004实例
b.创建新的redis实例
1.创建一个文件夹
mkdir 70042.拷贝配置文件
cp redis.conf /70043.修改配置文件
sed -i /s/6379/7004/g 7004/redis.conf4.启动
redis-server 7004/redis.confc.添加新节点到集群
1.添加节点的语法如下 执行命令
redis-cli --cluster add-node 192.168.150.101:7004 192.168.150.101:70012.通过命令查看集群状态
redis-cli -p 7001 cluster nodes3.如图7004加入了集群并且默认是一个master节点但是可以看到7004节点的插槽数量为0因此没有任何数据可以存储到7004上
d.转移插槽
1.我们要将num存储到7004节点因此需要先看看num的插槽是多少如上图所示num的插槽为2765. 2.我们可以将0~3000的插槽从7001转移到7004命令格式如下 3.具体命令如下 建立连接 结果是 询问要移动多少个插槽我们计划是3000个 新的问题来了那个node来接收这些插槽 显然是7004那么7004节点的id是多少呢 复制这个id然后拷贝到刚才的控制台后 这里询问你的插槽是从哪里移动过来的 all代表全部也就是三个节点各转移一部分具体的id目标节点的iddone没有了 这里我们要从7001获取因此填写7001的id填完后点击done这样插槽转移就准备好了 确认要转移吗输入yes 然后通过命令查看结果 4.3集群缩短
a.需求介绍
1.集群初识状态是这样的 其中7001、7002、7003都是master我们计划让7002宕机。
b.自动故障转移
1.当集群中有一个master宕机会发生什么呢直接停止一个redis实例例如7002
redis-cli -p 7002 shutdown2.宕机过程 首先是该实例与其它实例失去连接然后是疑似宕机 3.最后是确定下线自动提升一个slave为新的master 4.当7002再次启动就会变为一个slave节点了
c.手动故障转移
1.手动故障的情况适用于数据迁移等情况2.利用cluster failover命令可以手动让集群中的某个master宕机切换到执行cluster failover命令的这个slave节点实现无感知的数据迁移。3.在slave节点上执行此命令执行后这个slave节点对应的主节点就会下线当前slave节点就会变成master节点4.其流程如下 5.这种failover命令可以指定三种模式 缺省默认的流程如图1~6歩force省略了对offset的一致性校验第3和第4步就没了takeover直接执行第5歩忽略数据一致性、忽略master状态和其它master的意见
d.案例需求
1.在7002这个slave节点执行手动故障转移重新夺回master地位2.步骤如下 利用redis-cli连接7002这个节点执行cluster failover命令 3.如图 4.效果