目錄間的分區(qū)遷移

kafka 1.1.0開始增加了目錄間副本遷移功能,本文介紹下操作步驟。

1、展示分區(qū)目錄分布情況

./kafka-log-dirs.sh --bootstrap-server $bootstrap --describe --topic-list "test_1"
{
    "version": 1,
    "brokers": [
        {
            "broker": 0,
            "logDirs": [
                {
                    "logDir": "/tmp/kafka-logs-tmp",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-1",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp2",
                    "error": null,
                    "partitions": []
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp1",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-0",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                }
            ]
        },
        {
            "broker": 1,
            "logDirs": [
                {
                    "logDir": "/tmp/kafka-logs-tmp",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-1",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp2",
                    "error": null,
                    "partitions": []
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp1",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-0",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                }
            ]
        }
    ]
}

2、生成遷移計(jì)劃

./kafka-reassign-partitions.sh --zookeeper $zk3 --topics-to-move-json-file topics-to-move.json --broker-list "0,1" --generate
topics-to-move.json:
{
    "topics": [
        {"topic": "test_1"}
    ],
    "version": 1
}
輸出內(nèi)容
{
    "version": 1,
    "partitions": [
        {
            "topic": "test_1",
            "partition": 1,
            "replicas": [
                1,
                0
            ],
            "log_dirs": [
                "any",
                "any"
            ]
        },
        {
            "topic": "test_1",
            "partition": 0,
            "replicas": [
                0,
                1
            ],
            "log_dirs": [
                "any",
                "any"
            ]
        }
    ]
}
注意,此處log_dirs是any,需要手工改期望遷移到的目錄
{
    "version": 1,
    "partitions": [
        {
            "topic": "test_1",
            "partition": 1,
            "replicas": [
                1,
                0
            ],
            "log_dirs": [
                "/tmp/kafka-logs-tmp",
                "/tmp/kafka-logs-tmp"
            ]
        },
        {
            "topic": "test_1",
            "partition": 0,
            "replicas": [
                0,
                1
            ],
            "log_dirs": [
                "/tmp/kafka-logs-tmp",
                "/tmp/kafka-logs-tmp"
            ]
        }
    ]
}
3、執(zhí)行遷移計(jì)劃
 ./kafka-reassign-partitions.sh --zookeeper $zk --execute --reassignment-json-file   topic.json --throttle 50000000 --bootstrap-server $bootstrap

遷移后的分區(qū)分配情況

{
    "version": 1,
    "brokers": [
        {
            "broker": 0,
            "logDirs": [
                {
                    "logDir": "/tmp/kafka-logs-tmp",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-0",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        },
                        {
                            "partition": "test_1-1",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp2",
                    "error": null,
                    "partitions": []
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp1",
                    "error": null,
                    "partitions": []
                }
            ]
        },
        {
            "broker": 1,
            "logDirs": [
                {
                    "logDir": "/tmp/kafka-logs-tmp",
                    "error": null,
                    "partitions": [
                        {
                            "partition": "test_1-0",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        },
                        {
                            "partition": "test_1-1",
                            "size": 0,
                            "offsetLag": 0,
                            "isFuture": false
                        }
                    ]
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp2",
                    "error": null,
                    "partitions": []
                },
                {
                    "logDir": "/tmp/kafka-logs-tmp1",
                    "error": null,
                    "partitions": []
                }
            ]
        }
    ]
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 代理節(jié)點(diǎn)處理控制器發(fā)送的LeaderAndIsr請(qǐng)求,服務(wù)端會(huì)交給副本管理器來處理。 創(chuàng)建分區(qū) 服務(wù)端處理Lead...
    紹圣閱讀 1,517評(píng)論 0 0
  • 簡(jiǎn)介 Kafka從0.8.x版本開始引入副本機(jī)制,這樣可以極大的提高集群的可靠性和穩(wěn)定性。不過這也使得Kafka變...
    朱小廝閱讀 2,044評(píng)論 0 1
  • Kafka的分區(qū)數(shù)是不是越多越好? 分區(qū)多的優(yōu)點(diǎn) kafka使用分區(qū)將topic的消息打散到多個(gè)分區(qū)分布保存在不同...
    tenlee閱讀 69,391評(píng)論 9 26
  • 在軟件項(xiàng)目的生命周期中,開發(fā)只占開始的一小部分,大部分時(shí)間我們要對(duì)項(xiàng)目進(jìn)行運(yùn)行維護(hù),Kafka相關(guān)的項(xiàng)目也不例外。...
    柴詩雨閱讀 8,284評(píng)論 0 7
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 6,032評(píng)論 0 9

友情鏈接更多精彩內(nèi)容