Upgrade SSTables
DataStax Mission Control is currently in Public Preview. DataStax Mission Control is not intended for production use, has not been certified for production workloads, and might contain bugs and other functional issues. There is no guarantee that DataStax Mission Control will ever become generally available. DataStax Mission Control is provided on an “AS IS” basis, without warranty or indemnity of any kind. If you are interested in trying out DataStax Mission Control please join the Public Preview. |
Run this operation when the server version is upgraded or when changing compression options. If the SSTables are already on the current version, the command returns immediately and no action is taken.
To run the nodetool upgradesstables
operation, modify and submit the upgradesstables
CassandraTask
manifest (object).
Performance impact
While this task is running additional disk pressure occurs as all SSTables are rewritten to the correct format (if required). Upon completion of the SSTable format upgrade the read performance is improved.
Prerequisites
-
The
kubectl
CLI tool. -
Kubeconfig file
orcontext
pointing to aControl Plane
Kubernetes cluster.
Example
A single datacenter deployed in the Data Plane
Kubernetes cluster.
Workflow of user and operators
-
User defines a
upgradesstables
CassandraTask
. -
User submits an
upgradesstables
CassandraTask
withkubectl
to theData Plane
Kubernetes cluster where the datacenter is deployed. -
DC-operator detects new task custom resource definition (CRD).
-
DC-operator iterates one rack at a time.
-
DC-operator triggers and monitors replacement operations one pod at a time.
-
DC-operator reports task progress and status.
-
User requests a status report of the
replace-node
CassandraTask
with thekubectl
command, and views the status response.
Procedure
-
Modify the
demo-dse.cassandratask.yaml
file to define anupgradesstables
CassandraTask
.Here is a sample:
apiVersion: control.k8ssandra.io/v1alpha1 kind: CassandraTask metadata: name: upgradesstables-dc1 spec: datacenter: name: dc1 namespace: demo jobs: - name: upgradesstables-dc1 command: upgradesstables args: keyspace_name: my_keyspace
Key options:
-
metadata.name
: a unique identifer within the Kubernetes namespace where the task is submitted. While the name can be any value, consider including the cluster name to prevent collision with other options. -
spec.datacenter
: a uniquenamespace
andname
combination used to determine which datacenter to target with this operation -
spec.jobs[0].command
: MUST be`upgradesstables
for this operation -
Optional:
spec.jobs[0].args.keyspace_name
: restricts this operation to a particular keyspace. Omitting this value results in ALL keyspaces being updated. By default all keyspaces are rebuilt.
-
-
Submit the
upgradesstables
CassandraTask
custom resource definition to theControl Plane
Kubernetes cluster with this command:kubectl apply -f demo-dse.casssandratask.yaml -n mission-control
Use the
-n
flag to indicate the Kubernetes namespace, which MUST bemission-control
.Submit the
rebuild
CassandraTask
object to the Kubernetes cluster where the specified datacenter is deployed.Sample output:
... status: completionTime: "2022-10-20T18:07:08Z" conditions: - lastTransitionTime: "2022-10-20T18:06:57Z" status: "True" type: Running - lastTransitionTime: "2022-10-20T18:07:08Z" status: "True" type: Complete startTime: "2022-10-20T18:06:57Z" succeeded: 3
DC-level operators set the
startTime
field prior to starting theupgradesstables
operation. They update thecompletionTime
field when theupgradesstables
operation is completed.The sample output indicates that the task is completed with the
type: Complete
status condition set toTrue
. Thesucceeded: 3
field indicates that three (3) nodes (or pods) completed the requested task successfully. Afailed
field tracks a running count of pods that failed theupgradesstables
operation. -
Monitor the SSTables upgrade progress with this command:
kubectl get cassandratask upgradesstables-dc1 | yq .status