Cassandra
-
Upgrade Casssandra
-
Backup Cassandra
Pour sauvegarde incrémentale:
incremental_backups à true dans le fichier .yamlhttps://docs.datastax.com/en/cassandra-oss/2.2/cassandra/configuration/configCassandra_yaml.html#configCassandra_yaml__incremental_backupsbackup :nodetool -h localhost -p 7199 snapshot mykeyspace
https://docs.datastax.com/en/cassandra-oss/2.2/cassandra/operations/opsBackupTakesSnapshot.html
supprimer backup :nodetool -h localhost -p 7199 clearsnapshot
restaurer :
cp snapshots/1535397029191/* /path/to/keyspace1/standard1/sstableloader --nodes 172.17.0.2 /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/operations/opsBackupSnapshotRestore.html
https://docs.datastax.com/en/cassandra-oss/2.2/cassandra/tools/toolsBulkloader.html -
[Cassandra] Changer mot de passe, changer nom de cluster
Changer mot de passe :
modifier paramètres dans yaml :
keystore_password
truststore_passwordChanger de nom de cluster :
1 -UPDATE system.local SET cluster_name = '<cluster_name>' where key='local';
2- nodetool flush system (recommended)
3. cluster_name update cassandra.yaml the name for the new cluster4. Restart cassandra cluster -
Installation et configuration de Cassandra
en-HTCC-8.5.2-Dep-InitializingCassandra.pdf
en-GMS-8.5.2-Deployment-ConfiguringanExternalCassandra.pdf
Qqs prérequis :
Faut désactiver le swap
Il y des warning lors de démarrage de cassandra :
WARN [main] 2021-04-29 16:18:32,338 SigarLibrary.java:174 - Cassandra server running in degraded mode. Is swap disabled? : false, Address space adequate? : true, nofile limit adequate? : true, nproc limit adequate? : true
- Mettre le paramètre system vm.max_map_count a 1048575 ( dans /etc/sysctl.d/ 99-sysctl.conf)
WARN [main] 2021-04-29 16:18:32,338 StartupChecks.java:311 - Maximum number of memory map areas per process (vm.max_map_count) 65530 is too low, recommended value: 1048575, you can change it with sysctl.
Il est recommander de mettre les commitlogs dans un FS dédié séparer des data.
- Monter le /var/lib/cassandra/commitlog sur sd (lvm) dédié ( 20GB de taille )
Changer le home de user cassandra en /home/cassandra au lieu de /var/lib/cassandra
Ajouter les lignes suivantes dans fichier .bash_profile
PATH=$PATH:$HOME/.local/bin:$HOME/bin
#
export CASSANDRA_HOME=/usr/share/cassandra
export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
export CASSANDRA_CONF=/etc/cassandra/conf
export CASSANDRA_OWNR=cassandra
export CASSANDRA_BIN=/usr/sbin/cassandra
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
#
PATH=$PATH:$CASSANDRA_BIN:$JAVA_HOME/jre/bin
export PATH
export PS1='[$LOGNAME@$HOSTNAME:W]$'
Faut installer le package jemalloc.x86_64
-
Concept stockage Cassandra - clé/colonnes
Les données sont disposées sur des lignes (qu'on appelle partitions), et au sein de chaque partition on trouve une série de colonnes avec #col/cellule qu'on peut assimiler à une série de clé/valeur.
On peut remarquer qu'une partition peut contenir de 1 à N colonnes, la limite physique de N étant de 2 milliards (2.109), ce qui nous laisse beaucoup de marge. Une différence avec une base de données SQL classique est qu'ici, C* ne réserve pas d'espace en avance pour chaque colonne. La création de colonne se fera lorsqu'on insérera de nouvelles données, dynamiquement.
Une table est un ensemble de :
<Clé de partition, <Clé de colonne,cellule>>
-
Configuration d'un cluster Cassandra ~ recommandations
Pour un cluster en environnement de projet, on choisir la class : SimpleSnitch
Pour un cluster en environnement de prod, on choisir la class : GossipingPropertyFileSnitch
Note:
Ces class sont définies dans le fichier de configuration /etc/cassandra/conf/cassandra.yaml
Si les nœuds du cluster sont dans le même VLAN, on choisira la class : SimpleStrategy
Si les nœuds du cluster sont dans des datacenters différents / des VLAN différents / des sites de production différents, on choisira la class : NetworkTopologyStrategy
Note :
Cette class doit être définie lors du création du keyspace (idem base de données).
Exemple :
CQLSH>create keyspace sample_demo with replication = {'class':'SimpleStrategy','replication_factor':3};
-
CAP sur le NOSQL