首页 > 其他分享 >es手动迁移分片

es手动迁移分片

时间:2024-01-15 09:56:07浏览次数:35  
标签:node 9200 手动 cluster 集群 分片 节点 es

主分片未分配

           由于是索引的主分片未能分配,导致集群一直处于red状态

         

        1.查看未分配的分片信息

           curl -u elastic:111111 --insecure https://10.32.3.3:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

        2.查看未分配的原因

           curl -u elastic:111111 --insecure https://10.32.3.3:9200/_cluster/allocation/explain

       3.试着让集群重新分配一下失败分片

           curl -u elastic:11111 --insecure -XPOST https://10.32.3.3:9200/_cluster/reroute?retry_failed=true

       4.手动指定某个分片到具体节点上

curl -u elastic:11111 --insecure -H "Content-Type: application/json" -XPOST  https://10.32.3.3:9200/_cluster/reroute -d '{
  "commands": [
    {
      "allocate_stale_primary": { 
        "index": "rs_asset_account_authorized_key",
        "shard": 0,
        "node": "node-2",
        "accept_data_loss" : true
      }
    }
  ]
}'
View Code

      

      这意味着除非丢失的节点重新加入集群,否则数据将丢失。或者,您可以使用allocate_empty_prprimary命令清空碎片

curl -u elastic:111111 --insecure -H "Content-Type: application/json" -XPOST  https://10.32.3.3:9200/_cluster/reroute -d'{
    "commands" : [ {
        "allocate_empty_primary" :
            {
              "index" : "rs_asset_port_infos", 
              "shard" : 0,
              "node" : "node-3",
              "accept_data_loss" : true
            }
        }
    ]
}'
View Code

     

 手动阻止分片分配到某些节点

transient //暂时配置 重启后失效
persistent //永久配置 重启后仍然有效

1.源集群操作
触发集群分片均衡策略,把集群老节点上的分片全部移动到新的集群节点上
curl -u elastic:1111 --insecure -H "Content-Type: application/json" -XPUT https://10.32.3.2:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.include._name" : null, //设置集群分片可以包含的节点名称
"cluster.routing.allocation.exclude._name" : "node-2,node-18,node-20,node-4" //设置集群分片排除的节点名称
}
}'

//不仅节点上原来的分片数据会被迁移走

//新创建的索引产生的分片也不会分配到这些节点上

//新老数据都会从被排除的节点上转移到其它节点上

在分片迁移的中间状态由于分片迁移会消耗一定的性能。因此为了稳定性考虑,可以通过如下API将迁移的并发度和迁移速度调小一点。
curl -u elastic:11111 --insecure -H "Content-Type: application/json" -XPUT https://10.32.3.2:9200/_cluster/settings -d '{ "persistent": {
"cluster.routing.allocation.node_concurrent_recoveries": 2, //允许节点上最大并发的传出分片恢复数
"indices.recovery.max_bytes_per_sec": "100mb" //设置节点的分片传输速率
}
}'

2.还原es集群的配置
curl -u elastic:11111 --insecure -H "Content-Type: application/json" -XPUT https://10.32.3.2:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.include._name" : null, //还原集群的默认配置
"cluster.routing.allocation.exclude._name" : null //还原集群的默认配置
}
}'

CCR跨集群复制数据

        跨集群复制即CCR,是一种能够实现数据迁移、数据备份、降低访问延迟的高可用解决方案

        es使用CCR机制必须是白金会员,可以开通试用30天

        源数据es集群和目标es集群必须都开启 否则不能跨集群传输数据

       两个集群都必须有这两个菜单才行

       

       1.先在目标集群添加Remote Clusters

          如在3.2(目标集群页面)添加Remote Clusters 数据 10.30.92.70:9300 这里不是9200的http port 必须要填写集群内部通信端口9300

         

      2.添加需要同步数据的索引

         

         

       3.解除Follower关系

          如果不解除Follower关系的索引只能进行读操作,不能写数据

       

标签:node,9200,手动,cluster,集群,分片,节点,es
From: https://www.cnblogs.com/yxh168/p/17956656

相关文章

  • [转帖]Nginx access log 按日期保存记录
    https://cloud.tencent.com/developer/article/1958304 $time_iso8601  生成格式:2021-09-18T15:16:35+08:00$time_local     生成格式:18/Sep/2021:15:12:13+0800网络流传的nginxaccesslog分割都是写shell脚本然后做定时任务来分割日志,操作中自......
  • 记一次 MySQL timestamp 精度问题的排查 → 过程有点曲折
    开心一刻下午正准备出门,跟正刷着手机的老妈打个招呼我:妈,今晚我跟朋友在外面吃,就不在家吃了老妈拿着手机跟我说道:你看这叫朋友骗缅北去了,tm血都抽干了,多危险我:那是他不行,你看要是吴京去了指定能跑回来老妈:还吴京八经的,特么牛魔王去了都得耕地,唐三藏去了都......
  • BM25(Best Matching 25)算法基本思想
      BM25(BestMatching25)是一种用于信息检索(InformationRetrieval)和文本挖掘的算法,它被广泛应用于搜索引擎和相关领域。BM25基于TF-IDF(TermFrequency-InverseDocumentFrequency)的思想,但对其进行了改进以考虑文档的长度等因素。一.基本思想  以下是BM25算法的基本思想......
  • Kubernetes 集群中部署项目
    在Kubernetes集群中部署项目并交付容器,通常涉及以下几个步骤:Docker镜像构建:使用Dockerfile定义应用程序的环境和依赖,然后使用DockerEngine构建出Docker镜像。可以使用一些构建工具如DockerCompose或DockerBuildx来简化构建过程。Docker镜像推送:将构建好的Docker......
  • 【愚公系列】2024年01月 WPF控件专题 ProgressBar控件详解
    ......
  • AtCoder Beginner Contest 336
    AtCoderBeginnerContest336A-LongLoong#include<bits/stdc++.h>#defineendl'\n'//#defineintlonglongusingnamespacestd;voidsolve(){ intx; cin>>x; cout<<"L"; while(x--)cout<<"o&q......
  • PostgreSQL 数据库安全之检验数据块的损坏- data_checksums 参数设置
    默认情况下,数据页不受校验和保护,但可以选择为集群启用这一功能。启用后,每个数据页都包含一个校验和,该校验和在写入该页时更新,并在每次读取该页时进行验证。只有数据页受校验和保护;内部数据结构和临时文件不是。校验和通常在使用initdb初始化集群时启用。还可以在以后的脱......
  • POSTGRESQL分析和优化器统计信息
    优化器统计的目的在我们深入研究PostgreSQL优化和统计之前,有必要了解PostgreSQL如何运行查询。典型的流程如下:首先,PostgreSQL解析查询。然后,trafficcop将实用命令(ALTER、CREATE、DROP、GRANT等)从其他命令中分离出来。在这之后,整个事情都经过重写系统,它负责处理规则等。......
  • PostgreSQL控制文件管理
    目录控制文件的位置与大小什么是控制文件initdb时生成的静态信息postgresql.conf中的配置信息WAL及检查点的动态信息控制文件维护控制文件备份重建控制文件恢复实例控制文件的位置与大小逻辑位置:存放在pg_global表空间中物理位置与名字:$PGDATA/global/pg_control代码位置:src/......
  • PostgreSQL 数据库日志收集功能开启一什么时候写-参数 log_min_messages 等其他参数设
    log_min_messages(enum)控制将哪些消息级别写入服务器日志。可以取值为:DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、LOG、FATAL、PANIC。每个关卡都包含了它之后的所有关卡。级别越高,发送到日志的消息就越少。默认值是WARNING。注意,这里的LOG......