Migration

將數據從一個 cassandra 伺服器複製/移動到另一個

  • March 19, 2019

我正在更換 kubernetes 堆棧(更具體地說:將其從本地託管的集群移動到 Azure 中的 AKS 集群),因此必須重新創建我的所有服務,包括 Cassandra 服務。現有 Cassandra 中包含的所有數據都必須複製到一個新數據中。但是,我很難找到一種方法來真正做到這一點。對於 SQL 數據庫,這很簡單;例如,使用 postgres 您可以在舊數據庫上使用 pg_dump 並將文件回顯到新數據庫中。

然而,Cassandra 似乎沒有等效的方法,Google搜尋並沒有真正給我一個解決方案。似乎 COPY FROM 和 COPY TO 需要手動複製每個表,這很荒謬。還應該注意的是,如果可能的話,我真的想要一個不需要直接訪問 docker 容器的解決方案(即,我可以從連接到兩個 cassandra 的遠端盒子執行的一些解決方案),因為獲得直接容器級別的訪問在 AKS 中可以是一個巨大的 PITA。

這就是我在 azure 中將數據從一個 VM 移動到另一個 VM 的方法。沒有在 kubernates 中測試這個。

例如:- 以下是將 4 節點舊集群遷移到 4 節點新集群的過程。

OLD CLUSTER (節點 A) => NEW CLUSTER (節點 A), OLD CLUSTER (節點 B) => NEW CLUSTER (節點 B), OLD CLUSTER (節點 C) => NEW CLUSTER (節點 C), OLD CLUSTER (節點 D ) => 新集群(節點 D),

  1. 在舊集群上,在每個節點上啟用增量備份。
  2. 在舊集群上,在每個節點上拍攝快照。
  3. 在舊集群上,備份模式。
  4. 在舊集群上,備份令牌(每個節點的令牌)。
  5. 將快照和增量推送到 azure blob (az copy)。
  6. 在新集群上,導入架構。
  7. 在新集群上,導入令牌(如 OLD CLUSTER(節點 A)=> NEW CLUSTER(節點 A))。
  8. 在新集群上,導入快照(如 OLD CLUSTER(節點 A)=> NEW CLUSTER(節點 A))。將文件直接複製到表文件夾。
  9. 在新集群上,導入增量。將文件直接複製到表文件夾。
  10. 在新集群上,滾動重啟節點。

Cassandra 版本在新舊集群上應該相同。您可以使用腳本自動執行此操作。

引用自:https://dba.stackexchange.com/questions/232440