根据docs,您只需修改主题即可增加复制因子。
> bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name
--partitions 20 --replication-factor 3 --config x=y
不幸的是,它没有指定修改主题后会发生什么。是否将现有日志段复制到新副本,或仅复制到新消息?
答案 0 :(得分:1)
对于kafka 10,您需要调用kafka-reassign-partitions.sh脚本来更改主题的复制因子。 以下是一个脚本演示,它将在更改之前和之后显示主题:
updateTopicReplication() {
TOPIC_NAME=$1
REPLICAS=$2
echo "****************************************"
echo "describe $TOPIC_NAME"
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic $TOPIC_NAME
JSON_FILE=./configChanges/${TOPIC_NAME}-update.json
echo $JSON_FILE
[ -e $JSON_FILE ] && rm $JSON_FILE
touch $JSON_FILE
echo -e "{\"version\":1, \"partitions\":[{\"topic\":\"${TOPIC_NAME}\",\"partition\":0,\"replicas\":[${REPLICAS}]}]}" >> $JSON_FILE
echo "****************************************"
echo "updateing $TOPIC_NAME"
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file $JSON_FILE --execute
echo "****************************************"
echo "describe $TOPIC_NAME"
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic $TOPIC_NAME
}
答案 1 :(得分:-1)
根据我在问题中提到的相同文档,似乎kafka实际上并不支持增加(或减少)主题的复制因子。