Upgrades for DataStax Enterprise 5.1.x patch releases

Review this information on upgrading DataStax Enterprise (DSE) between patch (point) releases.

Read and understand these instructions before upgrading. Carefully reviewing the planning and upgrade instructions can prevent errors and data loss.

In addition, review the DSE 5.1 release notes for all changes before upgrading.

Back up Your Existing Installation

DataStax recommends backing up your data prior to any version upgrade.

A backup provides the ability to revert and restore all the data used in the previous version if necessary. For manual backup instructions, see Backing up a tarball installation or Backing up a package installation.

OpsCenter provides a Backup Service that manages enterprise-wide backup and restore operations for DataStax Enterprise clusters and is highly recommended over any manual backup procedure. Ensure you use a compatible version of OpsCenter for your DSE version.

Always Upgrade to the Latest Version

DataStax recommends that you upgrade to the latest available patch release unless you have specific requirements to do otherwise.

To find your current version:

bin/dse -v
current_dse_version

Upgrade SSTables

Be certain to upgrade SSTables on your nodes both before and after upgrading. Failure to upgrade SSTables will result in severe performance penalties and possible data loss.

Version-Specific Notes

DSE Search changes: As of DSE 5.1.17, unbounded facet searches are no longer allowed using facet.limit=-1. The maximum facet limit value is 20,000 as set by solr.max.facet.limit.size. While the facet limit size can be overriden using -Dsolr.max.facet.limit.size in the jvm.options file, it is not recommended.

Upgrade Restrictions and Limitations

General Restrictions

  • Do not enable new features.

  • Do not run nodetool repair.

  • During the upgrade, do not bootstrap new nodes or decommission existing nodes.

  • Do not issue TRUNCATE or DDL related queries during the upgrade process.

  • Do not alter schemas for any workloads.

  • Complete the cluster-wide upgrade before the expiration of gc_grace_seconds (default 10 days) to ensure any repairs complete successfully.

  • Do not reindex DSE Search nodes.

  • If the DSE Performance Service was disabled before the upgrade, do not enable it during the upgrade. See DSE Performance Service: 5.1 | OpsCenter 6.8.

Nodes on different versions might show a schema disagreement during an upgrade.

Restrictions for Nodes Using Security

  • Do not change security credentials or permissions until the upgrade is complete on all nodes.

  • If you are not already using Kerberos, do not set up Kerberos authentication before upgrading. First upgrade the cluster, and then set up Kerberos.

DSE Analytics: DSEFS authorization is enabled only if DSE authorization is enabled.

Clusters with DSE authentication enabled and DSE authorization disabled will not have DSEFS authorization after upgrading to 5.1.6 and later. In versions prior to DSE 5.1.6 DSEFS, authorization was enabled when DSE authentication was enabled, and enabling or disabling DSE authorization had no effect on DSEFS.

Advanced Preparation for Upgrading DSE Search Nodes

  • Tune the schema before you upgrade. For DSE 5.1.4 and later, all field definitions in the schema are validated and must be DSE Search compatible, even if the fields are not indexed, have docValues applied, or used for copy-field source.

  • The default behavior of automatic resource generation includes all columns. To improve performance, take action to prevent the fields from being loaded from the database to the indexing path. In the schema, remove or comment out unused fields.

  • All unique key elements must be indexed in the Solr schema. To verify unique key elements, review schema.xml to ensure that all unique key fields must have indexed=true.

  • If you changed the schema, do a full reindex:

    dsetool reload_core keyspace_name.table_name schema=filepath solrconfig=filepath reindex=true deleteAll=true distributed=false

DataStax Enterprise and Apache Cassandra® Configuration Files

DataStax Enterprise (DSE) configuration files
Configuration file Installer-Services and package installations Installer-No Services and tarball installations

dse

/etc/default/dse (systemd) or /etc/init.d/ (SystemV)

N/A Node type is set via command line flags.

dse-env.sh

/etc/dse/dse-env.sh

<installation_location>/bin/dse-env.sh

byoh-env.sh

/etc/dse/byoh-env.sh

<installation_location>/bin/byoh-env.sh

dse.yaml

/etc/dse/dse.yaml

<installation_location>/resources/dse/conf/dse.yaml

logback.xml

/etc/dse/cassandra/logback.xml

<installation_location>/resources/logback.xml

spark-env.sh

/etc/dse/spark/spark-env.sh

<installation_location>/resources/spark/conf/spark-env.sh

spark-defaults.conf

/etc/dse/spark/spark-defaults.conf

<installation_location>/resources/spark/conf/spark-defaults.conf

Cassandra configuration files

Configuration file

Installer-Services and package installations

Installer-No Services and tarball installations

cassandra.yaml

/etc/dse/cassandra/cassandra.yaml

<installation_location>/conf/cassandra.yaml

cassandra.in.sh

/usr/share/cassandra/cassandra.in.sh

<installation_location>/bin/cassandra.in.sh

cassandra-env.sh

/etc/dse/cassandra/cassandra-env.sh

<installation_location>/conf/cassandra-env.sh

cassandra-rackdc.properties

/etc/dse/cassandra/cassandra-rackdc.properties

<installation_location>/conf/cassandra-rackdc.properties

cassandra-topology.properties

/etc/dse/cassandra/cassandra-topology.properties

<installation_location>/conf/cassandra-topology.properties

jmxremote.password

/etc/cassandra/jmxremote.password

<installation_location>/conf/jmxremote.password

Tomcat server configuration file
Configuration file Installer-Services and package installations Installer-No Services and tarball installations

server.xml

/etc/dse/resources/tomcat/conf/server.xml

<installation_location>/resources/tomcat/conf/server.xml

Preparing to Upgrade

Follow these steps to prepare each node for the upgrade:

  1. Familiarize yourself with the changes and features in the new release:

    • DataStax Enterprise 5.1 release notes.

    • General upgrading advice for any version. Be sure to read NEWS.txt all the way back to your current version.

    • DataStax Enterprise changes in CHANGES.txt.

    • DataStax driver changes.

      DataStax drivers come in two types:

      • DataStax drivers for DataStax Enterprise (DSE) — for use by DSE 4.8 and later

      • DataStax drivers for Apache Cassandra — for use by Apache Cassandra and DSE 4.7 and earlier

        While the DataStax drivers for Apache Cassandra drivers can connect to DSE 5.0 and later clusters, DataStax strongly recommends upgrading to the DSE drivers. The DSE drivers provide functionality for all DataStax Enterprise (DSE) features.

  2. Stop the OpsCenter Repair Service if enabled:

  3. Before upgrading, be sure that each node has adequate free disk space.

    Determine current DSE data disk space usage:

    sudo du -sh /var/lib/cassandra/data/
    3.9G	/var/lib/cassandra/data/

    Determine available disk space:

    sudo df -hT /
    Filesystem     Type  Size  Used Avail Use% Mounted on
    /dev/sda1      ext4   59G   16G   41G  28% /

    The required space depends on the compaction strategy. See Disk space.

  4. Run nodetool repair to ensure that data on each replica is consistent with data on other nodes:

    nodetool repair -pr
  5. DSE Search nodes: Ensure that the catalina.properties and context.xml files are present in the Tomcat conf dir. DSE will not start after upgrade if these files are missing. The default location of the Tomcat conf directory depends on the type of installation:

    • Package installations: /etc/dse/tomcat/conf

    • Tarball installations: <installation_location>/resources/tomcat/conf

  6. Back up any customized configuration files since they may be overwritten with default values during installation of the new version.

    If you backed up your installation using instructions in Backing up a tarball installation or Backing up a package installation, your original configuration files are included in the archive.

  7. Upgrade the SSTables on each node to ensure that all SSTables are on the current version:

    nodetool upgradesstables

    Failure to upgrade SSTables when required results in a significant performance impact and increased disk usage.

    Use the --jobs option to set the number of SSTables that upgrade simultaneously. The default setting is 2, which minimizes impact on the cluster. Set to 0 to use all available compaction threads. DataStax recommends running the upgradesstables command on one node at a time or, when using racks, one rack at a time.

    If the SSTables are already on the current version, the command returns immediately and no action is taken.

  8. Upgrades from DSE 5.1.0 and 5.1.1 to DSE 5.1.2 and later DSE 5.1.x releases

    Restart the node with this start-up parameter:

    -Dcassandra.force_3_0_protocol_version=true

    For example:

    installation_location/bin/dse cassandra -Dcassandra.force_3_0_protocol_version=true

    While mixed versions exist during the upgrade, do not add or remove columns from existing tables.

    After the restart is complete, remove the flag.

Upgrade Steps

Follow these steps on each node in the recommended order.

Upgrade nodes in this order:

  1. In multiple datacenter clusters, upgrade every node in one datacenter before upgrading another datacenter.

  2. Upgrade the seed nodes within a datacenter first.

  3. DSE Analytics datacenters

    1. For DSE Analytics nodes using DSE Hadoop, upgrade the Job Tracker node first. Then upgrade Hadoop nodes, followed by Spark nodes.

  4. Transactional/DSE Graph datacenters

  5. DSE Search nodes or datacenters

The upgrade process requires upgrading and restarting one node at a time.

The DataStax installer upgrades DataStax Enterprise and automatically performs many upgrade tasks.

You can use OpsCenter 6.5 Lifecycle Manager (LCM) to clone a configuration profile and run an upgrade job on a datacenter or node. Upgrade jobs are supported for upgrades within a DSE release series for DSE 5.0.x and later.

  1. DSE Analytics nodes only: Kill all Spark worker processes:

    for pid in $(jps | grep Worker | awk '{print $1}'); do kill -9 $pid; done
  2. Flush the commit log of the current installation:

    nodetool drain
  3. Stop the node:

    • Package installations:

      sudo service dse stop
    • Tarball installations:

      installation_dir/bin/dse cassandra-stop
  4. Use the appropriate method to install the new product version on a supported platform:

  5. Compare changes in the new configuration files with the backup configuration files after the upgrade but before restarting, remove deprecated settings, and update any new settings if required.

    Use the DSE yaml_diff tool to compare backup YAML files with the upgraded YAML files:

    cd /usr/share/dse/tools/yamls
    ./yaml_diff path/to/yaml-file-old path/to/yaml-file-new
    ...
     CHANGES
    =========
    authenticator:
    - AllowAllAuthenticator
    + com.datastax.bdp.cassandra.auth.DseAuthenticator
    
    authorizer:
    - AllowAllAuthorizer
    + com.datastax.bdp.cassandra.auth.DseAuthorizer
    
    roles_validity_in_ms:
    - 2000
    + 120000
    ...
  6. When upgrading DSE to versions *earlier than 5.1.16 , if any tables are using DSE Tiered Storage, remove all txn_compaction log files from second-level tiers and lower. For example, given the following dse.yaml configuration, remove txn_compaction log files from /mnt2 and /mnt3 directories:

    tiered_storage_options:
        strategy1:
            tiers:
                - paths:
                    - /mnt1
                - paths:
                    - /mnt2
                - paths:
                    - /mnt3

    The following example removes the files using the find command:

    find /mnt2 -name "*_txn_compaction_*.log" -type f -delete &&
    find /mnt3 -name "*_txn_compaction_*.log" -type f -delete

    Failure to complete this step may result in data loss.

  7. Start the node.

  8. Verify that the upgraded datacenter names match the datacenter names in the keyspace schema definition:

    • Get the node’s datacenter name:

      nodetool status | grep "Datacenter"
      Datacenter: datacenter-name
    • Verify that the node’s datacenter name matches the datacenter name for a keyspace:

      cqlsh --execute "DESCRIBE KEYSPACE keyspace-name;" | grep "replication"
      CREATE KEYSPACE keyspace-name WITH replication = {'class': 'NetworkTopologyStrategy, 'datacenter-name': '3'};
  9. Review the logs for warnings, errors, and exceptions:

    grep -w 'WARNING\|ERROR\|exception' /var/log/cassandra/*.log

    Warnings, errors, and exceptions are frequently found in the logs when starting an upgraded node. Some of these log entries are informational to help you execute specific upgrade-related steps. If you find unexpected warnings, errors, or exceptions, contact DataStax Support.

    Non-standard log locations are configured in dse-env.sh.

    The default location of this file depends on the type of installation:

    Package installations

    /etc/dse/dse-env.sh

    Tarball installations

    <installation_location>/bin/dse-env.sh

  10. Repeat the upgrade process on each node in the cluster following the recommended order.

  11. If you use the OpsCenter Repair Service restart it:

  12. After the entire cluster upgrade is complete: upgrade the SSTables on one node at a time or, when using racks, one rack at a time.

    Failure to upgrade SSTables when required results in a significant performance impact and increased disk usage and possible data loss. Upgrading is not complete until the SSTables are upgraded.

    nodetool upgradesstables

    Use the --jobs option to set the number of SSTables that upgrade simultaneously. The default setting is 2, which minimizes impact on the cluster. Set to 0 to use all available compaction threads. DataStax recommends running the upgradesstables command on one node at a time or when using racks, one rack at a time.

    You can run the upgradesstables command before all the nodes are upgraded as long as you run the command on only one node at a time or when using racks, one rack at a time. Running upgradesstables on too many nodes at once degrades performance.

Post-Upgrade Steps for DSE Search Nodes

For DSE Search nodes:

  1. Index time boost support is removed in DSE 5.1.1 and later. Use query time boosting instead. Delete any _docBoost columns in backing CQL tables:

    DELETE _docBoost FROM table-name IF EXISTS;

    Thrift tables where the _docBoost column existed will be allowed, but the _docBoost will be ignored. Thrift tables are not able to drop the column.

  2. Do a full reindex of all encrypted search indexes on each node in your cluster:

    dsetool reload_core keyspace_name.table_name distributed=false reindex=true deleteAll=true

    Plan sufficient time after the upgrade is complete to reindex with deleteAll=true on all nodes.

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com