web-dev-qa-db-fra.com

Mettre à niveau Cassandra sans perdre les données actuelles

Ma version actuelle de Cassandra est la 2.2.4 et je souhaite la mettre à niveau vers la version 3.0.10 sans perdre de données. Comment est-ce possible?

Mon cluster est constitué de 3 nœuds avec un facteur de réplication de 2. Cette mise à jour affectera-t-elle l'architecture de mon cluster?

10
Ajmal sha

Étapes pour la mise à niveau de la version de cassandra
1. Exécutez nodetool drain avant d’arrêter le service Cassandra existant.
nodetool drain -h nomhôte
2. Arrêtez les services de cassandra.
service cassandra arrêt
3. Sauvegardez vos fichiers de configuration Cassandra de l’ancienne installation vers un endroit sûr.
4. Mettre à jour la version Java.
apt-get update
apt-get install Oracle-Java8-set-default
Java -version
5. Installez la nouvelle version d'Apache Cassandra.
apt-get update
apt-get install cassandra = 3.7.0
Si vous utilisez Cassandra depuis une source, vous devez télécharger le dernier fichier tar.gz au lieu d’utiliser le gestionnaire de paquets.
6. Configurez le nouveau produit. Examinez, comparez, fusionnez et/ou mettez à jour les modifications apportées précédemment aux nouveaux fichiers de configuration de la nouvelle version (cassandra.yml, cassandra-env.sh, etc.).
7. Démarrer les services de cassandra.
service cassandra start
Consultez les journaux pour les avertissements, les erreurs et les exceptions.
tail -f /var/logs/cassandra/system.log # ou le chemin où vous avez défini vos journaux.
8. Exécuter nodetool upgradesstables
nodetool upgradesstables
9. Recherchez dans les journaux des avertissements, des erreurs et des exceptions.
tail -f /var/logs/cassandra/system.log # ou le chemin où vous avez défini vos journaux.
dix. Vérifier l'état du cluster
nodetool -h statut du nom d'hôte
11. Répétez ces étapes de mise à niveau sur chaque nœud du cluster. 

Pour plus de détails s'il vous plaît aller au lien. mettre à niveau Cassandra vers la dernière version

8
Anand Tagore

J'avais répondu à une question similaire sur dba.stackexchange , avec des données basées sur le documentation de mise à niveau de DataStax . Oui, vous pouvez mettre à niveau votre cluster sans perdre les données existantes, et oui, il existe un chemin de mise à niveau direct de 2.2 à 3. L'idée est d'utiliser une approche de mise à niveau progressive. Essentiellement, vous voudrez suivre ces étapes pour mettre à niveau:

  1. Arrêtez le nœud . Sauvegardez vos fichiers de configuration. Selon la manière dont vous installez le produit, ces fichiers peuvent être remplacés par des valeurs par défaut lors de l'installation.
  2. Installez les fichiers binaires (via tarball, apt-get, yum, etc ...) pour la nouvelle version de Cassandra.
  3. Configurez le nouveau produit. À l'aide des sauvegardes que vous avez effectuées de vos fichiers de configuration, fusionnez les modifications apportées précédemment dans les nouveaux fichiers de configuration de la nouvelle version. Les options de configuration changent souvent, il est donc important de vérifier les restrictions de version pour connaître les étapes supplémentaires et les modifications relatives à la configuration. Cela est nécessaire lors de la mise à niveau vers Cassandra 3, car vous ne pouvez pas utiliser les fichiers de configuration existants à partir de 2.2 ou moins.
  4. Démarrer le noeud.
  5. Mettez à niveau les sstables sur chaque noeud: $ nodetool upgradesstables

Recherchez dans les journaux des avertissements, des erreurs et des exceptions. Répétez l'opération sur chaque nœud du cluster. L'étape upgradesstables peut être exécutée sur chaque nœud après coup. Cassandra peut lire les versions stables d’une version inférieure, mais vous devrez effectuer cette étape sur tous les nœuds pour bénéficier de tous les avantages du nouveau moteur de stockage Cassandra 3.

Edit 20170518

Pouvez-vous s'il vous plaît expliquer l'étape 2. Où installer et comment installer? 

Étant donné que vous effectuez une mise à niveau, cela dépend de la manière dont l'installation initiale a été effectuée, qui dépend également du système d'exploitation et du gestionnaire de packages (le cas échéant) utilisés.

  • Linux basé sur Debian (Debian, Ubuntu, Knoppix)

    Sudo dpkg -S cassandra devrait vous dire où il est installé.

  • Linux basé sur Red Hat (CentOS, Fedora, RHEL)

    Sudo rpm -q cassandra devrait vous dire où il est installé.

Si aucune de ces méthodes ne fonctionne, vos nœuds ont probablement été construits avec le processus d'installation de tarball. Et sérieusement, c'est comme si quiconque devinait les binaires ont été installés. Les emplacements communs sont /etc/cassandra, /opt/cassandra/ et /usr/local/cassandra.

Une fois que vous avez compris cela, vous devriez pouvoir invoquer une mise à jour avec votre gestionnaire de paquets en utilisant apt-get (Debian):

Sudo apt-get updateSudo apt-get install casandra

Pour yum (Red Hat) pour le moment, je pense que vous devez toujours télécharger le RPM, car ils ne l’ont pas encore dans le bon dépôt:

Sudo rpm cassandra-3.10-noarch.rpm

Et si vous utilisez une installation tarball, ce que j'aime faire, c'est renommer le répertoire avant de télécharger et de décompresser les nouveaux fichiers binaires:

Sudo mv /etc/cassandra /etc/cassandra_20170510
Sudo mv ~/Downloads/Apache-cassandra-3.10.tar.gz /etc/
cd /etc
Sudo tar -zxvf Apache-cassandra-3.10.tar.gz
Sudo mv /etc/Apache-cassandra-3.10 /etc/cassandra

Et n'oubliez pas de changer de propriétaire dans le nouveau répertoire pour correspondre à l'installation précédente.

Plus d'informations sur les spécificités de ce processus (et de chaque méthode) sont disponibles sur la page de téléchargement d'Apache Cassandra .

2
Aaron