kafka的遷移乾貨

2022-08-10 05:30:14 字數 1699 閱讀 4617

隨著業務的發展, 伺服器所在網段/機群不允許kafka繼續保留在那, 需要移動到先機器上.

哎呀上面是廢話,總的說就是: 2台老kafka不要了,資料要遷移到新的2臺kafka上面.要求資料不丟失

通過查詢官網,並無直接切換的命令,當前版本是kafka 0.8.1,  說是0.8.2才提供老機器的退役功能.

不過沒關係, 我們有乙個變通的方法:

kafka提供了修改複製因子的方法, 我們可以將她的複製目標機器改成新的節點.  這樣所有發往老節點的資料都會被轉移到新節點去.

等你將傳送者的api修改後,讓他目標指向新機器,  遷移工作就全部完成.

具體步驟如下:

1.在新節點上搭建kafka服務

原先我有2臺機器, broker.id分別為1和2

現在我新機器上broker.id分別設定為3和4

2.啟動所有kafka 服務

3.確認要移動的topics

kafka-topics.sh --list --zookeeper 192.168.103.47:2181  檢視所有主題

複製這些topic,並寫成如下格式的檔案, 命名為 topics-to-move.json,,

],"version":1

}4.生成移動指令碼

執行bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --topics-to-move-json-file topics-to-move.json --broker-list "3,4" --generate 

其中3,4是你的新節點的broker.id

這樣就會生成一串新的json資料

,其他部分省略}

將這一串json寫入新檔案reassignment-node.json中

5.這時候,萬事俱備, 開始遷移

bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --reassignment-json-file reassignment-node.json --execute

6.適當時候, 執行如下命令,檢視執行結果

bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --reassignment-json-file reassignment-node.json --verify

假設出現

error: assigned replicas (3,4,0,1) don't match the list of replicas for reassignment (3,4) for partition [mpt-session,1]

這樣的錯誤, 他並不是真的出錯,而是指目前仍在複製資料中.

再過一段時間再執行verify命令,他就會消失(加入完成拷貝)

7.資料完成遷移後, 老的服務先別停.

8.修改所有客戶端producer或者consumer連線指向新節點.

9.測試正常後, 關閉老節點

10.大功告成

Kafka 資料遷移

當kafka 減少broker節點後,需要把資料分割槽遷移到其他節點上,以下將介紹我的一次遷移驗證過程。前3步為環境準備,實際資料操作看第4步即可 增加broker節點,也可以採用步驟4相同的方法進行重新分割槽 方案思想 使用kafka reassign partitions命令,把partitio...

Kafka 資料遷移

當kafka 減少broker節點後,需要把資料分割槽遷移到其他節點上,以下將介紹我的一次遷移驗證過程。前3步為環境準備,實際資料操作看第4步即可 增加broker節點,也可以採用步驟4相同的方法進行重新分割槽 方案思想 使用kafka reassign partitions命令,把partitio...

kafka集群擴容以及資料遷移

一 kafka集群擴容比較簡單,機器配置一樣的前提下只需要把配置檔案裡的brokerid改乙個新的啟動起來就可以。比較需要注意的是如果公司內網dns更改的不是很及時的話,需要給原有的舊機器加上新伺服器的host,不然可能會產生controller伺服器從zk上拿到網域名稱但是解析不到新機器位址的情況...