从以前的 elasticsearch 版本 (5.4 -> 5.6) 中清理碎片
Clean up shards from previous elasticsearch version (5.4 -> 5.6)
滚动升级
根据文档 here,我将 elasticsearch 集群从 5.4 版升级到 5.6 版。
此过程导致每个升级节点上的磁盘使用量翻倍。
以下文档让我假设一旦整个集群升级,这个问题就会得到纠正:
During a rolling upgrade the cluster will continue to operate as normal. Any new functionality will be disabled or work in a backward compatible manner until all nodes of the cluster have been upgraded. Once the upgrade is completed and all nodes are on the new version, the new functionality will become operational. Once that has happened, it is practically impossible to go back to operating in a backward compatible mode. To protect against such a scenario, nodes from the previous major version (e.g. 5.x) will not be allowed to join a cluster where all nodes are of a higher major version (e.g. 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 版本创建的旧分片?
I do not understand the internals of elasticsearch's data well enough to know what directories need to be deleted and which ones should be kept.
它们都应该保留。 切勿手动更改数据目录的内容。
5.4分片和5.6分片没有区别,所以这里不需要额外的手动清理。您引用的文档适用于跨主要版本的升级(例如 5.x 到 6.x),不适用于次要升级(例如 5.4 到 5.6)。如果分片在重启期间被分配给新节点,那么 Elasticsearch 将临时制作一些副本的额外副本,但当这些分片的健康状况为 green
和 none 他们正在搬迁。
如果您的集群运行状况为绿色并且不包含重新定位的分片但磁盘使用率没有下降到您期望的水平,那么我建议您使用统计 API(例如 GET /index/_stats?level=shards
to try and work out which indices are consuming all the space. If you need help analysing these stats then please start a conversation on the discussion forum 因为它很难保存就是这种对话。
我无法确定处理磁盘使用量翻倍的根本原因或机制,因此我 re-indexed 在大约 7.x 的过程中将整个集群转换为新的 7.x 集群一个月。完成后,我将旧集群从它占用的服务器中删除,并将这些服务器添加到新集群,新集群会自动开始重新平衡。
这花了很多时间,但最终成为一条有效的路线。通过这样做,我没有看到异常的磁盘使用情况。
滚动升级
根据文档 here,我将 elasticsearch 集群从 5.4 版升级到 5.6 版。
此过程导致每个升级节点上的磁盘使用量翻倍。
以下文档让我假设一旦整个集群升级,这个问题就会得到纠正:
During a rolling upgrade the cluster will continue to operate as normal. Any new functionality will be disabled or work in a backward compatible manner until all nodes of the cluster have been upgraded. Once the upgrade is completed and all nodes are on the new version, the new functionality will become operational. Once that has happened, it is practically impossible to go back to operating in a backward compatible mode. To protect against such a scenario, nodes from the previous major version (e.g. 5.x) will not be allowed to join a cluster where all nodes are of a higher major version (e.g. 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 版本创建的旧分片?
I do not understand the internals of elasticsearch's data well enough to know what directories need to be deleted and which ones should be kept.
它们都应该保留。 切勿手动更改数据目录的内容。
5.4分片和5.6分片没有区别,所以这里不需要额外的手动清理。您引用的文档适用于跨主要版本的升级(例如 5.x 到 6.x),不适用于次要升级(例如 5.4 到 5.6)。如果分片在重启期间被分配给新节点,那么 Elasticsearch 将临时制作一些副本的额外副本,但当这些分片的健康状况为 green
和 none 他们正在搬迁。
如果您的集群运行状况为绿色并且不包含重新定位的分片但磁盘使用率没有下降到您期望的水平,那么我建议您使用统计 API(例如 GET /index/_stats?level=shards
to try and work out which indices are consuming all the space. If you need help analysing these stats then please start a conversation on the discussion forum 因为它很难保存就是这种对话。
我无法确定处理磁盘使用量翻倍的根本原因或机制,因此我 re-indexed 在大约 7.x 的过程中将整个集群转换为新的 7.x 集群一个月。完成后,我将旧集群从它占用的服务器中删除,并将这些服务器添加到新集群,新集群会自动开始重新平衡。
这花了很多时间,但最终成为一条有效的路线。通过这样做,我没有看到异常的磁盘使用情况。