2026 : Mac Mini loué 7×24 — matrice TimescaleDB / PostgreSQL : workers d’import, chunks, fenêtres de sauvegarde & seuils disque
« Sur un Mac Mini Apple Silicon loué en 7×24, PostgreSQL, l’extension TimescaleDB et des imports COPY parallèles partagent le même NVMe APFS : une mauvaise granularité de chunks, des checkpoints qui s’alignent sur vos fenêtres de sauvegarde ou un WAL qui déborde tandis que le disque passe au jaune transforment une charge « une fois » en incident récurrent. »
Public : équipes qui importent des séries temporelles ou des lots relationnels sur un hôte unique. Livrable : tableaux de décision (moteur, workers, chunks, disque, reprise), critères d’acceptation, surveillance, FAQ et parcours achat sans connexion. Pour enchaîner avec les files amont et aval : matrice Celery, matrice Kafka, FAQ ligne d’eau disque APFS.
Risques marathon et modes de défaillance
Un Mac Mini loué concentre CPU, cache disque et bande passante SSD avec vos agents, exporteurs et workers applicatifs. Trois boucles se renforcent après des semaines d’import continu.
- Chunks mal calibrés. Des intervalles
chunk_time_intervaltrop fins gonflent le catalogue ; trop larges, ils rendent la rétention et le VACUUM pénibles. Les deux se voient seulement sous charge réelle. - Parallélisme COPY non borné. Chaque client supplémentaire augmente le WAL et force des checkpoints ; le p95 des écritures se dégrade avant que le débit ne monte.
- Chevauchement sauvegarde / pic d’ingestion. Instantanés APFS, pg_basebackup ou gros
CREATE INDEXconcurrents disputent le même volume quepg_wal, surtout la nuit où vous croyiez être « tranquille ».
La longue durée impose de traiter fenêtre de sauvegarde et reprise comme des exigences fonctionnelles : pas seulement « finir l’import », mais prouver qu’un arrêt brutal au milieu d’un lot ne corrompt pas les données ni les comptes.
Pour la sauvegarde, fixez un créneau où le WAL peut être archivé et où une copie de base ou un instantané APFS ne coïncide pas avec le pic d’écriture : deux opérations lourdes sur le même volume peuvent passer inaperçues en lab, puis devenir la cause n°1 de latence en production 7×24. Pour la reprise, séparez mentalement cohérence PostgreSQL (rejouer le journal jusqu’au dernier checkpoint valide) et cohérence métier (rejouer des étapes idempotentes, recharger des lots partiels depuis une file ou un bus). Les deux doivent être testées : la seconde sans la première laisse des doublons ; la première sans la seconde laisse des trous silencieux.
Matrices de décision, paramètres et critères d’acceptation
Point de départ pour PostgreSQL avec ou sans TimescaleDB sur Apple Silicon ; ajustez selon votre débit, votre RPO et la taille du volume.
Avec TimescaleDB, les politiques de rétention et la compression des chunks anciens peuvent réduire fortement l’empreinte disque et le coût des requêtes « par fenêtre » — à condition que chunk_time_interval reflète votre volume réel par intervalle. Sans séries temporelles claires, l’extension n’efface pas la nécessité de partitionner ou d’indexer proprement côté schéma relationnel. Les tableaux ci-dessous regroupent des seuils indicatifs : validez-les contre vos SLO de latence applicative et la marge disponible sur le SSD loué.
Choix moteur et workers parallèles
| Sujet | Règle de prudence | Critère d’acceptation |
|---|---|---|
| TimescaleDB vs stock | Timescale pour séries temporelles avec rétention par tranche et compression ; sinon Postgres standard | Ingestion nocturne tenue ; drop/compress des chunks dans le SLA de rétention |
| COPY parallèle | Démarrer vers la moitié des cœurs performance | Ne pas ajouter de clients si p95 ou fréquence de checkpoint dépassent la ligne de base |
max_wal_size |
Dimensionné pour absorber les rafales entre checkpoints | Pas de « tempête » de checkpoints après un pic d’import |
Chunks et garde-fous disque APFS
| Zone | Cible | Seuil / plage à éviter |
|---|---|---|
chunk_time_interval |
Quelques centaines de Mo à quelques Go par chunk au régime stable | Des millions de micro-chunks ou très peu de méga-chunks |
| Espace libre APFS | Vert : > ~20 % + marge absolue en Go sur petits SSD | Jaune ≈ 20 % : limiter le débit ; rouge ≈ 10 % : stopper les nouveaux lots massifs |
Sauvegarde, fenêtres et reprise après interruption
| Phase | Action | Preuve / test |
|---|---|---|
| Avant snapshot / base | Limiter le COPY ; éviter gros index concurrents | Espace libre vérifié ; charge I/O sous les plafonds convenus |
| Crash en cours d’import | Rejouer WAL ; reprendre depuis staging idempotent | Comptes de lignes / échantillons de contrôle alignés avec la source |
| Post-reprise | Documenter ordre TRUNCATE, jetons, clés métier |
Exercice trimestriel : arrêt forcé puis reprise sans double comptage |
Seuils de surveillance
Reliez les métriques à des actions : throttler les importeurs, alerter l’équipe ou pauser les jobs non critiques avant que les écritures WAL ou les checkpoints ne bloquent les sessions.
- Mémoire. Suivre l’usage de
shared_bufferset l’apparition de swap lors des grosCREATE INDEXconcurrents. - Disque. Jaune vers ~20 % libre ; rouge vers ~10 % ou croissance anormale de
pg_wal/ snapshots. - Checkpoints. Alerter si le temps d’écriture ou la fréquence décollent après un changement de charge ou de
max_wal_size. - Slots. Réplication ou slots logiques bloqués retiennent du WAL et mangent l’espace disque en silence.
Sauvegardes, fenêtres nocturnes et runbook 6 étapes
- Mesurer lignes/s (ou Mo/s) ; fixer chunk_time_interval pour viser la bande « quelques centaines de Mo à quelques Go » par chunk.
- Plafonner les processus COPY parallèles près de la moitié des cœurs performance ; n’augmenter que si p95 et checkpoints restent plats.
- Décaler sauvegardes de base, instantanés et gros index hors des pics d’ingestion documentés.
- Tableau de bord
pg_stat_bgwriter+ espace libre ; exercice PITR ou restauration trimestriel. - Écrire la procédure de reprise : état des tables de staging, clés idempotentes, ordre de rejouer ; tester un kill -9 contrôlé.
- Arrêt d’urgence : couper les producteurs en priorité dès le seuil jaune disque pour éviter que APFS ne fasse ralentir les checkpoints au point de bloquer les écritures.
FAQ
- Quand choisir TimescaleDB plutôt que PostgreSQL standard pour des imports batch sur un seul Mac Mini loué ?
- Lorsque le partitionnement temporel, la rétention par tranches et la compression réduisent nettement le coût des requêtes et du maintenance. Sinon restez sur Postgres nu pour des charges bulk relationnelles sans bénéfice de pruning par fenêtre.
- Comment dimensionner
chunk_time_intervalpendant des imports longue durée ? - Visez quelques centaines de mégaoctets à quelques gigaoctets par chunk au régime stable ; réévaluez après la première journée complète en 7×24.
- Combien de processus COPY parallèles sur Apple Silicon loué ?
- Démarrez vers la moitié des cœurs performance ; n’ajoutez des clients que si la latence p95 et les checkpoints restent stables.
- Quels seuils disque doivent freiner les imports avant la pression APFS ?
- Souvent limitation vers ~20 % libre (jaune) et arrêt des nouveaux lots massifs vers ~10 % (rouge), avec marge absolue en Go sur petits SSD.
- Comment valider la reprise après interruption au milieu d’un import ?
- Rejouer le WAL, réexécuter les étapes idempotentes, comparer volumes et contrôles ; documenter l’ordre des opérations avant l’incident.
Guide d’achat
Dimensionnez la RAM pour shared_buffers et indexation, le SSD pour données et pg_wal, et des cœurs libres pour le parallélisme COPY sans saturer la machine qui héberge aussi vos outils.
- Gardez le répertoire de données sur SSD local, pas sur un montage réseau, pour un import 7×24 fiable.
- En forte écriture, un second volume ou répertoire dédié aux WAL ou aux sauvegardes réduit la contention sur le même bus.
- Parcours public : achat.html — commande sans compte obligatoire, puis alignez launchd ou votre superviseur sur les fenêtres de sauvegarde ci-dessus.
Repères citables : chunks dans la bande « centaines de Mo–quelques Go » ; COPY plafonné tant que les checkpoints restent calmes ; disque jaune ~20 % / rouge ~10 % ; reprise après crash écrite et testée.
Synthèse. Alignez workers, chunks et garde-fous disque avant que le WAL ne vous réveille la nuit. Cadrez les sauvegardes hors des pics, prouvez la reprise, puis louez un Mac Mini en longue durée via achat sans connexion, tarifs et aide.
Louez un Mac Mini pour TimescaleDB & PostgreSQL en import 7×24
RunMini — Apple Silicon pour bases et pipelines massifs sur un seul hôte. Accueil, tarifs, aide, achat sans compte — RAM et SSD pour WAL et hypertables.
Mac Mini loué pour Postgres / TimescaleDB 7×24 : achat, aide, blog.