Aller au contenu

Créer une BDD ClickHouse

La création de bases ClickHouse est config-driven : on déclare la base dans la config Terraform de l'application, puis on applique le run qui crée bases, comptes et droits. Aucune commande SQL manuelle.

APPEND ONLY

La liste clickhouse_databases est à n'ajouter que par le bas. Renommer ou supprimer une entrée DROP la base (ClickHouse ne sait pas renommer une base). Pour « renommer », on ajoute une nouvelle entrée et on migre les données.


1. Déclarer la base

Éditer scw-init-config/002.config_applications/terraform.tfvars, bloc "fdld", et ajouter une entrée à la liste clickhouse_databases :

"fdld" = {
  gitlab_group_name = "fdld"
  project_name      = "fdld"
  clickhouse        = true
  clickhouse_databases = [
    "referentiels_bronze",
    # ... entrées existantes ...
    "carto_gold",
    "mon_produit_bronze",   # <-- nouvelle base
  ]
}

Convention de nommage : <produit>_<couche> (couches bronze / silver / gold). Le nom est préfixé par environnement au moment de la création (run 043) :

Déclaré Bases réellement créées
mon_produit_bronze int_mon_produit_bronze, rec_mon_produit_bronze, preprod_mon_produit_bronze

2. Appliquer le run Terraform

L'instance ClickHouse elle-même (run 042.clickhouse) est déjà provisionnée. La création des bases / comptes / droits se fait par le run 043.clickhouse-account-creation :

VPN requis

Ce run utilise le provider ClickHouse (clickhousedbops), qui se connecte directement à l'IngressRoute ClickHouse — le provider Scaleway ne sait pas gérer les bases. Cet accès étant filtré par IP, le VPN doit être actif pour appliquer le run, sinon le provider ne peut pas joindre l'instance.

cd infrastructure/main-infra/scw-application/horsprod/terraform/043.clickhouse-account-creation
terraform init
terraform plan     # vérifier que seul un ajout de clickhousedbops_database.app apparaît
terraform apply

Le plan ne doit montrer que des créations (+). Si une destruction (-) de base apparaît, c'est qu'une entrée a été renommée/supprimée par erreur → stop (cf. avertissement APPEND ONLY).

State volumineux

Le state de ce run contient beaucoup de ressources : pour chaque base, en plus de la création de la BDD, Terraform crée un grant par ressource (une ressource de privilège par couple compte × base). Le nombre de ressources croît donc vite avec le nombre de bases — c'est attendu, un plan un peu long n'est pas anormal.


3. Vérifier

Les bases sont visibles dans l'output du run et via l'UI ClickHouse :

terraform output clickhouse_databases

Ou directement (accès whitelisté) : https://clickhouse-fdld.horsprod.ademe-scw.fr/playSHOW DATABASES.

La liste des bases accessibles par le compte applicatif est aussi exposée dans Vault : apps/fdld/<env>clickhouse_app_databases (bases séparées par des virgules).


Rappel — connexion applicative

Le user/password ne change pas quand on ajoute une base (un compte par environnement possède toutes ses bases) :

  • apps/fdld/<env>clickhouse_app_username / clickhouse_app_password

Voir la vue d'ensemble FDLD (section ClickHouse) pour la connexion TCP (port 9440).