cassandra.yaml 檔案設定
cluster_name
注意:此檔案提供兩個版本:- cassandra.yaml:包含「相容」設定的設定預設值,使用與執行舊版 Cassandra 的機器相容且可互通的設定。提供此版本是為了讓在生產環境中執行 Cassandra 的現有使用者能夠輕鬆升級,並逐步且謹慎地導入新功能。- cassandra_latest.yaml:包含啟用 Cassandra 最新功能的設定預設值,包括增強的功能和更高的效能。提供此版本是為了讓 Cassandra 的新使用者能夠充分利用其叢集,以及評估技術的使用者。/注意
叢集名稱。這主要是用於防止一個邏輯叢集中的機器加入另一個叢集。
預設值:「測試叢集」
num_tokens
這會定義隨機指定給此節點的令牌數目。相對於其他節點,令牌越多,此節點儲存的資料比例就越大。您可能希望所有節點都具有相同的令牌數目,假設它們具有相等的硬體功能。
如果您未指定,Cassandra 會使用預設的 1 個令牌以維持舊有相容性,並會使用如下所述的 initial_token。
指定 initial_token 將會覆寫節點初次啟動時的此設定,在後續啟動時,即使設定了 initial token,此設定仍會套用。
請參閱 cassandra.apache.org/doc/latest/getting-started/production.html#tokens 以取得有關 num_tokens 的最佳實務資訊。
預設值 16
allocate_tokens_for_keyspace
此選項預設為註解。
觸發自動配置此節點的 num_tokens 令牌。配置演算法會嘗試以最佳化資料中心中節點的複寫負載的方式來選擇令牌,以符合複寫因子。
指定給每個節點的負載將會接近與其虛擬節點數成比例。
僅支援 Murmur3Partitioner。
複寫因子是由指定鍵空間所使用的複寫策略所決定。
預設值: KEYSPACE
initial_token
此選項預設為註解。
initial_token 讓您可以手動指定令牌。雖然您可以將其與虛擬節點搭配使用(num_tokens > 1,如上所述) — 在這種情況下,您應該提供逗號分隔的清單 — 但它主要用於將節點新增到未啟用虛擬節點的舊式叢集時。
hinted_handoff_disabled_datacenters
此選項預設為註解。
當 hinted_handoff_enabled 為 true 時,不會執行暗示交接的黑名單資料中心
預設值(複雜選項):
# - DC1 # - DC2
hinted_handoff_throttle
每個傳遞執行緒每秒最大的頻寬限制,以 KiB 為單位。這會與叢集中節點的數量成比例地減少。(如果叢集中有兩個節點,每個傳遞執行緒都會使用最大速率;如果有三個節點,每個節點的頻寬限制會減為最大值的一半,因為我們預期會有兩個節點同時傳遞暗示。)最小單位:KiB
預設值: 1024KiB
hints_directory
此選項預設為註解。
Cassandra 應儲存提示的目錄。如果未設定,預設目錄為 $CASSANDRA_HOME/data/hints。
預設值: /var/lib/cassandra/hints
max_hints_size_per_host
此選項預設為註解。
儲存無法連線主機提示的檔案大小限制,以 MiB 為單位。一旦本機提示檔案達到限制,將不會再建立新的提示。設定非正值會停用大小限制。
預設值: 0 MiB
transfer_hints_on_decommission
此選項預設為註解。
在停用期間啟用/停用將提示傳輸至同儕。即使啟用,這也不保證記錄批次的一致性,且與嚴格的 hinted_handoff_throttle 結合使用時可能會延遲停用。預設值:true
預設值: true
hints_compression
此選項預設為註解。
套用至提示檔案的壓縮。如果省略,提示檔案將以未壓縮的方式寫入。支援 LZ4、Snappy 和 Deflate 壓縮器。
預設值(複雜選項):
# - class_name: LZ4Compressor # parameters: # -
heap_dump_path
此選項預設為註解。Cassandra 應儲存未捕捉例外狀況的一次性故障排除堆積快照結果的目錄。注意:此值可以透過 -XX:HeapDumpPath JVM 環境參數覆寫,並使用相對本機路徑進行測試(如果需要)。如果未設定,預設目錄為 $CASSANDRA_HOME/heapdump
預設值: /var/lib/cassandra/heapdump
hint_window_persistent_enabled
此選項預設為註解。
啟用/停用持續提示視窗。
如果設為 false,提示只會儲存在提示所針對的節點停機時間小於或等於 max_hint_window 的情況下。
如果設為 true,提示會儲存在沒有任何提示儲存時間早於 max_hint_window 的情況下。這是針對節點持續重新啟動且提示尚未傳遞的情況,我們會無限期儲存該節點的提示。
預設為 true。
預設值: true
authenticator
驗證後端,實作 IAuthenticator;用於識別使用者。Cassandra 提供開箱即用的 org.apache.cassandra.auth.{AllowAllAuthenticator, PasswordAuthenticator}。
-
AllowAllAuthenticator 不執行任何檢查 - 設定它來停用驗證。
-
PasswordAuthenticator 依賴使用者名稱/密碼配對來驗證使用者。它將使用者名稱和雜湊密碼保存在 system_auth.roles 表格中。如果你使用這個驗證器,請增加 system_auth keyspace 的複製因子。如果使用 PasswordAuthenticator,也必須使用 CassandraRoleManager(請參閱下方)
authorizer
MutualTlsAuthenticator 可以使用以下設定進行設定。你可以新增自己的驗證器,實作 MutualTlsCertificateValidator 類別,並提供從憑證中提取身分和驗證憑證的邏輯。class_name:org.apache.cassandra.auth.MutualTlsAuthenticator 參數:validator_class_name:org.apache.cassandra.auth.SpiffeCertificateValidator
授權後端,實作 IAuthorizer;用於限制存取/提供權限。Cassandra 提供開箱即用的 org.apache.cassandra.auth.{AllowAllAuthorizer, CassandraAuthorizer}。
-
AllowAllAuthorizer 允許任何使用者執行任何動作 - 設定它來停用授權。
-
CassandraAuthorizer 將權限儲存在 system_auth.role_permissions 表格中。如果你使用這個授權器,請增加 system_auth keyspace 的複製因子。
預設值: AllowAllAuthorizer
role_manager
驗證和授權後端的其中一部分,實作 IRoleManager;用於維護角色之間的授予和成員資格。Cassandra 提供開箱即用的 org.apache.cassandra.auth.CassandraRoleManager,它將角色資訊儲存在 system_auth keyspace 中。IRoleManager 的大多數功能都需要經過驗證的登入,因此除非已設定的 IAuthenticator 實際上實作了驗證,否則大多數功能都將無法使用。
-
CassandraRoleManager 將角色資料儲存在 system_auth keyspace 中。如果你使用這個角色管理員,請增加 system_auth keyspace 的複製因子。
預設值: CassandraRoleManager
network_authorizer
網路授權後端,實作 INetworkAuthorizer;用於限制使用者存取特定 DC。Cassandra 預設提供 org.apache.cassandra.auth.{AllowAllNetworkAuthorizer, CassandraNetworkAuthorizer}。
-
AllowAllNetworkAuthorizer 允許任何使用者存取任何 DC - 設定為停用授權。
-
CassandraNetworkAuthorizer 將權限儲存在 system_auth.network_permissions 表格中。如果您使用此授權器,請增加 system_auth 鍵集複製因子。
預設值: AllowAllNetworkAuthorizer
cidr_authorizer
CIDR 授權後端,實作 ICIDRAuthorizer;用於限制特定 CIDR 的使用者存取。Cassandra 預設提供 org.apache.cassandra.auth.{AllowAllCIDRAuthorizer, CassandraCIDRAuthorizer}。- AllowAllCIDRAuthorizer 允許任何 CIDR 的任何使用者存取 - 設定為停用 CIDR 授權。- CassandraCIDRAuthorizer 將使用者的 CIDR 權限儲存在 system_auth.cidr_permissions 表格中。如果您使用此授權器,請增加 system_auth 鍵集複製因子,否則當主機當機時,此功能使用的 system_auth 表格的任何變更都可能遺失。
traverse_auth_from_root
此選項預設為註解。
根據叢集的驗證策略,從根目錄到表格(根目錄 → 鍵集 → 表格)的迭代可能比從表格到根目錄(表格 → 鍵集 → 根目錄)更有利。由於驗證項目是白名單,因此一旦找到權限,您就知道它有效。我們預設為 false,因為舊有行為是在表格層級查詢,然後再移回根目錄。有關詳細資訊,請參閱 CASSANDRA-17016。
預設值: false
roles_validity
角色快取的有效期(擷取已授與的角色可能是昂貴的操作,具體取決於角色管理員,CassandraRoleManager 就是一個範例)已授與的角色會快取在 AuthenticatedUser 中經過驗證的階段,並在這裡指定的時間段後,符合(非同步)重新載入的資格。預設為 2000,設定為 0 以完全停用快取。對於 AllowAllAuthenticator,將自動停用。對於使用 roles_cache_active_update 的長時間執行快取,請考慮設定為較長的時間,例如每日驗證:86400000 最小單位:毫秒
預設值: 2000 毫秒
roles_update_interval
此選項預設為註解。
角色快取的更新間隔(如果已啟用)。在此間隔後,快取項目符合更新資格。在下一次存取時,會排定非同步重新載入,並在完成前傳回舊值。如果 roles_validity 非零,則此值也必須是非零。此設定也用於告知使用 roles_cache_active_update 時自動更新的間隔。預設值與 roles_validity 相同。對於長時間執行的快取,請考慮將此值設定為 60000(1 小時)等。最小單位:毫秒
預設值: 2000 毫秒
roles_cache_active_update
此選項預設為註解。
如果為 true,快取內容會由背景工作在 roles_update_interval 設定的間隔中主動更新。如果為 false,快取項目在更新間隔後便符合更新資格。下次存取時,會排程非同步重新載入,並在完成前傳回舊值。
預設值: false
permissions_validity
權限快取的有效期間(擷取權限可能是一項耗費資源的作業,這取決於授權者,CassandraAuthorizer 就是一個範例)。預設為 2000,設定為 0 以停用。會針對 AllowAllAuthorizer 自動停用。對於使用 permissions_cache_active_update 的長時間執行快取,請考慮設定為較長的時間,例如每日驗證:86400000ms 最小單位:毫秒
預設值: 2000 毫秒
permissions_update_interval
此選項預設為註解。
權限快取的更新間隔(如果已啟用)。在此間隔後,快取項目便符合更新資格。下次存取時,會排程非同步重新載入,並在完成前傳回舊值。如果 permissions_validity 非零,則此設定也必須是非零。此設定也用於告知使用 permissions_cache_active_update 時自動更新的間隔。預設值與 permissions_validity 相同。對於較長時間執行的權限快取,請考慮設定為每小時更新 (60000) 最小單位:毫秒
預設值: 2000 毫秒
permissions_cache_active_update
此選項預設為註解。
如果為 true,快取內容會由背景工作在 permissions_update_interval 設定的間隔中主動更新。如果為 false,快取項目在更新間隔後便符合更新資格。下次存取時,會排程非同步重新載入,並在完成前傳回舊值。
預設值: false
credentials_validity
憑證快取的有效期間。此快取與 IAuthenticator 的 PasswordAuthenticator 實作緊密結合。如果設定了其他 IAuthenticator 實作,此快取將不會自動使用,因此下列設定不會產生任何效果。請注意,憑證會以加密形式快取,因此啟用此快取可能會減少對基礎資料表的查詢次數,但可能不會大幅降低個別驗證嘗試的延遲。預設值為 2000,設定為 0 以停用憑證快取。對於使用 credentials_cache_active_update 的長時間執行快取,請考慮設定為較長的時間,例如每日驗證:86400000 最小單位:毫秒
預設值: 2000 毫秒
credentials_update_interval
此選項預設為註解。
憑證快取的更新間隔(如果已啟用)。在此間隔後,快取項目便符合更新資格。下次存取時,會排程非同步重新載入,並在完成前傳回舊值。如果 credentials_validity 非零,則此設定也必須是非零。此設定也用於告知使用 credentials_cache_active_update 時自動更新的間隔。預設值與 credentials_validity 相同。對於較長時間執行的權限快取,請考慮設定為每小時更新 (60000) 最小單位:毫秒
預設值: 2000 毫秒
credentials_cache_active_update
此選項預設為註解。
如果為 true,則背景工作會以 credentials_update_interval 設定的間隔主動更新快取內容。如果為 false(預設),則快取條目會在更新間隔後符合更新資格。下次存取時,會排定非同步重新載入,並在完成之前傳回舊值。
預設值: false
partitioner
分區器負責將群組列(依分區金鑰)分佈到叢集中的節點。分區器無法在不重新載入所有資料的情況下變更。如果您要新增節點或升級,應將其設定為您目前使用的相同分區器。
預設分區器為 Murmur3Partitioner。較舊的分區器,例如 RandomPartitioner、ByteOrderedPartitioner 和 OrderPreservingPartitioner,僅包含在內以維持向後相容性。對於新的叢集,您不應變更此值。
預設值: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories
此選項預設為註解。
Cassandra 應該將資料儲存在磁碟上的目錄。如果指定多個目錄,Cassandra 會透過分區令牌範圍將資料平均分佈在這些目錄中。如果未設定,預設目錄為 $CASSANDRA_HOME/data/data。
預設值(複雜選項):
# - /var/lib/cassandra/data
local_system_data_file_directory
此選項預設為註解。Cassandra 應該將本地系統儲存空間的資料儲存在其中的目錄。預設情況下,Cassandra 會將本地系統儲存空間的資料儲存在 data_file_directories 指定的第一個資料目錄中。此方法可確保如果其他磁碟之一遺失,Cassandra 仍可繼續運作。為了加強安全性,此設定允許將這些資料儲存在提供備援的不同目錄中。
commitlog_directory
此選項預設為註解。
提交記錄。在磁性硬碟上執行時,這應與資料目錄分屬不同的主軸。如果未設定,預設目錄為 $CASSANDRA_HOME/data/commitlog。
預設值: /var/lib/cassandra/commitlog
cdc_enabled
針對每個節點啟用/停用 CDC 功能。這會修改用於寫入路徑配置拒絕的邏輯(標準:永不拒絕。cdc:如果在 cdc_raw_directory 中達到空間限制,則拒絕包含啟用 CDC 表格的突變。
預設值: false
cdc_block_writes
此選項預設為註解。
指定當磁碟上的 CDC 資料達到限制時,是否應封鎖對啟用 CDC 的表格的寫入。設定為 false 時,寫入不會被封鎖,且會刪除磁碟上最舊的 CDC 資料以確保大小限制。預設為 true。
預設值: true
cdc_on_repair_enabled
此選項預設為註解。
指定 CDC 突變是否透過串流寫入路徑重播,例如修復。啟用時,串流到目標節點的 CDC 資料將首先寫入提交記錄。設定為 false 時,串流的 CDC 資料會寫入 SSTable,就像一般的串流一樣。預設為 true。如果設定為 false,串流速度會大幅提升,但極端情況下(失去複本組中 > 法定人數的節點),SSTable 中的資料可能永遠無法寫入 CDC 記錄。
預設值: true
cdc_raw_directory
此選項預設為註解。
如果 cdc_enabled: true,而且區段包含 CDC 啟用表的突變,則在快取時,CommitLogSegments 會移至這個目錄。這應該放置在與資料目錄不同的主軸上。如果未設定,預設目錄為 $CASSANDRA_HOME/data/cdc_raw。
預設值: /var/lib/cassandra/cdc_raw
disk_access_mode
此選項預設為註解。
磁碟存取政策
auto 在 64 位元 JVM 上針對資料和索引檔案啟用 mmap。
standard 完全停用 mmap。
mmap 對索引和資料檔案進行對應。如果所有主動讀取的 SSTable 無法放入 RAM,mmap 可能會導致過度分頁。
mmap_index_only 類似於 mmap,但只對應索引檔案。如果您觀察到大量的頁面錯誤或竊取,以及延遲增加,使用這個設定可能也有幫助。這是預設設定。
預設值: mmap_index_only
disk_failure_policy
資料磁碟故障政策
die 關閉八卦和客戶端傳輸,並終止 JVM 以處理任何檔案系統錯誤或單一 SSTable 錯誤,以便更換節點。
stop_paranoid 關閉八卦和客戶端傳輸,即使發生單一 SSTable 錯誤,也會終止 JVM 以處理啟動期間的錯誤。
stop 關閉八卦和客戶端傳輸,讓節點實際上處於死機狀態,但仍可透過 JMX 檢查,並終止 JVM 以處理啟動期間的錯誤。
best_effort 停止使用故障磁碟,並根據剩餘可用的 SSTable 回應要求。這表示您將在 CL.ONE!中看到過時的資料。
ignore 忽略致命錯誤,並讓要求失敗,就像 1.2 版之前的 Cassandra
預設值: stop
commit_failure_policy
提交磁碟故障政策
die 關閉節點並終止 JVM,以便更換節點。
stop 關閉節點,讓節點實際上處於死機狀態,但仍可透過 JMX 檢查。
stop_commit 關閉提交記錄,讓寫入收集,但繼續提供讀取服務,就像在 2.0.5 之前的 Cassandra
ignore 忽略致命錯誤,讓批次失敗
預設值: stop
prepared_statements_cache_size
原生協定已準備好陳述快取的最大大小
有效值為「auto」(省略值)或大於 0 的值。
請注意,指定過大的值會導致長時間執行 GC,並可能發生記憶體不足的錯誤。請將值保持在堆的較小部分。
如果您持續看到「由於快取限制已達到,在最後一分鐘捨棄已準備好的陳述」訊息,第一步是調查這些訊息的根本原因,並檢查已準備好的陳述是否正確使用,例如對變數部分使用繫結標記。
僅在快取中放入的已準備好陳述多於實際需要的數量時,才變更預設值。在多數情況下,不需要變更此值。持續重新準備陳述會造成效能損失。
預設值(「auto」)為堆的 1/256 或 10MiB,以較大者為準。最小單位:MiB
key_cache_size
記憶體中金鑰快取的最大大小。
每個金鑰快取命中至少可節省 1 次搜尋,每個列快取命中至少可節省 2 次搜尋,有時更多。金鑰快取相對於節省的時間而言相當小,因此值得大量使用。列快取可節省更多時間,但必須包含整列,因此非常耗費空間。最好僅在有熱門列或靜態列時使用列快取。
如果您縮小大小,可能無法在啟動時載入最熱門的金鑰。 |
預設值為空,使其為「auto」(最小值為 5% 的堆(以 MiB 為單位),100MiB)。設為 0 以停用金鑰快取。
這僅與使用金鑰快取的 SSTable 格式相關,例如 BIG。最小單位:MiB
key_cache_save_period
Cassandra 應儲存金鑰快取的秒數。快取會儲存到此組態檔中指定的 saved_caches_directory。
已儲存的快取大幅提升冷啟動速度,而且金鑰快取在 I/O 方面相對便宜。列快取儲存昂貴許多,且用途有限。
這僅與使用金鑰快取的 SSTable 格式相關,例如 BIG。預設值為 14400 或 4 小時。最小單位:s
預設值:4h
key_cache_keys_to_save
此選項預設為註解。
要儲存的金鑰快取中的金鑰數。預設為停用,表示將儲存所有金鑰。這僅與使用金鑰快取的 SSTable 格式相關,例如 BIG。
預設值 100
row_cache_class_name
此選項預設為註解。
列快取實作類別名稱。可用的實作
org.apache.cassandra.cache.OHCProvider 完全堆外行快取實作(預設)。
org.apache.cassandra.cache.SerializingCacheProvider 這是 Cassandra 先前版本中提供的行快取實作。
預設值: org.apache.cassandra.cache.OHCProvider
row_cache_size
記憶體中行快取的最大大小。請注意,OHC 快取實作需要一些額外的堆外記憶體來管理映射結構,以及在快取項目計入快取容量之前,在作業期間的一些暫存記憶體。與整體容量相比,這種額外負擔通常很小。不要指定系統在最糟情況下負擔不起的記憶體,並為作業系統區塊層級快取保留一些空間。切勿讓系統換頁。
預設值為 0,以停用行快取。最小單位:MiB
預設值: 0 MiB
row_cache_save_period
Cassandra 應儲存行快取的秒數。快取會儲存到此組態檔案中指定的 saved_caches_directory。
已儲存的快取大幅提升冷啟動速度,而且金鑰快取在 I/O 方面相對便宜。列快取儲存昂貴許多,且用途有限。
預設為 0 以停用儲存行快取。最小單位:s
預設值: 0s
counter_cache_size
記憶體中計數器快取的最大大小。
計數器快取有助於減少熱門計數器儲存格的計數器鎖定競爭。如果 RF = 1,計數器快取命中會導致 Cassandra 完全略過寫入前的讀取。如果 RF > 1,計數器快取命中仍有助於縮短鎖定保持時間,協助熱門計數器儲存格更新,但不會完全略過讀取。只會將計數器儲存格的本機 (時脈、計數) 元組保留在記憶體中,而不是整個計數器,因此相對便宜。
如果您縮小大小,可能無法在啟動時載入最熱門的金鑰。 |
預設值為空,使其為「自動」(最小值為 2.5% 的堆積(以 MiB 為單位)、50MiB)。設定為 0 以停用計數器快取。注意:如果您執行計數器刪除並依賴低 gcgs,您應停用計數器快取。最小單位:MiB
counter_cache_save_period
Cassandra 應儲存計數器快取(僅金鑰)的秒數。快取會儲存到此組態檔案中指定的 saved_caches_directory。
預設為 7200 或 2 小時。最小單位:s
預設值: 7200s
saved_caches_directory
此選項預設為註解。
已儲存快取 如果未設定,預設目錄為 $CASSANDRA_HOME/data/saved_caches。
預設值: /var/lib/cassandra/saved_caches
cache_load_timeout
此選項預設為註解。
伺服器在啟動 Cassandra 程序時載入每個快取 (列、金鑰等…) 的秒數。將此設定為零等於在啟動時停用所有快取載入,但執行期間仍有快取。最小單位:秒
預設值: 30 秒
commitlog_sync_group_window
此選項預設為註解。
commitlog_sync 可以是「periodic」、「group」或「batch」。
在批次模式中,Cassandra 會在提交記錄沖洗到磁碟後才確認寫入。每個輸入寫入都會觸發沖洗任務。
群組模式類似於批次模式,Cassandra 會在提交記錄沖洗到磁碟後才確認寫入。兩者的差別在於群組模式會在沖洗之間等待 commitlog_sync_group_window。
最小單位:毫秒
預設值: 1000 毫秒
commitlog_segment_size
個別提交記錄檔案區段的大小。一旦系統中每個資料欄位集合中的所有資料都沖洗到 SSTable,就可以封存、刪除或回收提交記錄區段。
預設大小為 32,幾乎總是沒問題,但如果你要封存提交記錄區段 (請參閱 commitlog_archiving.properties),你可能需要更精細的封存粒度;8 或 16 MB 是合理的。最大變異大小也可以透過 cassandra.yaml 中的 max_mutation_size 設定進行設定。預設值是 commitlog_segment_size 的一半(以位元組為單位)。這應該為正值且小於 2048。
如果 max_mutation_size 是明確設定的,則 commitlog_segment_size 必須設定為至少是 max_mutation_size 大小的兩倍 |
最小單位:MiB
預設值: 32 MiB
commitlog_compression
此選項預設為註解。
要套用到提交記錄的壓縮。如果省略,提交記錄將以未壓縮的方式寫入。支援 LZ4、Snappy 和 Deflate 壓縮器。
預設值(複雜選項):
# - class_name: LZ4Compressor # parameters: # -
commitlog_disk_access_mode
設定寫入提交記錄區段的磁碟存取模式。允許的值為:- auto:依版本而定的最佳設定- legacy:Cassandra 4.x 及更早版本中使用的預設模式 (當提交記錄已壓縮或加密時為標準 I/O,否則為 mmap)- mmap:使用記憶體對映 I/O - 僅在提交記錄未壓縮或加密時可用- direct:使用直接 I/O - 僅在提交記錄未壓縮或加密時可用- standard:使用標準 I/O - 僅在提交記錄已壓縮或加密時可用預設設定為 legacy,當儲存相容性設定為 4 時,否則為 auto。
預設值: legacy
table
此選項預設為註解。
壓縮 SSTable 在壓縮表格中刷新時套用。請注意,未啟用壓縮的表格不適用此旗標。
由於 LZ4HC、Zstd 和 Deflate 等高比率壓縮器可能會長時間封鎖刷新,因此預設會在這些情況下使用已知快速壓縮器來刷新。選項有
none:在不壓縮區塊但仍執行檢查和的情況下刷新。fast:使用快速壓縮器刷新。如果表格已使用快速壓縮器,則使用該壓縮器。
預設值:始終使用表格使用的相同壓縮器刷新。此
seed_provider
任何實作 SeedProvider 介面且建構函式採用參數 Map<String, String> 的類別都可以。
預設值(複雜選項):
# Addresses of hosts that are deemed contact points. # Cassandra nodes use this list of hosts to find each other and learn # the topology of the ring. You must change this if you are running # multiple nodes! - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: # seeds is actually a comma-delimited list of addresses. # Ex: "<ip1>,<ip2>,<ip3>" - seeds: "127.0.0.1:7000" # If set to "true", SimpleSeedProvider will return all IP addresses for a DNS name, # based on the configured name service on the system. Defaults to "false". # resolve_multiple_ip_addresses_per_dns_record: "false"
concurrent_reads
對於資料量超過記憶體容量的工作負載,Cassandra 的瓶頸會是需要從磁碟擷取資料的讀取作業。「concurrent_reads」應設定為 (16 * 磁碟機數量),以允許作業在堆疊中排隊,低到足以讓作業系統和磁碟機重新排序它們。由於計數器寫入會在遞增並寫回之前讀取目前值,因此「concurrent_counter_writes」也適用。
另一方面,由於寫入幾乎不會受到 I/O 限制,因此「concurrent_writes」的理想數量取決於系統中的核心數量;(8 * 核心數量) 是個不錯的經驗法則。
預設值 32
networking_cache_size
此選項預設為註解。
用於節點間和客戶端伺服器網路緩衝區的最大記憶體。
預設值為堆積的 1/16 或 128MB,以較小者為準。此池會在堆積外配置,因此會額外新增配置給堆積的記憶體。快取也會有堆積內開銷,每個區塊約為 128 位元組 (亦即,如果使用預設的 64k 區塊大小,則為保留大小的 0.2%)。僅在需要時配置記憶體。最小單位:MiB
預設值: 128 MiB
file_cache_size
此選項預設為註解。
sstable 塊快取和緩衝區池化的最大記憶體使用量。其中 32MB 保留給池化緩衝區,其餘用於儲存未壓縮 sstable 塊的塊快取。預設值為堆積的 1/4 或 512MB,以較小者為準。此池會在堆積外配置,因此會額外增加堆積配置的記憶體。快取也會有堆積內部開銷,每個塊約 128 位元組(例如,如果使用預設的 64k 塊大小,則為保留大小的 0.2%)。記憶體僅會在需要時配置。最小單位:MiB
預設值: 512MiB
buffer_pool_use_heap_if_exhausted
此選項預設為註解。
當 sstable 緩衝區池用盡時,指出是否在堆積內或堆積外配置的旗標,也就是說,當超過最大記憶體 file_cache_size 時,它不會快取緩衝區,而是依要求配置。
預設值: true
memtable
支援的 memtable 實作和選定的預設值。目前 Cassandra 提供兩種 memtable 實作:- SkipListMemtable 是 Cassandra 早期版本提供的舊式 memtable 實作。- TrieMemtable 是一個新的 memtable,使用 trie 資料結構。此實作透過將更多 sstable 元資料移到堆積外,大幅減少垃圾收集負載,在相同的配置中容納更多資料,並能可靠地處理更高的寫入量。由於 trie memtable 是分片單一寫入解決方案,因此當負載分佈非常不均時,效能可能會變差,例如當大部分寫入存取的分割區數量非常少,或使用舊式次要索引時。memtable 實作可以透過在表格定義中將 memtable 屬性設定為下列指定的其中一個組態,為每個表格選取。如果未設定 memtable 屬性,將會使用「預設」組態。請參閱 src/java/org/apache/cassandra/db/memtable/Memtable_API.md 以取得更多資訊。
memtable_heap_space
此選項預設為註解。
用於記憶表的總許可記憶體。當超過限制時,Cassandra 會停止接受寫入,直到刷新完成,並根據 memtable_cleanup_threshold 觸發刷新。如果省略,Cassandra 會將兩者都設定為堆積大小的 1/4。最小單位:MiB
預設值: 2048MiB
memtable_cleanup_threshold
此選項預設為註解。
memtable_cleanup_threshold 已過時。預設計算是唯一合理的選擇。有關更多資訊,請參閱 memtable_flush_writers 的註解。
佔用未刷新記憶表大小與總許可大小的比率,將觸發刷新最大的記憶表。較大的 mct 表示較大的刷新,因此壓縮較少,但同時並發刷新活動較少,這可能會讓您難以在繁重的寫入負載下提供磁碟。
memtable_cleanup_threshold 預設為 1 / (memtable_flush_writers + 1)
預設值 0.11
memtable_allocation_type
指定 Cassandra 分配和管理記憶表記憶體的方式。選項為
heap_buffers 在堆積 nio 緩衝區上
offheap_buffers 堆積外 (直接) nio 緩衝區
offheap_objects 堆積外物件
預設值: heap_buffers
repair_session_space
此選項預設為註解。
限制在修復特定表格和一般權杖範圍期間,用於 Merkle 樹計算的記憶體使用量。針對多個表格或虛擬節點的修復命令可能會超過此限制,具體取決於 concurrent_merkle_tree_requests。
預設值為可用堆積的 1/16。主要的權衡在於較小的樹解析度較低,這可能會導致資料過度串流。如果您在修復期間看到堆積壓力,請考慮降低此值,但不能低於 1 MiB。如果您看到大量過度串流,請考慮提高此值或使用子範圍修復。
有關更多詳細資訊,請參閱 issues.apache.org/jira/browse/CASSANDRA-14096。
最小單位:MiB
concurrent_merkle_tree_requests
此選項預設為註解。
修復命令可以執行的修復期間同時 Merkle 樹請求的數量。每個驗證請求的大小受 repair_session_space 屬性限制,因此將此設定為 1 將確保修復命令不會超過該限制,即使修復命令正在修復多個表格或多個虛擬節點也是如此。
預設沒有限制,以維持向後相容性,但這可能會為修復多個表格或多個虛擬節點的命令產生 OOM。一般建議僅將同時 Merkle 樹請求的限制設為 1,且沒有虛擬節點,因此 repair_session_space,以及 Merkle 樹解析度,可能會很高。對於虛擬節點,將值設為 1,且使用預設的 repair_session_space 值,將會產生解析度較高的 Merkle 樹,但會犧牲速度。或者,在使用虛擬節點時,降低 repair_session_space 並提高 concurrent_merkle_tree_requests 的值可能是合理的,因為每個範圍將包含較少的資料。
有關更多詳細資訊,請參閱 issues.apache.org/jira/browse/CASSANDRA-19336。
零值表示沒有限制。
預設值 0
commitlog_total_space
此選項預設為註解。 # 設定支援的每個修復訊息的重試次數。目前重試使用指數演算法,其中每次嘗試會根據 base_sleep_time 和嘗試次數而睡得更久。retries: max_attempts: 10 base_sleep_time: 200ms max_sleep_time: 1s # 由於驗證回應包含 merkle 樹,因此增加其逾時時間 merkle_tree_response: base_sleep_time: 30s max_sleep_time: 1m
用於磁碟上提交記錄的總空間。
如果空間超過此值,Cassandra 會沖刷最舊區段中的每個骯髒 CF 並將其移除。因此,較小的總提交記錄空間會傾向於對較不活躍的欄位家族造成更多沖刷活動。
預設值為 8192 的較小值,以及提交記錄磁碟區總空間的 1/4。
預設值: 8192MiB
memtable_flush_writers
此選項預設為註解。
這會設定每個磁碟的記憶表沖刷寫入器執行緒數目,以及可以同時沖刷的記憶表總數。這些通常是運算和 IO 結合的組合。
記憶表沖刷比記憶表攝取更有效率,而且單一執行緒可以在單一快速磁碟上跟上整個伺服器上的攝取速率,直到它在競爭中暫時變成 IO 結合,通常會與壓縮同時發生。在那個時候,您需要多個沖刷執行緒。在未來的某個時間點,它可能會一直處於 CPU 結合狀態。
您可以使用 MemtablePool.BlockedOnAllocation 指標判斷沖刷是否落後,該指標應該是 0,但如果執行緒因等待沖刷以釋放記憶體而遭到封鎖,則會是非零值。
對於單一資料目錄,memtable_flush_writers 預設為兩個。這表示可以同時將兩個記憶表沖刷到單一資料目錄。如果您有多個資料目錄,預設是一次沖刷一個記憶表,但沖刷會對每個資料目錄使用一個執行緒,因此您將獲得兩個或更多個寫入器。
兩個通常足以在安裝為單一資料目錄的快速磁碟 [陣列] 上沖刷。新增更多沖刷寫入器會導致更頻繁、較小的沖刷,這會引入更多壓縮開銷。
可以同時沖刷的記憶表數目與沖刷大小和頻率之間存在直接的權衡。越多並不一定越好,您只需要足夠的沖刷寫入器,才能永遠不會停滯等待沖刷以釋放記憶體。
預設值 2
cdc_total_space
此選項預設為註解。
用於磁碟上變更資料擷取記錄的總空間。
如果空間超過此值,Cassandra 會對啟用 CDC 的資料表(包括突變)擲出 WriteTimeoutException。CDCCompactor 負責解析原始 CDC 記錄,並在解析完成時將其刪除。
預設值為 4096 MiB 的最小值,以及 cdc_raw_directory 所在磁碟總空間的 1/8。最小單位:MiB
預設值: 4096MiB
cdc_free_space_check_interval
此選項預設為註解。
當我們達到 cdc_raw 限制,且 CDCCompactor 執行落後或遇到反壓時,我們會在下列時間間隔檢查是否有任何新的空間可供 cdc 追蹤的表格使用。預設為 250ms 最小單位:毫秒
預設值: 250ms
index_summary_capacity
SSTable 索引摘要的固定記憶體池大小(MB)。如果留空,預設為堆大小的 5%。如果所有索引摘要的記憶體使用量超過此限制,讀取率低的 SSTable 會縮減其索引摘要以符合此限制。不過,這是一個盡力而為的程序。在極端情況下,Cassandra 可能需要使用超過此數量的記憶體。僅與使用索引摘要的格式相關,例如 BIG。最小單位:KiB
index_summary_resize_interval
索引摘要應重新取樣的頻率。此作業會定期執行,以將記憶體從固定大小的池子重新分配到與其近期讀取率成正比的 SSTable。設定為 null 值會停用此程序,讓現有的索引摘要維持在目前的取樣層級。僅與使用索引摘要的格式相關,例如 BIG。最小單位:分鐘
預設值: 60m
trickle_fsync
在進行順序寫入時,是否以時間間隔執行 fsync() 以強制作業系統清除髒緩衝區。啟用此選項可避免髒緩衝區突然清除而影響讀取延遲。在 SSD 上幾乎總是個好主意;在磁碟上則不一定。
預設值: false
ssl_storage_port
SSL 埠,用於舊版加密通訊。除非在 server_encryption_options 中啟用(請見下方),否則此屬性不會使用。從 Cassandra 4.0 開始,此屬性已不建議使用,因為單一埠可同時用於安全和非安全連線。基於安全性考量,您不應將此埠公開到網際網路。如有需要,請設定防火牆。
預設值 7001
listen_address
繫結並告知其他 Cassandra 節點連線的位址或介面。如果您希望多個節點能夠通訊,您必須變更此設定!
設定 listen_address 或 listen_interface,不可同時設定兩者。
留空會交由 InetAddress.getLocalHost() 處理。如果節點已正確設定(主機名稱、名稱解析等),這將永遠執行正確的動作,而正確的動作是使用與主機名稱關聯的位址(可能不是)。如果無法解析,它將回退至 InetAddress.getLoopbackAddress(),這對於生產系統而言是錯誤的。
將 listen_address 設定為 0.0.0.0 永遠是錯誤的。
預設值:localhost
listen_interface
此選項預設為註解。
設定 listen_address 或 listen_interface,不可同時設定兩者。介面必須對應到單一位址,不支援 IP 別名。
預設值:eth0
listen_interface_prefer_ipv6
此選項預設為註解。
如果您選擇透過名稱指定介面,而介面具有 IPv4 和 IPv6 位址,您可以使用 listen_interface_prefer_ipv6 指定應選擇哪一個。如果為 false,將使用第一個 IPv4 位址。如果為 true,將使用第一個 IPv6 位址。預設為 false,偏好 IPv4。如果只有一個位址,將選擇該位址,而不論是 IPv4 或 IPv6。
預設值: false
listen_on_broadcast_address
此選項預設為註解。
使用多個實體網路介面時,將此設定為 true 以在 listen_address 之外監聽 broadcast_address,允許節點在兩個介面中通訊。如果網路設定會在公用和私人網路之間自動路由,例如 EC2,請忽略此屬性。
預設值: false
start_native_transport
class_name : org.apache.cassandra.auth.AllowAllInternodeAuthenticator parameters : MutualTlsInternodeAuthenticator can be configured using the following configuration.One can add their own validator which implements MutualTlsCertificateValidator class and provide logic for extracting identity out of certificates and validating certificates. class_name : org.apache.cassandra.auth.MutualTlsInternodeAuthenticator parameters : validator_class_name: org.apache.cassandra.auth.SpiffeCertificateValidator trusted_peer_identities: "spiffe1,spiffe2" node_identity: "spiffe1" Whether to start the native transport server. The address on which the native transport is bound is defined by rpc_address.
預設值: true
native_transport_port_ssl
此選項預設為註解。在 client_encryption_options 中啟用原生傳輸加密,讓您可以為標準埠使用加密,或與未加密的標準 native_transport_port 一同使用專用的附加埠。啟用用戶端加密並停用 native_transport_port_ssl,將對 native_transport_port 使用加密。將 native_transport_port_ssl 設定為與 native_transport_port 不同的值,將對 native_transport_port_ssl 使用加密,同時保持 native_transport_port 未加密。此功能已於 Cassandra 5.0 中棄用,並將予以移除。請參閱 NEWS.txt 中的棄用部分。
預設值 9142
native_transport_max_frame_size
此選項預設為註解。
允許的最大框架大小。大於此大小的框架(要求)將被視為無效而遭拒絕。預設值為 16MiB。如果您要變更此參數,您可能需要調整 max_value_size。此值應為正值且小於 2048。最小單位:MiB
預設值: 16MiB
native_transport_max_concurrent_connections_per_ip
此選項預設為註解。
每個來源 IP 同時進行的用戶端連線數上限。預設值為 -1,表示無限制。
預設值 -1
native_transport_allow_older_protocols
控制 Cassandra 是否支援較舊但目前仍受支援的通訊協定版本。預設值為 true,表示將支援所有受支援的通訊協定。
預設值: true
native_transport_idle_timeout
此選項預設為註解。
控制何時關閉閒置的用戶端連線。閒置連線是指一段時間內既沒有讀取也沒有寫入的連線。
用戶端可以在逾時後,透過傳送 OPTIONS 原生通訊協定訊息來實作心跳,這將會重設伺服器端的閒置逾時計時器。若要關閉閒置用戶端連線,必須在用戶端設定對應的心跳間隔值。
閒置連線逾時預設為停用。最小單位:毫秒
預設值: 60000 毫秒
native_transport_rate_limiting_enabled
此選項預設為註解。
啟用後,會限制每秒處理的原生傳輸請求數量。一旦超過限制,後續行為取決於用戶端在建立連線時傳送的 STARTUP 訊息中指定的 THROW_ON_OVERLOAD 值。(請參閱「CQL BINARY PROTOCOL v5」中的「4.1.1. STARTUP」章節。)如果啟用 THROW_ON_OVERLOAD 旗標,超過限制的訊息將會被捨棄,並為用戶端擲回 OverloadedException 以供處理。如果未啟用此旗標,伺服器將停止從頻道/socket 使用訊息,並在處理已發送的訊息時對用戶端施加反壓力。
預設值: false
rpc_address
原生傳輸伺服器繫結的位址或介面。
設定 rpc_address 或 rpc_interface,不可同時設定兩者。
將 rpc_address 留空的效果與 listen_address 相同(亦即,它會根據節點設定的主機名稱)。
請注意,與 listen_address 不同的是,你可以指定 0.0.0.0,但你必須將 broadcast_rpc_address 設定為 0.0.0.0 以外的值。
基於安全性考量,你不應該將這個埠公開到網際網路上。如有需要,請對其進行防火牆設定。
預設值:localhost
rpc_interface_prefer_ipv6
此選項預設為註解。
如果你選擇透過名稱指定介面,而且該介面具有 ipv4 和 ipv6 位址,你可以使用 rpc_interface_prefer_ipv6 指定要選擇哪一個。如果為 false,將會使用第一個 ipv4 位址。如果為 true,將會使用第一個 ipv6 位址。預設為 false,優先使用 ipv4。如果只有一個位址,將會選擇該位址,不論是 ipv4 或 ipv6。
預設值: false
broadcast_rpc_address
此選項預設為註解。
廣播到驅動程式和其他 Cassandra 節點的 RPC 位址。這個值不能設定為 0.0.0.0。如果留空,這個值將會設定為 rpc_address 的值。如果 rpc_address 設定為 0.0.0.0,則必須設定 broadcast_rpc_address。
預設值 1.2.3.4
internode_socket_send_buffer_size
此選項預設為註解。
取消註解以設定節點間通訊的 socket 緩衝區大小 請注意,設定此項時,緩衝區大小受限於 net.core.wmem_max,未設定時則由 net.ipv4.tcp_wmem 定義 另請參閱:/proc/sys/net/core/wmem_max /proc/sys/net/core/rmem_max /proc/sys/net/ipv4/tcp_wmem /proc/sys/net/ipv4/tcp_wmem 和 'man tcp' 最小單位:B
internode_socket_receive_buffer_size
此選項預設為註解。
取消註解以設定節點間通訊的 socket 緩衝區大小 請注意,設定此項時,緩衝區大小受限於 net.core.wmem_max,未設定時則由 net.ipv4.tcp_wmem 定義 最小單位:B
incremental_backups
設為 true 以讓 Cassandra 在此節點所有鍵值空間資料的 backups/ 子目錄中,為每個在本地快取或串流的 sstable 建立硬連結。移除這些連結是操作員的責任。操作員也可以透過將表格參數 incremental_backups 設為 false 來關閉指定表格的增量備份,預設為 true。請參閱 CASSANDRA-15402
預設值: false
snapshot_before_compaction
是否在每次壓縮前建立快照。使用此選項時請小心,因為 Cassandra 不会為您清除快照。在資料格式變更時,如果您很擔心,此選項特別有用。
預設值: false
auto_snapshot
是否在鍵值空間被截斷或刪除資料家族之前,對資料建立快照。強烈建議使用預設值 true,以提供資料安全性。如果您將此旗標設為 false,您將在截斷或刪除時遺失資料。
預設值: true
auto_snapshot_ttl
此選項預設為註解。
在表格截斷或刪除(啟用時)產生的自動快照中加入到期時間 (TTL)。TTL 經過後,快照會自動清除。預設情況下,自動快照沒有 TTL,取消以下屬性的註解以在自動快照中啟用 TTL。可接受的單位:d(天)、h(小時)或 m(分鐘)
預設值: 30d
snapshot_links_per_second
建立或清除快照的行為會建立或移除可能數以萬計的連結,這可能會造成顯著的效能影響,特別是在消費級 SSD 上。此處的非零值可用於限制這些連結,以避免建立和清除快照對效能造成的負面影響
預設值 0
sstable
此選項預設為註解。
SSTable 格式設定。SSTable 格式實作使用服務載入器機制載入。在此區段中,使用者可以選擇建立 SSTable 的格式,並傳遞給 classpath 中可用格式的附加參數。預設格式為「big」,這是 Cassandra 3.0 以來使用的傳統 SSTable 格式。Cassandra 5.0 和更新版本也支援 trie 編製索引的「bti」格式,其效能更佳。
column_index_size
此選項預設為註解。 selected_format: big
分割區中列內部排序索引的粒度。適用於 BIG 和 BTI SSTable 格式。在兩種格式中,較小的粒度會加快分割區中列的查詢速度,但索引檔案大小會變大。不建議將較小的粒度與 BIG 格式搭配使用,因為如果排序索引變大到一定程度,較大的排序索引將無法有效快取,甚至無法快取。此外,如果存在大型列或每個分割區有非常大量的列,建議增加索引粒度或切換到 BTI SSTable 格式。
保留空白以使用適合目前使用中 SSTable 格式的預設值(BIG 為 64 KiB,BTI 為 16KiB)。最小單位:KiB
預設值: 4KiB
column_index_cache_size
超過此大小的每個 SSTable 編製索引的快取項目(上述的記憶體中排序索引)將不會保留在堆積中。這表示只有分割區資訊會保留在堆積中,而索引項目會從磁碟中讀取。
請注意,此大小是指序列化索引資訊的大小,而非分割區的大小。
這只與使用快取鍵的 SSTable 格式相關,例如 BIG。最小單位:KiB
預設值: 2KiB
default_compaction
此選項預設為註解。
預設壓縮策略,在資料表的參數未指定壓縮時套用。所選的壓縮策略也會套用至系統資料表。
如果未指定任何值,預設會使用 SizeTieredCompactionStrategy,並套用其預設壓縮參數。
concurrent_compactors
此選項預設為註解。 class_name: SizeTieredCompactionStrategy parameters: min_threshold: 4 max_threshold: 32
允許同時進行的壓縮數量,不包括反熵修復的驗證「壓縮」。同時壓縮有助於在混合讀寫工作負載中維持讀取效能,方法是減輕在單次長時間壓縮期間累積小型 SSTable 的趨勢。預設值通常很理想,如果您遇到壓縮執行速度過慢或過快的問題,您應該先查看 compaction_throughput。
concurrent_compactors 預設值為(磁碟數量、核心數量)中較小的值,最小值為 2,最大值為 8。
如果資料目錄由 SSD 支援,您應該將此值增加到核心數量。
預設值 1
concurrent_validations
此選項預設為註解。
允許同時進行的修復驗證數量。如果未設定或設定為小於 1 的值,則預設值為 concurrent_compactors 的值。若要在啟動時設定大於 concurrent_compactors 的值,則系統屬性 cassandra.allow_unlimited_concurrent_validations 必須設定為 true。若要動態調整大小至執行中節點上大於 concurrent_compactors 的值,請先在 org.apache.cassandra.db:type=StorageService mbean 上呼叫 bypassConcurrentValidatorsLimit 方法
預設值 0
compaction_throughput
將壓縮限制在整個系統中的給定總體通量。插入資料的速度越快,您需要壓縮的速度就越快,才能降低 sstable 數量,但一般來說,將此值設定為插入資料速率的 16 到 32 倍就已足夠。將此值設定為 0 會停用限制。請注意,這會考量所有類型的壓縮,包括驗證壓縮(為修復建置 Merkle 樹)。
預設值:64MiB/s
sstable_preemptive_open_interval
在壓縮時,替代的 sstable 可以先於完全寫入時開啟,並用於任何已寫入範圍的先前 sstable。這有助於在 sstable 之間順利傳輸讀取,減少頁面快取流失,並保持熱門列為熱門列。將 sstable_preemptive_open_interval 設定為 null 以停用,這等於 sstable_preemptive_open_interval_in_mb 為負數。最小單位:MiB
預設值:50MiB
uuid_sstable_identifiers_enabled
從 4.1 開始,SSTable 支援基於 UUID 的產生識別碼。它們預設為停用,因為一旦啟用,就沒有簡單的方法可以降級。當節點重新啟動,且此選項設定為 true 時,每個新建立的 SSTable 都會有一個基於 UUID 的產生識別碼,而這些檔案無法由舊版本的 Cassandra 讀取。在某個時間點,此選項會預設為 true,並最終從組態中移除。
預設值: false
stream_entire_sstables
此選項預設為註解。
啟用時,允許 Cassandra 在節點之間零複製串流所有符合資格的 SSTable,包括每個元件。這會大幅加快網路傳輸速度,但須受 entire_sstable_stream_throughput_outbound 所指定的節流限制,以及跨資料中心傳輸的 entire_sstable_inter_dc_stream_throughput_outbound。啟用此功能會降低傳送和接收節點的 GC 壓力。未設定時,預設為啟用。雖然此功能會嘗試保持磁碟平衡,但無法保證。如果啟用節點間加密,此功能會自動停用。
預設值: true
entire_sstable_stream_throughput_outbound
此選項預設為註解。
限制此節點上整個 SSTable 出站串流檔案傳輸的總頻寬,單位為 Mbps。將此值設定為 0 會停用節流。未設定時,預設為 200 Mbps 或 24 MiB/s。
預設值: 24MiB/s
entire_sstable_inter_dc_stream_throughput_outbound
此選項預設為註解。
限制資料中心之間的整個 SSTable 檔案串流。將此值設定為 0 會停用整個 SSTable 跨資料中心檔案串流的節流。未設定時,預設為 200 Mbps 或 24 MiB/s。
預設值: 24MiB/s
stream_throughput_outbound
此選項預設為註解。
限制此節點上所有出站串流檔案傳輸的總頻寬,單位為 Mbps。這是必要的,因為 Cassandra 在引導或修復期間串流資料時,大多執行順序 I/O,這可能會導致網路連線飽和並降低 RPC 效能。未設定時,預設為 200 Mbps 或 24 MiB/s。
預設值: 24MiB/s
inter_dc_stream_throughput_outbound
此選項預設為註解。
限制資料中心之間的所有串流檔案傳輸,此設定允許使用者節流跨資料中心串流頻寬,除了節流所有網路串流流量(透過 stream_throughput_outbound_megabits_per_sec 設定)。未設定時,預設為 200 Mbps 或 24 MiB/s。
預設值: 24MiB/s
read_request_timeout
要求的伺服器端逾時。如果伺服器無法在對應的逾時內完成操作,伺服器將傳回逾時例外給客戶端。這些設定用於保護:1) 客戶端等待可能由於某些故障而永遠無法終止的操作。2) 使用過多 CPU/讀取過多資料(導致記憶體累積)的操作,透過限制操作執行時間長度。因此,您應避免將這些設定設得太高。換句話說,如果您因為基礎資源限制而要求逾時,那麼增加逾時只會造成更多問題。當然,將它們設得太低同樣不建議,因為客戶端可能會因逾時設定過於嚴格而導致逾時,即使對於成功的操作也是如此。
協調器應等待讀取操作完成的時間長度。最低可接受值為 10 毫秒。最小單位:毫秒
預設值:5000 毫秒
truncate_request_timeout
協調器應等待截斷完成的時間長度(這可能會更長,因為除非停用 auto_snapshot,否則我們需要先執行快取,才能在移除資料前建立快照。)最低可接受值為 10 毫秒。最小單位:毫秒
預設值: 60000 毫秒
internode_tcp_connect_timeout
此選項預設為註解。
用於保護 Cassandra 免於真實網路分區的防禦性設定。有關詳細資訊,請參閱 (CASSANDRA-14358)。
建立節點間 tcp 連線所需等待的時間長度。最小單位:毫秒
預設值: 2000 毫秒
internode_tcp_user_timeout
此選項預設為註解。
在我們拋棄連線之前,允許連線上有未確認資料的時間,請注意這僅支援 Linux + epoll,而且在 Linux 4.12 中,看起來在 30000 的設定值以上會表現得有點奇怪(會花費比 30 秒更長的時間)。如果您想要較高的設定值,請將此設定為 0,這會採用作業系統預設值,並將 net.ipv4.tcp_retries2 sysctl 設定為 ~8。最小單位:毫秒
預設值: 30000 毫秒
internode_streaming_tcp_user_timeout
此選項預設為註解。
在串流連線中允許未確認資料的時間。預設為 5 分鐘。請增加它或將它設定為 0 以增加逾時時間。最小單位:毫秒
預設值: 300000 毫秒
internode_application_send_queue_capacity
此選項預設為註解。
對排隊傳送至其他節點的訊息,以及等待從叢集中的其他節點到達時處理的訊息,實施的整體、每個端點和每個連線限制。這些限制套用於傳送或接收的訊息的線上大小。
在實施任何端點或整體限制之前,會單獨使用基本每個連結限制。每個節點對都有三個連結:緊急、小型和大型。因此,任何給定的節點最多可能有 N*3*(internode_application_send_queue_capacity+internode_application_receive_queue_capacity) 個訊息排隊,而它們之間沒有任何協調,儘管實際上,使用具備標記感知的路由,只有 RF*tokens 節點需要以顯著的頻寬進行通訊。
端點限制會同時與整體限制一起,實施在超過每個連結限制的所有訊息上,這些訊息會傳送至或來自叢集中單一節點的所有連結。整體限制會同時與每個端點限制一起,實施在超過每個連結限制的所有訊息上,這些訊息會傳送至或來自叢集中任何節點的所有連結。
最小單位:B
預設值: 4 MiB
slow_query_log_timeout
節點記錄慢查詢之前需經過的時間。選取執行時間超過此逾時時間的查詢,將產生一個彙總的記錄訊息,以便識別慢查詢。將此值設為零以停用慢查詢記錄。最小單位:毫秒
預設值: 500 毫秒
internode_timeout
此選項預設為註解。
啟用節點之間的操作逾時時間資訊交換,以準確測量要求逾時。如果停用,則複本將假設協調器已立即將要求轉發給它們,這表示在過載情況下,我們將浪費大量額外時間來處理已逾時的要求。
警告:通常假設使用者已在他們的叢集上設定 NTP,且時鐘大致同步,因為這是最後寫入獲勝的整體正確性的要求。
預設值: true
streaming_keep_alive_period
此選項預設為註解。
設定閒置狀態控制訊息的期間,以更早偵測到失敗的串流。此節點將定期在串流的控制頻道上傳送一個保持連線訊息。這可確保任何最終的 SocketTimeoutException 都會在 2 個保持連線週期內發生。如果節點無法在 Netty 控制頻道上傳送保持連線訊息,或傳送逾時,則串流會話會關閉。預設值為 300 秒(5 分鐘),這表示會在 10 分鐘內偵測到停滯的串流。指定 0 以停用。最小單位:秒
預設值: 300 秒
streaming_connections_per_host
此選項預設為註解。
限制每個主機的串流連線數。當您注意到加入是受 CPU 約束,而非受網路約束時,請增加此值(例如,幾個具有大型檔案的節點)。
預設值 1
streaming_state_expires
此選項預設為註解。
串流統計追蹤設定;由 system_views.streaming 表格使用。串流從追蹤中移除之前需經過的時間;這會影響歷史串流和目前執行的串流。
預設值: 3 天
partition_denylist_enabled
此選項預設為註解。
允許拒絕對已設定 ks、資料表和分區的作業進行可設定的存取(rw/rr),供操作員用於管理叢集健全性與應用程式存取。請參閱 CASSANDRA-12106 和 CEP-13 以取得更多詳細資料。
預設值: false
denylist_refresh
此選項預設為註解。
快取中用於拒絕清單的鍵將「過期」並非同步從後端資料庫重新整理的間隔。注意:這只作為一個故障保險,因為使用模式預期在對基礎拒絕清單項目進行任何變更時為「變更狀態、重新整理快取」。請參閱文件以取得詳細資料。最小單位:秒
預設值: 600 秒
denylist_max_keys_per_table
此選項預設為註解。
我們限制每個資料表允許的拒絕清單鍵數量,以防止其無限增長。節點會在超過此限制時發出警告,同時允許插入新的拒絕清單鍵。在溢出的情況下,拒絕的鍵會依據分區鍵以自然查詢/叢集順序載入。
預設值 1000
denylist_max_keys_total
此選項預設為註解。
我們限制叢集中允許的拒絕清單鍵總數,以防止其無限增長。節點會在初始快取載入時警告鍵數太多,並指示操作員將多餘的項目修剪至設定限制內。
預設值 10000
denylist_consistency_level
此選項預設為註解。
由於拒絕清單在許多方面用於保護叢集的健全性,免於操作員已識別為狀態不佳的分區,我們通常希望對這些資料表的作業具有比 CL.ONE 更強健的運作,以確保這些防護措施已到位。話雖如此,我們允許使用者在有需要時設定此項。
預設值: 法定人數
endpoint_snitch
endpoint_snitch — 將此設定為實作 IEndpointSnitch 的類別。此偵測程式有兩個功能
-
它會教導 Cassandra 足夠的網路拓撲結構,以有效率地路由要求
-
它允許 Cassandra 在叢集中散布複本,以避免相關的失敗。它透過將機器分組到「資料中心」和「機架」來執行此動作。Cassandra 會盡力避免在同一個「機架」上放置多於一個複本(實際上可能不是物理位置)
一旦資料插入叢集,CASSANDRA 將不允許您切換到不相容的偵測程式。這將導致資料遺失。這表示如果您從預設的 SimpleSnitch 開始,而該偵測程式將每個節點都定位在「資料中心 1」中的「機架 1」,則如果您需要新增另一個資料中心,您唯一選項是 GossipingPropertyFileSnitch(以及較舊的 PFS)。從那裡,如果您想要移轉到不相容的偵測程式(例如 Ec2Snitch),您可以透過在 Ec2Snitch 下新增節點(這會將它們定位在新的「資料中心」中)並停用舊節點來執行此動作。
開箱即用,Cassandra 提供
SimpleSnitch:將策略順序視為鄰近性。停用讀取修復時,這可以改善快取區域性。僅適用於單一資料中心部署。
GossipingPropertyFileSnitch 這應該是您在生產環境中使用的偵測程式。本機節點的機架和資料中心定義在 cassandra-rackdc.properties 中,並透過八卦傳播到其他節點。如果 cassandra-topology.properties 存在,則將其用作備援,允許從 PropertyFileSnitch 移轉。
PropertyFileSnitch:鄰近性由機架和資料中心決定,這些內容明確設定在 cassandra-topology.properties 中。
AlibabaCloudSnitch:偵測程式,可從 Alibaba 雲端的金鑰資料服務取得節點的資料中心和機架。此偵測程式假設 ECS 區域是資料中心,而 ECS 可用性區域是機架。
AzureSnitch:從執行個體金鑰資料服務的「運算」物件的「位置」欄位取得資料中心,並從「區域」欄位取得機架。如果未啟用可用性區域,它將使用故障網域並取得其各自的值。
CloudstackSnitch:假設 Cloudstack 區域遵循典型的國家/地區-位置-可用性區域慣例,並使用國家/地區/位置組作為資料中心,並將可用性區域作為機架的 snitch。警告:此 snitch 已棄用,並預計在 Cassandra 的下一個主要版本中移除。
Ec2Snitch:適用於單一區域中的 EC2 部署。從 EC2 API 載入區域和可用性區域資訊。區域視為資料中心,而可用性區域視為機架。僅使用私人 IP,因此這無法跨多個區域運作。
Ec2MultiRegionSnitch:使用公用 IP 作為 broadcast_address 以允許跨區域連線。(因此,您也應該將種子地址設定為公用 IP。)您需要在公用 IP 防火牆上開啟 storage_port 或 ssl_storage_port。(對於區域內流量,Cassandra 會在建立連線後切換到私人 IP。)
GoogleCloudSnitch:從 Google 雲端 Metadata 服務取得節點的資料中心和機架的 snitch。此 snitch 假設 GCE 區域是資料中心,而 GCE 可用性區域是機架。
RackInferringSnitch:鄰近性由機架和資料中心決定,假設分別對應於每個節點 IP 地址的第 3 和第 2 個八位元組。除非這剛好符合您的部署慣例,否則最適合用作撰寫自訂 Snitch 類別的範例,並以此精神提供。
您可以透過將此設定為 snitch 的完整類別名稱來使用自訂 Snitch,假設它在您的類別路徑中。
預設值: SimpleSnitch
dynamic_snitch_badness_threshold
如果設定大於 0,這將允許將複本「固定」到主機以增加快取容量。不良閾值將控制固定主機必須比動態 snitch 在它上面優先考慮其他複本差多少。這表示為一個代表百分比的雙精度浮點數。因此,值 0.2 表示 Cassandra 會繼續優先考慮靜態 snitch 值,直到固定主機比最快的慢 20%。
預設值 1.0
crypto_provider
設定 Java 加密提供者。預設情況下,它將使用 DefaultCryptoProvider,它將安裝 Amazon Correto Crypto Provider。
Amazon Correto Crypto Provider 目前適用於 x86_64 和 aarch_64 平台。如果此提供者發生故障,它會退回到 JRE 中的預設加密提供者。
若要在提供者未正確安裝時強制發生故障,請將屬性「fail_on_missing_provider」設為「true」。
若要略過安裝加密提供者,請使用類別「org.apache.cassandra.security.JREProvider」
server_encryption_options
設定伺服器到伺服器的節點間加密
可以使用自訂加密選項取代 JVM 和 netty 預設的受支援 SSL socket 協定和加密套件。除非您有規定特定設定的政策,或需要在無法更新 JVM 的情況下停用容易受到攻擊的加密或協定,否則不建議這麼做。
可以在 JVM 層級設定符合 FIPS 的設定,不應在此變更加密設定:docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
注意此預設設定是不安全的設定。如果您需要啟用伺服器到伺服器的加密,請依據下列方式產生伺服器金鑰庫(和用於相互驗證的信任庫):download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore然後執行下列設定變更
步驟 1:設定 internode_encryption=<dc|rack|all>,並明確設定 optional=true。重新啟動所有節點
步驟 2:設定 optional=false(或移除它),如果您產生了信任庫且想要使用相互驗證,請設定 require_client_auth=true。重新啟動所有節點
預設值(複雜選項):
# On outbound connections, determine which type of peers to securely connect to. # The available options are : # none : Do not encrypt outgoing connections # dc : Encrypt connections to peers in other datacenters but not within datacenters # rack : Encrypt connections to peers in other racks but not within racks # all : Always use encrypted connections internode_encryption: none # When set to true, encrypted and unencrypted connections are allowed on the storage_port # This should _only be true_ while in unencrypted or transitional operation # optional defaults to true if internode_encryption is none # optional: true # If enabled, will open up an encrypted listening socket on ssl_storage_port. Should only be used # during upgrade to 4.0; otherwise, set to false. legacy_ssl_storage_port_enabled: false # Set to a valid keystore if internode_encryption is dc, rack or all keystore: conf/.keystore #keystore_password: cassandra # Configure the way Cassandra creates SSL contexts. # To use PEM-based key material, see org.apache.cassandra.security.PEMBasedSslContextFactory # ssl_context_factory: # # Must be an instance of org.apache.cassandra.security.ISslContextFactory # class_name: org.apache.cassandra.security.DefaultSslContextFactory # During internode mTLS authentication, inbound connections (acting as servers) use keystore, keystore_password # containing server certificate to create SSLContext and # outbound connections (acting as clients) use outbound_keystore & outbound_keystore_password with client certificates # to create SSLContext. By default, outbound_keystore is the same as keystore indicating mTLS is not enabled. # outbound_keystore: conf/.keystore # outbound_keystore_password: cassandra # Verify peer server certificates require_client_auth: false # Set to a valid trustore if require_client_auth is true truststore: conf/.truststore #truststore_password: cassandra # Verify that the host name in the certificate matches the connected host require_endpoint_verification: false # More advanced defaults: # protocol: TLS # store_type: JKS # cipher_suites: [ # TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, # TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, # TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, # TLS_RSA_WITH_AES_256_CBC_SHA # ]
client_encryption_options
設定用戶端到伺服器的加密。
注意此預設設定是不安全的設定。如果您需要啟用用戶端到伺服器的加密,請依據下列方式產生伺服器金鑰庫(和用於相互驗證的信任庫):download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore然後執行下列設定變更
步驟 1:設定 enabled=true,並明確設定 optional=true。重新啟動所有節點
步驟 2:設定 optional=false(或移除它),如果您產生了信任庫且想要使用相互驗證,請設定 require_client_auth=true。重新啟動所有節點
預設值(複雜選項):
# Enable client-to-server encryption enabled: false # When set to true, encrypted and unencrypted connections are allowed on the native_transport_port # This should _only be true_ while in unencrypted or transitional operation # optional defaults to true when enabled is false, and false when enabled is true. # optional: true # Set keystore and keystore_password to valid keystores if enabled is true keystore: conf/.keystore #keystore_password: cassandra # Configure the way Cassandra creates SSL contexts. # To use PEM-based key material, see org.apache.cassandra.security.PEMBasedSslContextFactory # ssl_context_factory: # # Must be an instance of org.apache.cassandra.security.ISslContextFactory # class_name: org.apache.cassandra.security.DefaultSslContextFactory # Verify client certificates require_client_auth: false # require_endpoint_verification: false # Set trustore and truststore_password if require_client_auth is true # truststore: conf/.truststore # truststore_password: cassandra # More advanced defaults: # protocol: TLS # store_type: JKS # cipher_suites: [ # TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, # TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, # TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, # TLS_RSA_WITH_AES_256_CBC_SHA # ]
internode_compression
internode_compression 控制節點之間的流量是否進行壓縮。可以是
所有流量都已壓縮
不同資料中心之間的 DC 流量已壓縮
無,沒有任何內容已壓縮。
預設值: dc
inter_dc_tcp_nodelay
啟用或停用 DC 間通訊的 tcp_nodelay。停用會導致傳送較大(但較少)的網路封包,減少 TCP 協定本身的負擔,但如果封鎖跨資料中心回應,則會增加延遲。
預設值: false
user_defined_functions_enabled
如果未設定,所有大於 gc_log_threshold 的 GC 暫停都將記錄在 INFO 層級。預設停用 UDF(使用者定義函式)。從 Cassandra 3.0 開始,已內建沙盒以防止執行惡意程式碼。
預設值: false
transparent_data_encryption_options
啟用靜態資料加密(在磁碟上)。可以插入不同的金鑰提供者,但預設會從 JCE 式樣金鑰儲存庫讀取。單一金鑰儲存庫可以儲存多個金鑰,但「key_alias」參照的金鑰是唯一會用於加密操作的金鑰;先前使用的金鑰仍然可以(而且應該!)放在金鑰儲存庫中,並會用於解密操作(以處理金鑰輪替的情況)。
強烈建議為您的 JDK 版本下載並安裝 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。(目前連結:www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
目前,僅支援下列檔案類型進行透明資料加密,不過在未來的 Cassandra 版本中會支援更多類型:commitlog、hints
預設值(複雜選項):
enabled: false chunk_length_kb: 64 cipher: AES/CBC/PKCS5Padding key_alias: testing:1 # CBC IV length for AES needs to be 16 bytes (which is also the default size) # iv_length: 16 key_provider: - class_name: org.apache.cassandra.security.JKSKeyProvider parameters: - keystore: conf/.keystore keystore_password: cassandra store_type: JCEKS key_password: cassandra
tombstone_warn_threshold
安全性臨界值 #
在執行掃描時,在分割區內或跨分割區時,我們需要將在記憶體中看到的墓碑保留下來,以便將它們傳回給協調器,協調器會使用它們來確保其他複本也知道已刪除的列。對於產生大量墓碑的工作負載,這可能會導致效能問題,甚至耗盡伺服器堆積。(www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)如果您了解風險並仍想掃描更多墓碑,請在此調整臨界值。這些臨界值也可以使用 StorageService mbean 在執行階段進行調整。
預設值 1000
replica_filtering_protection
在讀取一致性層級高於 ONE/LOCAL_ONE 的過濾和次要索引查詢中,會使用稱為複本過濾保護的機制,以確保來自過期複本的結果不會違反一致性。(有關更多詳細資訊,請參閱 CASSANDRA-8272 和 CASSANDRA-15907。)此機制會在協調器上根據分區將複本結果實體化在堆上。複本傳回的過期結果越多,在查詢期間實體化的列越多。
batch_size_warn_threshold
對於任何超過此值的批次分區,記錄 WARN。預設為每個批次 5KiB。應謹慎增加此閾值的規模,因為它可能導致節點不穩定。最小單位:KiB
預設值: 5KiB
gc_warn_threshold
此選項預設為註解。
大於 gc_warn_threshold 的 GC 暫停將記錄在 WARN 層級。根據您的應用程式吞吐量需求調整閾值。設定為 0 將停用此功能。最小單位:毫秒
預設值: 1000 毫秒
max_value_size
此選項預設為註解。
SSTables 中任何值的最高大小。安全措施,用於及早偵測 SSTable 損毀。任何大於此閾值的值大小都將導致 SSTable 被標記為損毀。此值應為正值且小於 2GiB。最小單位:MiB
預設值: 256MiB
default_keyspace_rf
此選項預設為註解。
-
對鍵集空間建立的影響 ** 如果在建立鍵集空間時未提及複製因子,則會套用 default_keyspace_rf。變更此設定只會對變更後建立的鍵集空間生效,但不會影響變更前建立的現有鍵集空間。
-
對鍵集空間變更的影響 ** 當從 NetworkTopologyStrategy 變更鍵集空間為 SimpleStrategy 時,如果未明確提及 rf,則會套用 default_keyspace_rf。
-
對系統鍵空間的影響**這也適用於需要複製因子的任何系統鍵空間。關於系統鍵空間的進一步說明 - system_traces 和 system_distributed 鍵空間採用 RF 2 或預設值(以較高者為準),而 system_auth 鍵空間採用 RF 1 或預設值(以較高者為準)。建議在生產中使用的值:3
預設值 1
ideal_consistency_level
此選項預設為註解。
追蹤每個鍵空間的指標,指出複製是否在寫入時達到理想的一致性層級,且未逾時。這與每個寫入要求的一致性層級不同,後者可能較低以利於可用性。
預設值: EACH_QUORUM
automatic_sstable_upgrade
此選項預設為註解。
在升級後自動升級 sstable - 如果沒有要進行的普通壓縮,最舊的未升級 sstable 將升級到最新版本
預設值: false
audit_logging_options
稽核記錄 - 記錄每個傳入的 CQL 命令要求,以及對節點的驗證。請參閱 audit_logging 文件,以取得有關各種設定選項和生產提示的完整詳細資料。
diagnostic_events_enabled
診斷事件 # 如果啟用,診斷事件有助於對操作問題進行故障排除。發出的事件包含有關事件之間的內部狀態和時間關係的詳細資料,客戶端可透過 JMX 存取。
預設值: false
native_transport_flush_in_batches_legacy
此選項預設為註解。
使用原生傳輸 TCP 訊息合併。如果您在升級到 4.0 時發現您的處理量下降,特別是您執行的是舊版核心或客戶端連線非常少,那麼這個選項可能值得評估。
預設值: false
repaired_data_tracking_for_range_reads_enabled
在讀取和複本之間的比較期間啟用對資料修復狀態的追蹤,複本的修復集合之間的不匹配可以特徵化為已確認或未確認。在此背景下,未確認表示有待處理的修復工作階段、未修復的分割墓碑或其他情況,這表示差異無法被視為決定性的。已確認的不匹配應觸發調查,因為它們可能表示損毀或資料遺失。範圍讀取與分割讀取有不同的旗標,因為單一分割讀取僅在 CL > 1 且發生摘要不匹配時才會被追蹤。目前,範圍查詢不使用摘要,因此如果啟用範圍讀取,所有範圍讀取都將包含修復資料追蹤。由於這會增加一些負擔,因此操作員可能希望停用它,同時仍對分割讀取啟用它
預設值: false
report_unconfirmed_repaired_data_mismatches
如果為 false,只會回報已確認的不符。如果為 true,也會記錄未確認的不符的獨立指標。這是為了避免潛在的訊號:雜訊問題,因為未確認的不符比已確認的不符更難以採取行動。
預設值: false
auth_cache_warming_enabled
此選項預設為註解。
認證解析的延遲可能會導致重新連線時出現雷霆萬鈞的問題;這個選項會在節點完成啟動前啟用認證快取的預熱。請參閱 CASSANDRA-16958
預設值: false
dynamic_data_masking_enabled
此選項預設為註解。
如果啟用,動態資料遮罩允許將 CQL 遮罩函數附加到資料表的欄位。沒有 UNMASK 權限的使用者會看到附加遮罩的欄位值的模糊版本。如果停用動態資料遮罩,將不允許建立新的欄位遮罩,但仍然可以刪除任何先前存在的遮罩。此外,任何現有的遮罩在查詢時都會被忽略,因此所有使用者都會看到遮罩欄位的明確值。預設為 false 以停用動態資料遮罩。
預設值: false
drop_compact_storage_enabled
在此節點上啟用使用「ALTER … DROP COMPACT STORAGE」陳述式。'ALTER … DROP COMPACT STORAGE' 被視為實驗性功能,不建議用於生產環境。
預設值: false
client_error_reporting_exclusions
此選項預設為註解。
當用戶端觸發通訊協定例外或未知問題(Cassandra 錯誤)時,我們會增加一個用戶端指標來顯示此問題;此邏輯會排除特定子網路更新這些指標
read_thresholds_enabled
此選項在預設情況下已註解。子網路:- 127.0.0.1 - 127.0.0.0/31
針對所有複本啟用讀取閾值(警告/失敗),以回報給用戶端。請參閱:CASSANDRA-16850
預設值: false # 排程在 4.2 中設為 true
coordinator_read_size_warn_threshold
此選項在預設情況下已註解。當 read_thresholds_enabled:true 時,此選項會追蹤協調器上查詢的具體大小。如果定義了 coordinator_read_size_warn_threshold,此選項會向用戶端發出警告,並提供觸發此警告的查詢詳細資料以及結果集的大小;如果定義了 coordinator_read_size_fail_threshold,此選項會在超過此閾值後使查詢失敗,並向使用者回傳讀取錯誤。
local_read_size_warn_threshold
此選項在預設情況下已註解。當 read_thresholds_enabled:true 時,此選項會追蹤本地讀取的大小(由堆積大小定義),並根據這些閾值發出警告/失敗;未定義會停用這些檢查。
row_index_read_size_warn_threshold
此選項在預設情況下已註解。當 read_thresholds_enabled:true 時,此選項會追蹤 RowIndexEntry 的預期記憶體大小,並根據這些閾值發出警告/失敗;未定義會停用這些檢查
columns_per_table_warn_threshold
此選項預設為註解。
建立或變更表格時,每個表格的欄位數超過臨界值時,護欄會發出警告或失敗。兩個臨界值預設為 -1 以停用。
預設值 -1
secondary_indexes_per_table_warn_threshold
此選項預設為註解。
建立的每個表格的次要索引超過臨界值時,護欄會發出警告或失敗。兩個臨界值預設為 -1 以停用。
預設值 -1
materialized_views_per_table_warn_threshold
此選項預設為註解。
建立的每個表格的實體化檢視超過臨界值時,護欄會發出警告或失敗。兩個臨界值預設為 -1 以停用。
預設值 -1
maximum_timestamp_warn_threshold
此選項預設為註解。
護欄用於在特定範圍內限制使用者提供的時間戳記。預設為無限(以 null 表示)。可接受的值為 12h、24h 等形式的持續時間。
read_before_write_list_operations_enabled
此選項預設為註解。
護欄允許/不允許需要在寫入前讀取的清單操作,例如透過索引設定清單元素,以及透過索引或值移除清單元素。預設為 true。
預設值: true
partition_keys_in_select_warn_threshold
此選項預設為註解。
當使用 IN 限制查詢選擇的分割鍵多於閾值時,護欄會警告或失敗。兩個閾值預設為 -1 以停用。
預設值 -1
in_select_cartesian_product_warn_threshold
此選項預設為註解。
當 IN 查詢建立笛卡兒積,其大小超過閾值時,護欄會警告或失敗,例如「a in (1,2,…10) and b in (1,2…10)」會產生 100 的笛卡兒積。兩個閾值預設為 -1 以停用。
預設值 -1
partition_size_warn_threshold
此選項預設為註解。
當寫入大於閾值的分割區時,防護欄會發出警告或失敗,表示為 100MiB、1GiB 等。僅在寫入 SSTable(快取和壓縮)時才會檢查防護欄,且在該時刻超過失敗閾值只會記錄錯誤訊息,而不會中斷作業。這是針對每個 SSTable 進行作業,因此如果大型分割區散布在多個 SSTable 中,它不會偵測到。警告閾值取代已棄用的組態屬性 compaction_large_partition_warning_threshold。兩個閾值預設為 null 以停用。
partition_tombstones_warn_threshold
此選項預設為註解。
當寫入墓碑多於閾值的分割區時,防護欄會發出警告或失敗。僅在寫入 SSTable(快取和壓縮)時才會檢查防護欄,且在該時刻超過失敗閾值只會記錄錯誤訊息,而不會中斷作業。這是針對每個 SSTable 進行作業,因此如果大型分割區散布在多個 SSTable 中,它不會偵測到。警告閾值取代已棄用的組態屬性 compaction_tombstone_warning_threshold。兩個閾值預設為 -1 以停用。
預設值 -1
column_value_size_warn_threshold
此選項預設為註解。
當寫入大於閾值的欄位值時,防護欄會發出警告或失敗。此防護欄僅套用於一般欄位的數值,因為序列化的分割區金鑰和叢集金鑰組成部分的數值已經有固定的、相對較小的 65535 位元組大小限制,這可能小於這裡定義的閾值。刪除未凍結集合和映射的個別元素涉及建立包含已刪除元素數值的墓碑,而與元素是否存在無關。此墓碑數值也受到此防護欄保護,以防止插入超過閾值的墓碑。缺點是啟用或提高此閾值可能會阻止使用者刪除在防護欄停用或使用較低數值時寫入的集合/映射元素。始終允許刪除整個欄位、列或分割區,因為為這些作業建立的墓碑不包含 CQL 欄位數值。此防護欄與 max_value_size 不同。max_value_size 在解序列化任何數值時檢查以偵測 SSTable 損毀,而此防護欄在寫入時於 CQL 層檢查,以拒絕插入過大欄位的常規使用者查詢。兩個閾值預設為 null 以停用。最小單位:B
collection_size_warn_threshold
此選項預設為註解。
防護措施,當遇到比閾值更大的集合資料大小時,會發出警告或失敗。在查詢時間,此防護措施僅套用於正在寫入的集合片段,即使在非凍結集合的情況下,在 SSTable 上可能會有集合的未計入部分。這樣做是為了防止寫入前讀取。防護措施也會在 SSTable 寫入時間檢查,以偵測大型非凍結集合,不過在這種情況下,超過失敗閾值只會記錄錯誤訊息,而不會中斷作業。兩個閾值預設為 null,以停用。最小單位:B
items_per_collection_warn_threshold
此選項預設為註解。
防護措施,當在集合中遇到比閾值更多的元素時,會發出警告或失敗。在查詢時間,此防護措施僅套用於正在寫入的集合片段,即使在非凍結集合的情況下,在 SSTable 上可能會有集合的未計入部分。這樣做是為了防止寫入前讀取。防護措施也會在 SSTable 寫入時間檢查,以偵測大型非凍結集合,不過在這種情況下,超過失敗閾值只會記錄錯誤訊息,而不會中斷作業。兩個閾值預設為 -1,以停用。
預設值 -1
allow_filtering_enabled
此選項預設為註解。
防護措施,允許/不允許使用 ALLOW FILTERING 進行查詢。預設為 true。ALLOW FILTERING 可能會拜訪表格中的所有資料,且效能無法預測。
預設值: true
data_disk_usage_percentage_warn_threshold
此選項預設為註解。
當本機資料磁碟使用率百分比超過閾值時,發出警告或失敗的防護欄。有效值為 [1, 100]。這僅用於儲存資料目錄的磁碟,因此不會計算任何用於儲存提交記錄、提示或已儲存快取的獨立磁碟。磁碟使用率是資料目錄所使用的空間量與該空間量加上磁碟上剩餘可用空間的比率。此防護欄的主要目的是在磁碟超過定義的使用率百分比時拒絕使用者寫入,因此背景程序(例如壓縮和串流)所執行的寫入不會因為磁碟已滿而失敗。應根據這些背景程序預期的資料成長來定義限制,例如壓縮策略將資料大小加倍,則需要將磁碟使用率保持在 50% 以下。兩個閾值預設為 -1 以停用。
預設值 -1
data_disk_usage_max_disk_size
此選項預設為註解。
防護欄,允許使用者在計算 disk_usage_percentage_warn_threshold 和 disk_usage_percentage_fail_threshold 的閾值時定義資料目錄的最大磁碟大小,因此如果此值大於零,它們會變成磁碟上固定大小的百分比,而不是物理可用磁碟大小的百分比。當我們有大型磁碟,而我們只想將其一部分用於 Cassandra 的資料目錄時,這會很有用。有效值為 [1,所有資料目錄的最大可用磁碟大小]。預設為 null 以停用,並在計算期間使用資料目錄的物理可用磁碟大小。最小單位:B
minimum_replication_factor_warn_threshold
此選項預設為註解。
當最小複製因子小於閾值時,護欄會發出警告或失敗。這也適用於系統鍵空間。建議在生產環境中使用的值:2 或更高
預設值 -1
zero_ttl_on_twcs_enabled
此選項預設為註解。
當 default_time_to_live 設為 0 且表格使用 TimeWindowCompactionStrategy 壓縮或其子類別時,護欄會啟用 CREATE 或 ALTER TABLE 陳述式。使用 default_time_to_live 設為 0 搭配此壓縮策略是可疑的。請記住,資料在超過一定大小的特定壓縮視窗單元後,並不會自動過期。如果您預期資料會過期,請為您的 INSERT 或 UPDATE 陳述式設定 TTL,因為表格設定不會執行此動作。預設為 true。如果設為 false,此類陳述式會失敗,而 zero_ttl_on_twcs_warned 旗標無關緊要。
預設值: true
zero_ttl_on_twcs_warned
此選項預設為註解。當 default_time_to_live 設為 0 且表格使用 TimeWindowCompactionStrategy 壓縮或其子類別時,護欄會在執行 CREATE 或 ALTER TABLE 陳述式時警告使用者。預設為 true。如果 zero_ttl_on_twcs_enabled 設為 false,此屬性無關緊要,因為此類陳述式會失敗。
預設值: true
sai_sstable_indexes_per_query_warn_threshold
此選項預設為註解。執行 SELECT 查詢時,複製項上引用的 SAI 索引最大數量,在發出警告之前(預設為 32)
預設值 32
sai_sstable_indexes_per_query_fail_threshold
此選項預設為註解。執行 SELECT 查詢時,複製品上引用的 SAI 索引的最大數量,在發出失敗之前(預設為 -1 以停用)
預設值 -1
default_secondary_index
此選項預設為註解。
當 CREATE INDEX 未透過 USING 指定預設次要索引實作時,預設次要索引實作。例如:「legacy_local_table」-(預設)傳統次要索引,實作為隱藏表格例如:「sai」-「儲存附加」索引,透過最佳化的 SSTable/Memtable 附加索引實作
預設值: legacy_local_table
default_secondary_index_enabled
此選項預設為註解。
是否允許預設次要索引實作。如果這是「false」,CREATE INDEX 必須透過 USING 指定索引實作。
預設值: true
startup_checks
此選項預設為註解。
啟動檢查會在 Cassandra 啟動程序中執行,並非所有檢查都可設定(因此您可以停用它們),但下列列舉的檢查是可以設定的。取消啟動檢查的註解,並適當地設定它們以符合您的需求。
storage_compatibility_mode
在啟動時驗證磁碟上附加位置的正確擁有權。有關更多詳細資訊,請參閱 CASSANDRA-16879。check_filesystem_ownership: enabled: false ownership_token: "sometoken" #(由「CassandraOwnershipToken」系統屬性覆寫)ownership_filename: ".cassandra_fs_ownership" #(由「cassandra.fs_ownership_filename」覆寫)如果 snitch 的資料中心與前一個資料中心不同,則防止節點啟動。check_dc: enabled: true #(由 cassandra.ignore_dc 系統屬性覆寫)如果 snitch 的機架與前一個機架不同,則防止節點啟動。check_rack: enabled: true #(由 cassandra.ignore_rack 系統屬性覆寫)如果節點停機時間超過 gc_grace_seconds,則啟用此屬性以失敗啟動,以潛在防止在具有刪除的表格上復活資料。預設情況下,這將針對所有鍵集和表格執行,但排除在 excluded_keyspaces 和 excluded_tables 中指定的鍵集和表格。check_data_resurrection: enabled: false Cassandra 定期寫入它已知執行心跳時間的檔案heartbeat_file: /var/lib/cassandra/data/cassandra-heartbeat excluded_keyspaces: # 要從檢查中排除的鍵集清單(以逗號分隔)excluded_tables: # 要從檢查中排除的鍵集.表格配對清單(以逗號分隔)
此屬性表示儲存格式將與哪個 Cassandra 主要版本相容。
所選擇的儲存相容性模式將決定已寫入 SSTable、提交記錄、提示等項目的版本。例如,如果我們要與 Cassandra 4.x 保持相容性,則此屬性的值應該是 4,這將使我們在 BIG 格式的最新 N 版本中使用 SSTable。
這也會決定某些依賴於較新格式的功能是否可用。例如,延伸的 TTL(最高 2106)依賴於 Cassandra 5.0 引進的 sstable、提交記錄、提示和訊息版本,因此如果將此屬性設定為 CASSANDRA_4,此功能將不可用。有關更多詳細資訊,請參閱升級指南。
可能的數值為:- CASSANDRA_4:在功能、格式和元件版本方面與 4.x 系列相容。- UPGRADING:叢集會在這個過渡階段監控每個節點的版本。這會產生成本,但可確保所有新功能、格式、版本等都能安全啟用。- NONE:從啟用所有新功能和格式開始。
典型的升級方式為:- 執行滾動升級,讓所有節點從 CASSANDRA_X 相容模式開始。- 一旦新的二進制檔案呈現穩定,請使用 UPGRADING 模式執行滾動重新啟動。叢集會停用新功能,直到所有節點都以 UPGRADING 模式啟動;發生這種情況時,受儲存相容模式控制的新功能會啟用。- 執行滾動重新啟動,讓所有節點從 NONE 模式開始。這可消除檢查節點版本的成本,並確保穩定性。如果 Cassandra 在前一個版本中意外啟動,具有已停用相容模式的節點將不再切換行為,就像在 UPGRADING 模式中執行時一樣。
預設值: CASSANDRA_4