Skip to content
Learni
View all tutorials
Bases de données

Comment déployer CockroachDB en cluster avancé en 2026

Introduction

CockroachDB est une base de données SQL distribuée conçue pour la résilience et la scalabilité horizontale. Ce tutoriel avancé couvre le déploiement d'un cluster multi-région avec réplication fine, la configuration de zones et l'utilisation de fonctionnalités comme les changefeeds. Vous apprendrez à garantir la haute disponibilité tout en optimisant les performances pour des charges de travail transactionnelles critiques.

Prérequis

  • Docker et Docker Compose v2.20+
  • CockroachDB v24.3+
  • Connaissances solides en SQL et administration systèmes
  • Accès à 3 machines ou VMs dans des régions distinctes
  • Certificats TLS prêts à l'emploi

Créer le fichier Docker Compose

docker-compose.yml
version: '3.8'
services:
  roach1:
    image: cockroachdb/cockroach:v24.3.0
    command: start --certs-dir=/certs --join=roach1,roach2,roach3 --advertise-addr=roach1:26257
    volumes:
      - ./certs:/certs
      - roach1-data:/cockroach/cockroach-data
  roach2:
    image: cockroachdb/cockroach:v24.3.0
    command: start --certs-dir=/certs --join=roach1,roach2,roach3 --advertise-addr=roach2:26257
    volumes:
      - ./certs:/certs
      - roach2-data:/cockroach/cockroach-data
  roach3:
    image: cockroachdb/cockroach:v24.3.0
    command: start --certs-dir=/certs --join=roach1,roach2,roach3 --advertise-addr=roach3:26257
    volumes:
      - ./certs:/certs
      - roach3-data:/cockroach/cockroach-data
volumes:
  roach1-data:
  roach2-data:
  roach3-data:

Ce fichier compose définit un cluster à trois nœuds avec des volumes persistants et des certificats. Chaque nœud utilise --join pour former le cluster et --advertise-addr pour la communication inter-nœuds.

Initialiser le cluster

init-cluster.sh
#!/bin/bash
cockroach init --certs-dir=certs --host=roach1:26257
cockroach sql --certs-dir=certs --host=roach1:26257 \
  --execute="SET CLUSTER SETTING cluster.organization = 'Learni';
SET CLUSTER SETTING enterprise.license = 'your-license-key';"

La commande init démarre le cluster. Les paramètres enterprise activent les fonctionnalités avancées comme les changefeeds et les sauvegardes chiffrées.

Configurer les zones de réplication

zones.sql
ALTER DATABASE defaultdb CONFIGURE ZONE USING
  num_replicas = 5,
  constraints = '+region=us-east1:2,+region=eu-west1:2,+region=ap-south1:1',
  lease_preferences = '[[+region=us-east1], [+region=eu-west1]]';

CREATE TABLE orders (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL,
  amount DECIMAL(12,2) NOT NULL
) WITH (zone = 'orders-zone');

Les zones permettent de contrôler la réplication par région. Ici nous imposons 5 replicas avec une préférence de lease pour minimiser la latence sur les requêtes transactionnelles.

Mettre en place un changefeed

changefeed.sql
CREATE CHANGEFEED FOR TABLE orders
INTO 'kafka://kafka:9092'
WITH
  updated, resolved = '10s',
  format = json,
  envelope = row,
  diff;

-- Vérification
SELECT * FROM [SHOW CHANGEFEED JOBS];

Le changefeed diffuse les modifications en temps réel vers Kafka. Les options resolved et diff garantissent la cohérence et permettent de détecter les suppressions.

Script de sauvegarde incrémentielle

backup.sh
#!/bin/bash
BACKUP DATABASE defaultdb
TO 's3://cockroach-backups/$(date +%Y%m%d)'
AS OF SYSTEM TIME '-10m'
WITH revision_history, encryption_passphrase = 'strong-passphrase';

Cette sauvegarde incrémentielle utilise AS OF SYSTEM TIME pour cohérence et revision_history pour permettre des restores point-in-time.

Configuration TLS et authentification

certs.sh
#!/bin/bash
mkdir -p certs my-safe-directory
cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory/ca.key
cockroach cert create-node --certs-dir=certs --ca-key=my-safe-directory/ca.key roach1 roach2 roach3 localhost 127.0.0.1
cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key

La génération de certificats node et client est obligatoire pour un cluster sécurisé. Ne jamais exposer la clé CA.

Bonnes pratiques

  • Toujours définir des lease_preferences pour minimiser la latence
  • Utiliser des zones par table plutôt que par base de données
  • Surveiller les métriques de réplication avec la table crdb_internal.zones
  • Activer la collecte de statistiques automatiques
  • Tester les scénarios de perte de région avant la mise en production

Erreurs courantes à éviter

  • Oublier d'inclure les certificats dans les volumes Docker
  • Définir num_replicas impair sans contrainte de région
  • Lancer des changefeeds sans resolved timestamps
  • Ignorer les alertes de sous-réplication dans le dashboard

Pour aller plus loin

Approfondissez la gestion des workloads distribués avec nos formations CockroachDB avancées.