清理之前 elasticsearch 版本 (5.4 -> 5.6) 中的分片



滚动升级

按照此处的文档,我将 elasticsearch 集群从 5.4 版升级到 5.6 版。

此过程导致每个升级节点上的磁盘使用量翻倍。

以下文档使我假设在整个群集升级后将纠正此问题:

在滚动升级期间,群集将继续正常运行。任何新功能都将被禁用或以向后兼容的方式工作,直到群集的所有节点都已升级。升级完成并且所有节点都位于新版本上后,新功能将开始运行。一旦发生这种情况,几乎不可能回到向后兼容模式下运行。为了防止这种情况,将不允许以前主要版本(例如 5.x(的节点加入所有节点均为更高主要版本(例如 6.x(的集群。

磁盘使用量翻了一番

但是,即使集群中的每个节点都是相同的版本(5.6.16(,保存先前数据的每个节点也会继续保留该数据,并且集群不会清理它。这意味着磁盘使用量实际上翻了一番,我不得不修改high/low watermark值,只是为了让群集操作继续。

我不太了解 elasticsearch 数据的内部结构,无法知道哪些目录需要删除,哪些目录应该保留。也许甚至有一种内置的方法来强制清理。

数据目录中的小示例:

$ ls nodes/0/indices/
-AW6zio6TuynJ_KQlEooVA  66O4EMc0R3KYclO50uRQ1g  CuiQlU_dTDOVkJbV9oQIGw  J_YG4HlBRYeBWp0wc0L_Nw  Qw-3eYh6TlGpHCys2GBdwg  YRrQono1QCWxXahJIT0hfg  eK0di6WSRnumTUHiqAQ3gw  m3EDPIOqS9mx22k6hQH2yA  umpdodA2QR6de8VcuR3qag
-ItvQ5StRECde2zvdV-Ucg  6FAopyspSLu8NGEUekOwhg  CzqDKml3QCG16g0zxgnG7g  JgbfkCt5RDGmpFowxnYIiA  QwerlX68SaqhEzg-Ml3i0Q  YcbvcSuxQtaNIXcxU6mpJQ  eOww30E7R96ymTqhQyNYng  mAspUVrETLuAP6zapD8IVQ  uoMcWwmfTeCTKXchAyVt-w
-K59oANFSmmopPt2r5yjYg  6GWAf6ITT4e_9HNwjYlk3g  D3Co7Ht1SROlEGCHcSn67Q  JrSXkDEETfS8XHe-PH-9qw  RB6LxG9uT_eW8Z28Zh4b9A  YjHJMVZjRK-8Coya8eBMOA  eVtK6_HrTA-1yAfDEnKZnw  mG_NCeR3RhSQO6tLRYmJGg  upHl_Bu7R0eFZUxU5qrDrA
-WevSR0jRZKTz7CH5LWKOQ  6L6MDgW0QCWLn0lr6NwRUA  DEB0-vP7TMmyBK8M18sJ2A  JtXS6yJPQwGKhC0qAulNBQ  RKcX1apNTsyod54oLYnJ0A  YuLmawshTn-WCPPD8Hs8YA  ecrbXDCdSleo6Y2_p6SDeg  mHOr6_WMT4ODxBGh1e5MCw  uq9BlreyTk-xXM-HTsmesw
-jjL_BjFTFycO83wVW4L6Q  6LD31skNSbGVgscF784PnQ  DG1ESvHdS1y8AzbbqhML6Q  Ju6ks-W5Q4yX0GggfO3hQw  RKcvj2kwRe6OBspnZBFrjA  Yuu9nCSfTjCqEwcznS1Oqw  eq6QwBMaTI2fik81gyD6gQ  mKXR0uWtTjenFFkq0GVP8g  utoyyWn3SY23rKrg8sCwpg
-t4M8dc9TZiKYZI7Mia8hQ  6Rw8yFOhSvqveDoWf19F5A  DOJaKVahTvm7G79RIfpGhQ  K-a5KU8hT-WSQw1cPAWXhw  RPhKOIYNRoKQYHPauPpYzQ  Z0GgoShfR2iGidFa-fXhzQ  f8qpQPOARdeqHcXH3OFBqQ  mM_43p8mRsOCosUH2C3iUg  uv40fHgkQtCFShozCAmtMQ
04JbWXE4S-66wTVQZ6587Q  6XjX8cP1QEuCxalGCmq9bQ  Dc-lhr15Qz6sCEdw4smRGQ  KAHIxqC2Sm-8Cu-fo4P54A  Rd6gkNVkTxitNvGPtmJ8jw  Z6c02QTLRz6nrfVEjMQr3g  fPJyBMlVQQ2j5oyvyYQKNw  mUioLd-hTq2CbRpQ6BMfxw  vC3erzIcT1Ked9vGmCGRFw

如何清理 5.4 版创建的旧分片?

我对 elasticsearch 数据的内部结构不够了解,不知道哪些目录需要删除,哪些目录应该保留。

它们都应该保留。切勿手动更改数据目录的内容。

5.4 分片和 5.6 分片之间没有区别,因此这里不需要额外的手动清理。您引用的文档涉及跨主要版本(例如 5.x 到 6.x(的升级,不适用于次要升级(例如 5.4 到 5.6(。如果在重启期间将分片分配给新节点,那么 Elasticsearch 将暂时创建一些副本的额外副本,但是当这些分片的运行状况green并且它们都没有重新定位时,它将清理不再需要的任何旧副本。

如果您的集群运行状况为绿色并且不包含重新定位的分片,但磁盘使用率尚未下降到您的预期,那么我建议您使用统计信息 API(例如GET /index/_stats?level=shards尝试找出哪些索引占用了所有空间。如果您需要帮助分析这些统计数据,请在论坛上开始对话,因为在这里进行这种对话很尴尬。

我无法确定处理磁盘使用量翻倍的根本原因或机制,因此我在大约一个月的时间里将整个集群重新索引到一个新的 7.x 集群中。完成后,我从它占用的服务器中删除了旧集群,并将这些服务器添加到新集群中,新集群会自动开始重新平衡。

这花了相当长的时间,但最终成为一条有效的路线。这样做我没有看到异常的磁盘使用情况。

相关内容

  • 没有找到相关文章

最新更新