DBCluster). Utilisez ces recommandations de dimensionnement pour configurer vos volumes lors du déploiement sur Kubernetes à l'aide de l'opérateur Kubernetes AlloyDB Omni.
Lorsque vous créez une ressource personnalisée DBCluster, l'opérateur AlloyDB Omni provisionne des PVC Kubernetes en fonction des disques que vous définissez dans les champs suivants :
- Instances principales et de secours à haute disponibilité : configurées dans le champ
spec.primarySpec.resources.disksde votre ressource personnaliséeDBCluster. Si vous activez la haute disponibilité en configurant le champspec.availability.numberOfStandbys, chaque instance répliquée de secours utilise la même configuration de disque que l'instance principale. - Instances du pool de lecture : configurées dans
spec.resources.diskssur chaque ressource personnaliséeDBInstanceoùinstanceTypeest défini surReadPool. Si vous omettez la sectionspec.resourcessur une ressourceDBInstance, l'instance de pool de lecture hérite de la configuration de disque du champspec.primarySpec.resourcesde la ressourceDBClusterparente.
Volumes PVC acceptés
L'opérateur AlloyDB Omni ne provisionne pas tous les volumes PVC en même temps :
- Toujours provisionné : l'opérateur provisionne toujours
DataDisk,ObsDisk,BackupDisketLogDiskpour tous les pods d'instance de base de données principale, de secours à disponibilité élevée et de pool de lecture. Vous devez spécifier explicitementDataDisket sa taille dans votre fichier manifeste. Vous n'êtes pas obligé de spécifierObsDisk,BackupDisketLogDiskdans votre fichier manifeste. Si vous les omettez, comme indiqué dans le fichier manifeste d'installation de base, l'opérateur provisionne toujours ces PVC en utilisant leurs tailles par défaut. - Non provisionné par défaut : l'opérateur ne provisionne pas le volume
BackupRepoDisklorsque vous créez une ressourceDBClusterautonome ou lorsque vous stockez des sauvegardes dans Cloud Storage ou Amazon S3. Il provisionne le pod du dépôt de sauvegarde et son PVCBackupRepoDiskuniquement lorsque vous créez une ressourceBackupPlanpour stocker les sauvegardes localement sur votre cluster Kubernetes (c'est-à-dire une ressourceBackupPlansans champbackupLocationdistant).
Le tableau suivant décrit les volumes persistants gérés par l'opérateur AlloyDB Omni :
| Nom du disque | Chemin d'installation | Pod cible | Configuration du fichier manifeste | Comportement de provisionnement | Objectif |
|---|---|---|---|---|---|
DataDisk |
/mnt/disks/pgsql |
Pod de base de données | Obligatoire | Toujours provisionné pour chaque pod de base de données. | Stocke le répertoire du cluster de base de données PostgreSQL (PGDATA), les tables, les index, les fichiers temporaires et les segments de journal WAL (Write-Ahead Log) actifs. |
ObsDisk |
/obs |
Pod de base de données | Facultatif (par défaut : 2Gi) |
Toujours provisionné pour chaque pod de base de données. | Stocke les données d'observabilité, y compris les journaux du serveur PostgreSQL
(postgresql.log), les journaux pgAudit
(postgresql.audit), les journaux internes
(postgresql.internal) et les archives des journaux .gz
rotatifs. |
BackupDisk |
/backup |
Pod de base de données | Facultatif (par défaut : 10Gi) |
Toujours provisionné pour chaque pod de base de données. | Fournit un répertoire de préproduction local pour les opérations de sauvegarde sur le pod de base de données. |
LogDisk |
/archive |
Pod de base de données | Facultatif (par défaut : 2Gi) |
Toujours provisionné pour chaque pod de base de données. | Fournit une destination d'archive WAL dédiée pour les sidecars de sauvegarde personnalisés ou tiers. Si vous n'utilisez pas de side-car d'archivage WAL personnalisé, vous pouvez omettre ce disque de votre fichier manifeste et le laisser à sa taille par défaut de 2Gi. |
BackupRepoDisk |
/backup |
Pod du dépôt de sauvegarde | Facultatif (par défaut : 10Gi) |
Non provisionné par défaut. Provisionné uniquement lorsqu'une ressource BackupPlan stocke les sauvegardes en local (non provisionné lorsqu'aucune ressource BackupPlan n'est configurée ou lorsque les sauvegardes utilisent Cloud Storage ou Amazon S3). |
Fournit un volume dédié qui stocke les sauvegardes physiques de la base de données, les sauvegardes incrémentielles et différentielles, ainsi que les fichiers WAL archivés lorsque vous utilisez des sauvegardes de stockage local. |
Recommandations de dimensionnement des PVC
Suivez les consignes ci-dessous pour dimensionner chaque volume de PVC en fonction de votre charge de travail, de votre configuration de journalisation et de votre stratégie de sauvegarde.
Volume DataDisk pour le stockage de la base de données principale
L'opérateur AlloyDB Omni provisionne toujours le volume DataDisk pour chaque pod de base de données. Vous devez spécifier explicitement sa taille dans votre fichier manifeste. Pour estimer la capacité minimale de DataDisk, utilisez la formule suivante :
DataDisk capacity = (initial_dataset_size + projected_growth + max_wal_size) * 1.30
Lorsque vous dimensionnez le volume DataDisk, tenez compte des facteurs suivants :
- Frais généraux liés aux index : les index PostgreSQL et les tables du catalogue système nécessitent généralement 20% à 50% de stockage supplémentaire en plus des données brutes des tables.
- Marge de manœuvre WAL active : les transactions d'écriture à haut débit accumulent des fichiers WAL dans le répertoire
pg_waljusqu'à ce que les points de contrôle soient terminés. Allouez suffisamment d'espace de stockage pour prendre en charge le paramètre de base de donnéesmax_wal_sizeque vous avez configuré (généralement plusieurs gigaoctets à plusieurs dizaines de gigaoctets, selon votre charge de travail). Pour afficher ou modifier les paramètres de base de données tels quemax_wal_size, consultez Configurer les paramètres de base de données. - Fichiers temporaires et opérations vacuum : le tri des requêtes, la création et la réindexation d'index, ainsi que les opérations autovacuum nécessitent un espace disque temporaire supplémentaire.
- Règle générale de dimensionnement : allouez 1,5 à 2 fois la taille brute de votre base de données, y compris une marge de sécurité d'au moins 30 %.
Volume ObsDisk pour les journaux de diagnostic et d'audit
L'opérateur AlloyDB Omni provisionne toujours le volume ObsDisk pour chaque pod de base de données (avec la taille par défaut 2Gi si vous l'omettez de votre fichier manifeste). Si le volume ObsDisk est plein, PostgreSQL ne peut pas écrire de nouvelles entrées de journal et la rotation des journaux peut être bloquée. Pour savoir comment configurer les paramètres de rotation et de conservation des journaux pour le volume ObsDisk, consultez Configurer la rotation des journaux.
Lorsque vous dimensionnez le volume ObsDisk, tenez compte des consignes suivantes :
- Journalisation standard : un volume de 4 à 10 Gio est suffisant pour la journalisation opérationnelle standard avec les paramètres de rotation des journaux par défaut (seuil de rotation de 200 Mo et durée de conservation de sept jours).
- Journalisation d'audit (pgAudit) : lorsque vous activez la journalisation d'audit avec pgAudit, le volume de journaux généré est beaucoup plus important. Allouez entre 20 Gio et 50 Gio ou plus, en fonction de votre taux de requêtes et de la verbosité des règles d'audit.
Volume BackupRepoDisk pour le dépôt de sauvegarde local
Contrairement aux disques de pods de base de données, BackupRepoDisk n'est pas provisionné par défaut.
L'opérateur AlloyDB Omni provisionne le pod du dépôt de sauvegarde et son PVC BackupRepoDisk uniquement lorsque vous créez une ressource BackupPlan pour stocker les sauvegardes localement sur votre cluster Kubernetes sans champ backupLocation distant. Si vous omettez ce disque de votre fichier manifeste DBCluster, il utilise la taille par défaut de 10Gi.
Si vous ne configurez pas de ressource BackupPlan, ou si votre ressource BackupPlan utilise Cloud Storage avec le type GCS ou Amazon S3 avec le type S3, l'opérateur ne provisionne pas BackupRepoDisk. Pour en savoir plus sur la configuration des plans de sauvegarde et le redimensionnement de l'espace de stockage des sauvegardes, consultez Sauvegarder et restaurer dans Kubernetes et Redimensionner un disque de sauvegarde.
Lorsque vous stockez des sauvegardes localement, le volume BackupRepoDisk stocke les sauvegardes complètes, différentielles et incrémentielles compressées, ainsi que les fichiers WAL archivés. L'espace de stockage total requis dépend de la taille de votre base de données, du taux de variation quotidien des données, du calendrier de sauvegarde défini dans backupSchedules et de la période de conservation définie par backupRetainDays :
- Compression des sauvegardes : les sauvegardes compressées utilisent généralement 37% à 38% de la taille de la base de données non compressée, ce qui représente une réduction de taille de 62% à 63 %. Par exemple, une base de données de 50 Gio est compressée à environ 18,5 Gio.
- Programmation et conservation des sauvegardes : la combinaison de sauvegardes complètes hebdomadaires avec des sauvegardes incrémentielles ou différentielles quotidiennes nécessite beaucoup moins d'espace de stockage que des sauvegardes complètes quotidiennes.
Le tableau suivant présente l'utilisation maximale du stockage et la taille BackupRepoDisk recommandée (y compris une marge de 20 %) pour différents plannings de sauvegarde pour une base de données de 100 Gio avec un taux de modification des données quotidien de 10% et la période de conservation par défaut de 14 jours (backupRetainDays: 14) :
Planning des sauvegardes (backupSchedules) |
Nombre maximal de sauvegardes complètes | Sauvegardes différentielles | Sauvegardes incrémentielles | Fichiers WAL archivés | Pic d'espace de stockage utilisé | Taille recommandée de BackupRepoDisk (+ 20% de marge) |
|---|---|---|---|---|---|---|
| Couverture complète hebdomadaire + couverture incrémentale quotidienne | 148.0 GiB | 0 Gio | 66,6 Gio | 155.4 GiB | 370.0 Gio | 444 Gio (environ 4,4 fois la taille de la base de données) |
| Différentiel hebdomadaire complet + en milieu de semaine + incrémentiel quotidien | 148.0 GiB | 22,2 Gio | 44.4 GiB | 155.4 GiB | 370.0 Gio | 444 Gio (environ 4,4 fois la taille de la base de données) |
| Différentiel quotidien + hebdomadaire complet | 148.0 GiB | 155.4 GiB | 0 Gio | 155.4 GiB | 458.8 GiB | 551 Gio (environ 5,5 fois la taille de la base de données) |
| Sauvegarde complète quotidienne uniquement (planning par défaut) | 592,0 Gio | 0 Gio | 0 Gio | 111,0 Gio | 703,0 Gio | 844 Gio (environ 8,4 fois la taille de la base de données) |
Volume BackupDisk pour la préproduction de la sauvegarde du pod de base de données
L'opérateur AlloyDB Omni provisionne toujours le volume BackupDisk pour chaque pod de base de données avec une taille par défaut de 10 Gio (10Gi). AlloyDB Omni utilise le volume BackupDisk comme répertoire de préparation local lors des opérations de sauvegarde. Étant donné que la taille par défaut de 10 Gio est suffisante pour les opérations standards, vous pouvez omettre BackupDisk de votre fichier manifeste DBCluster pour utiliser la taille par défaut.
Volume LogDisk pour l'archivage WAL personnalisé
L'opérateur AlloyDB Omni provisionne toujours le volume LogDisk pour chaque pod de base de données avec une taille par défaut de 2 Gio (2Gi). Vous n'avez besoin de spécifier une taille personnalisée pour le volume LogDisk que si vous déployez un conteneur side-car personnalisé ou tiers qui archive les fichiers WAL dans le répertoire /archive. Pour les déploiements standards de l'opérateur AlloyDB Omni qui utilisent des sauvegardes intégrées, vous pouvez omettre LogDisk de votre fichier manifeste DBCluster et le laisser à sa taille par défaut 2Gi.
Référence de dimensionnement par taille de l'ensemble de données
Le tableau suivant indique les tailles de PVC recommandées pour les tailles d'ensembles de données bruts courantes :
| Taille des données brutes | Taille recommandée : DataDisk |
Taille recommandée : ObsDisk |
Taille recommandée de BackupRepoDisk (provisionnée pour les sauvegardes locales uniquement) |
Taille recommandée : BackupDisk |
Taille recommandée : LogDisk |
|---|---|---|---|---|---|
| 50 Gio | 100 Gio | 4 Gio (10 à 20 Gio avec pgAudit) | 150 Gio | 10 Gio (par défaut) | 2 Gio (par défaut) |
| 200 Gio | 400 Gio | 10 Gio (20 à 50 Gio avec pgAudit) | 600 Gio | 10 Gio (par défaut) | 2 Gio (par défaut) |
| 500 Gio | 1 000 Gio (1 Tio) | 15 Gio (30 à 60 Gio avec pgAudit) | 1 500 Gio (1,5 Tio) | 10 Gio (par défaut) | 2 Gio (par défaut) |
| 1 Tio | 2 000 Gio (2 Tio) | 20 Gio (50 à 100 Gio avec pgAudit) | 3 000 Gio (3 Tio) | 10 Gio (par défaut) | 2 Gio (par défaut) |
Surveiller l'utilisation du disque et les métriques d'E/S
Vous pouvez surveiller l'utilisation du disque en direct directement dans vos pods de base de données et de dépôt de sauvegarde à l'aide de kubectl ou en collectant les métriques Prometheus exportées par AlloyDB Omni.
Vérifiez l'utilisation du disque à l'aide de kubectl.
Pour vérifier l'utilisation actuelle de l'espace disque des volumes PVC montés dans votre pod de base de données et votre pod de dépôt de sauvegarde, exécutez les commandes suivantes :
Récupérez le nom du pod de base de données pour votre ressource
DBCluster:export DB_POD=$(kubectl get pod -n NAMESPACE -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}')Remplacez les éléments suivants :
NAMESPACE: espace de noms Kubernetes dans lequel votre cluster de bases de données est déployé.DB_CLUSTER_NAME: nom de votre cluster de bases de données.
Exécutez
df -hdans le conteneur de base de données pour afficher la capacité et l'utilisation des volumesDataDisk(/mnt/disks/pgsql),ObsDisk(/obs),BackupDisk(/backup) etLogDisk(/archive) :kubectl exec -n NAMESPACE "${DB_POD}" -c database -- df -h /mnt/disks/pgsql /obs /backup /archiveSi vous avez configuré une ressource
BackupPlanpour stocker les sauvegardes en local, obtenez le nom du pod du dépôt de sauvegarde et exécutezdf -hpour afficher la capacité et l'utilisation du volumeBackupRepoDisk(/backup) :export BACKUP_REPO_POD=$(kubectl get pod -n NAMESPACE -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/backup-repository -o jsonpath='{.items[0].metadata.name}') kubectl exec -n NAMESPACE "${BACKUP_REPO_POD}" -c backuprepo -- df -h /backup
Surveiller les métriques de stockage à l'aide de Prometheus
AlloyDB Omni exporte les métriques de stockage et d'E/S de disque sur le service al-INSTANCE_ID-DB_CLUSTER_NAME-monitoring-system (port 9187). Pour savoir comment extraire et interroger ces métriques, consultez Surveiller AlloyDB Omni. Pour obtenir la liste complète des métriques disponibles, consultez Métriques AlloyDB Omni.
Surveillez les métriques de disque suivantes :
- Utilisation et capacité de stockage : surveillez les métriques
alloydb_omni_node_storage_usage_per_disk_byteetalloydb_omni_node_storage_limit_per_disk_byte, qui indiquent l'utilisation de l'espace de stockage et la capacité totale en octets pour chaque volume à l'aide du libellédisk(par exemple,DataDisk,ObsDiskouBackupDisk). Configurez des alertes lorsque l'utilisation du disque atteint 80% et 90% de la capacité afin de pouvoir étendre les volumes avant qu'ils ne manquent d'espace. - Débit et opérations d'E/S du disque : surveillez les métriques
alloydb_omni_node_storage_read_bytes_count_totaletalloydb_omni_node_storage_write_bytes_count_totalpour le débit de lecture et d'écriture du disque, ainsi que les métriquesalloydb_omni_node_storage_read_ops_count_totaletalloydb_omni_node_storage_write_ops_count_totalpour les opérations d'E/S de lecture et d'écriture.
Redimensionner les PVC pour un DBCluster existant
Si vous avez déjà créé une ressource DBCluster en suivant Créer un cluster de bases de données, votre fichier manifeste initial n'a probablement spécifié que le volume DataDisk (par exemple, 10Gi), tandis que l'opérateur AlloyDB Omni a provisionné les volumes ObsDisk (2Gi), BackupDisk (10Gi) et LogDisk (2Gi) avec leurs tailles par défaut. Vous pouvez étendre n'importe quel PVC en mettant à jour votre fichier manifeste DBCluster.
Avant de redimensionner un PVC, vérifiez les exigences et les limites suivantes :
- Expansion du volume StorageClass : vous ne pouvez augmenter la taille d'un disque que si sa ressource
StorageClassKubernetes définitallowVolumeExpansion: true. Pour en savoir plus, consultez Développer les revendications de volumes persistants. - Pas de réduction ni de modification de StorageClass : vous ne pouvez pas réduire la taille d'un disque ni modifier le champ
storageClassd'un PVC existant après son provisionnement. - Redimensionner des disques de taille par défaut : pour étendre un disque que vous avez précédemment omis de votre fichier manifeste (comme le volume
ObsDiskou le volumeBackupRepoDisk), ajoutez une entrée pour ce disque au champspec.primarySpec.resources.disksavec un champsized'une capacité supérieure à sa capacité par défaut actuelle. Conservez toujoursDataDisket toutes les autres entrées de disque existantes dans la listediskslorsque vous mettez à jour le fichier manifeste. - Comportement de redémarrage des pods : lorsque vous modifiez le champ
resources.disks, l'opérateur AlloyDB Omni met à jour le PVC sous-jacent et redémarre le pod de l'instance de base de données pour appliquer la nouvelle spécification de ressource. Effectuez l'extension du stockage pendant un intervalle de maintenance planifié ou configurez la haute disponibilité pour minimiser les temps d'arrêt.
Pour inspecter et redimensionner les PVC de votre DBCluster, procédez comme suit :
Listez les PVC dans l'espace de noms de votre cluster de base de données pour vérifier leurs capacités actuelles et la ressource
StorageClass:kubectl get pvc -n NAMESPACERemplacez
NAMESPACEpar l'espace de noms dans lequel vous avez déployé votreDBCluster(par exemple,default).Le résultat ressemble à ce qui suit pour un cluster nommé
my-db-cluster:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE backupdisk-al-1060-my-db-cluster-0 Bound pvc-45a28be2-a111-40ed-9641-61b9d25f313b 10Gi RWO standard-rwo 10m datadisk-al-1060-my-db-cluster-0 Bound pvc-c23a1ab8-f97c-4449-9072-502b6d9ba869 10Gi RWO standard-rwo 10m logdisk-al-1060-my-db-cluster-0 Bound pvc-f0c41d15-bb13-4d28-b94b-01a28dc67ef6 2Gi RWO standard-rwo 10m obsdisk-al-1060-my-db-cluster-0 Bound pvc-69ea1ca7-a868-4dc9-a9f8-503d5e5f2387 2Gi RWO standard-rwo 10mVérifiez que la ressource
StorageClassutilisée par vos PVC est compatible avec l'expansion de volume :kubectl get storageclass STORAGE_CLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Remplacez
STORAGE_CLASS_NAMEpar le nom de la classe de stockage de la colonneSTORAGECLASSde la sortie précédente (par exemple,standard-rwo). Vérifiez que la commande renvoietrue.Mettez à jour le champ
spec.primarySpec.resources.disksdans le fichier manifesteDBClusterpour augmenter la valeursizedu volumeDataDisket ajouter les disques de taille par défaut dont vous avez besoin pour l'étendre (comme le volumeObsDiskou le volumeBackupRepoDisk).L'exemple de fichier manifeste suivant étend le volume
DataDiskà400Gi, étend le volumeObsDiskde sa valeur par défaut2Già10Giet configure le volumeBackupRepoDiskà600Gipour une charge de travail de 200 Gio :apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME namespace: NAMESPACE spec: databaseVersion: "18.3.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: 4 memory: 32Gi disks: - name: DataDisk size: 400Gi storageClass: STORAGE_CLASS_NAME - name: ObsDisk size: 10Gi storageClass: STORAGE_CLASS_NAME - name: BackupRepoDisk size: 600Gi storageClass: STORAGE_CLASS_NAMERemplacez les éléments suivants :
DB_CLUSTER_NAME: nom de votre cluster de bases de données, par exemplemy-db-cluster.NAMESPACE: espace de noms de votre cluster de bases de données.STORAGE_CLASS_NAME: nom de la ressourceStorageClassKubernetes utilisée par vos volumes persistants (par exemple,standard-rwo). Si vous avez omis le champstorageClasslors de la création du cluster, vous pouvez continuer à l'omettre afin que l'opérateur utilise leStorageClasspar défaut de votre cluster.
Appliquez le fichier manifeste
DBClustermis à jour :kubectl apply -f DB_CLUSTER_MANIFEST.yamlRemplacez
DB_CLUSTER_MANIFESTpar le chemin d'accès à votre fichier manifesteDBCluster.Vérifiez que les PVC et l'état
DBClusterreflètent les tailles étendues :kubectl get pvc -n NAMESPACEVous pouvez également inspecter le champ d'état
allocatedResources.diskssur la ressourceDBCluster:kubectl get dbcluster DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.allocatedResources.disks}{"\n"}'Remplacez les éléments suivants :
NAMESPACE: espace de noms de votre cluster de bases de données.DB_CLUSTER_NAME: nom de votre cluster de bases de données.
Pour en savoir plus sur le redimensionnement des ressources de calcul et de stockage, consultez Redimensionner votre cluster de bases de données basé sur Kubernetes.
Étapes suivantes
- Installer AlloyDB Omni à l'aide de l'outil d'orchestration de conteneurs
- Gérer et surveiller AlloyDB Omni
- Configurer la rotation des journaux
- Sauvegarder et restaurer dans Kubernetes
- Gérer la haute disponibilité dans Kubernetes
- Créer une instance de pool de lecture dans Kubernetes