Cassandra

Cassandra 2.0.17 -> 3.11.11 -> 4.0.5 的升級路徑失敗

  • September 1, 2022

我有 Cassandra 集群,它最初安裝了 Cassandra 2.0.17 版本。在此期間它已經通過次要版本和主要版本進行了升級,最後是 3.11.11 版本。

現在我正在嘗試將其升級到 4.0.5 版本,但它在啟動時退出並出現以下錯誤。

ERROR [main] 2022-09-01T07:29:46,009 CassandraDaemon.java:911 - Detected unreadable sstables \
 /data/keyspace1/api_user-c21e2aa0a72b11e9ad8a2b34a639a098/la-1-big-Data.db,
 /data/keyspace1/group_index-c3a2ced0a72b11e9ad8a2b34a639a098/la-1-big-Statistics.db,
 /data/keyspace1/user_auth-c1c53530a72b11e9ad8a2b34a639a098/la-1-big-Summary.db,
 /data/system_auth/roles-5bc52802de2535edaeab188eecebb090/la-1-big-CompressionInfo.db,
 /data/system_auth/roles-5bc52802de2535edaeab188eecebb090/la-1-big-Data.db,
 /data/keyspace1/api_user-c21e2aa0a72b11e9ad8a2b34a639a098/la-1-big-Filter.db,
 /data/keyspace1/ssl_keystore-cfe03340a72b11e9ad8a2b34a639a098/la-1-big-CompressionInfo.db,
 /data/keyspace1/license_v2-cf226180a72b11e9ad8a2b34a639a098/la-1-big-Statistics.db,
 /data/keyspace1/inv_settings-c74b3d60a72b11e9ad8a2b34a639a098/la-1-big-Filter.db,
 /data/system_auth/roles-5bc52802de2535edaeab188eecebb090/la-1-big-Summary.db,
 /data/keyspace1/user_auth-c1c53530a72b11e9ad8a2b34a639a098/la-2-big-Index.db,
 /data/keyspace1/group_index-c3a2ced0a72b11e9ad8a2b34a639a098/la-1-big-Data.db,
 /data/keyspace1/api_user-c21e2aa0a72b11e9ad8a2b34a639a098/la-1-big-CompressionInfo.db,
 /data/keyspace1/user_index-c3715e90a72b11e9ad8a2b34a639a098/la-1-big-Summary.db,
 /data/keyspace1/user_index-c3715e90a72b11e9ad8a2b34a639a098/la-1-big-Filter.db,
 /data/keyspace1/group_index-c3a2ced0a72b11e9ad8a2b34a639a098/la-1-big-Filter.db,
 /data/keyspace1/dashboard_groups-c7bf0dd0a72b11e9ad8a2b34a639a098/la-1-big-CompressionInfo.db,
 /data/keyspace1/user_auth-c1c53530a72b11e9ad8a2b34a639a098/la-2-big-Statistics.db,
 /data/keyspace1/user_auth-c1c53530a72b11e9ad8a2b34a639a098/la-1-big-Index.db,
 /data/keyspace1/group_index-c3a2ced0a72b11e9ad8a2b34a639a098/la-1-big-Index.db,
 /data/keyspace1/user_index-c3715e90a72b11e9ad8a2b34a639a098/la-1-big-Statistics.db,
 /data/keyspace1/api_user-c21e2aa0a72b11e9ad8a2b34a639a098/la-1-big-Index.db,
 /data/keyspace1/user_auth-c1c53530a72b11e9ad8a2b34a639a098/la-1-big-Statistics.db,
 /data/keyspace1/ssl_keystore-cfe03340a72b11e9ad8a2b34a639a098/la-1-big-Statistics.db

初始版本為 3.XX 的集群我可以成功升級 4.0.5。兩種情況的最終 cassandra.yaml 相同(2.XX –>、3.XX –>)

是否支持按照 Cassandra 2.0.17 -> 3.xx -> 4.0.5 的路徑升級?

升級路徑不是問題。問題是您仍然擁有來自非常舊版本的 Cassandra 的 SSTable。

帶有前綴的文件la-BigFormatCassandra 2.2

       public static final String current_version = "la";

Cassandra 4.0 可以讀取ma的最早的 SSTable 格式是:

       public static final String current_version = "nb";
       public static final String earliest_supported_version = "ma";

我們始終建議您upgradesstables在升級 Cassandra 之前在所有節點上執行,以確保不會遇到此問題。

通常,我會說您可以通過將舊文件移出data/目錄來解決該問題,但其中一個文件與角色有關:

system_auth/roles-5bc52802de2535edaeab188eecebb090/la-1-big-Data.db

如果刪除此文件,您將失去其中包含的角色。如果您在其他地方有角色的副本,那麼一旦節點重新聯機,您應該能夠重新創建它們。乾杯!

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