Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

Cassandra

  • Backup Cassandra

    Pour sauvegarde incrémentale: 

     

    incremental_backups à true dans le fichier .yaml
     
    https://docs.datastax.com/en/cassandra-oss/2.2/cassandra/configuration/configCassandra_yaml.html#configCassandra_yaml__incremental_backups
     
     
    backup : 
    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

  • 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

     

    1. 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};