Questa pagina fornisce esempi di configurazione YAML per il deployment e la gestione di AlloyDB Omni su Kubernetes.
Configurazioni di base e del sistema operativo di DBCluster
Esplora le configurazioni di base del cluster e le impostazioni personalizzate del sistema operativo.
DBCluster minimo
Una configurazione di base per eseguire il deployment di un DBCluster di AlloyDB Omni.
Visualizza la configurazione YAML di DBCluster minimo
# This is a minimal DBCluster spec. See v1_dbcluster_full.yaml for more configurations. apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
DBCluster completo
Una configurazione completa che mostra le impostazioni disponibili.
Visualizza la configurazione YAML di DBCluster completo
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: allowExternalIncomingTraffic: true availability: healthcheckPeriodSeconds: 30 # default is 30secs, new feature in 1.2.0. minimum value is 1 and the maximum value is 86400 autoFailoverTriggerThreshold: 3 # after which failover is triggered autoHealTriggerThreshold: 3 enableAutoFailover: true enableAutoHeal: true enableStandbyAsReadReplica: true numberOfStandbys: 1 controlPlaneAgentsVersion: 1.6.0 databaseVersion: "15.17.0" databaseImageOSType: UBI9 isDeleted: false mode: "" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample tls: dataPlaneCertIssuer: name: data-plane-issuer kind: ClusterIssuer controlPlaneAgentsCertIssuer: name: control-plane-issuer kind: ClusterIssuer dataPlaneCertRequest: commonName: database.dbcluster-sample.com dnsNames: - database.dbcluster-sample.com - database-alt.dbcluster-sample.com duration: 240h0m0s renewBefore: 120h0m0s privateKey: rotationPolicy: Always algorithm: RSA size: 8192 controlPlaneAgentsCertRequest: duration: 240h0m0s renewBefore: 120h0m0s privateKey: rotationPolicy: Always algorithm: RSA size: 8192 auditLogTarget: {} dbLoadBalancerOptions: annotations: networking.gke.io/load-balancer-type: "internal" lb.company.com/enabled: "true" gcp: {} features: columnarSpillToDisk: cacheSize: 50Gi ultraFastCache: cacheSize: 100Gi # either generic volume or local volume genericVolume: storageClass: "local-storage" # localVolume: # path: "/mnt/disks/raid/0" # nodeAffinity: # required: # nodeSelectorTerms: # - matchExpressions: # - key: "cloud.google.com/gke-local-nvme-ssd" # operator: "In" # values: # - "true" googleMLExtension: config: vertexAIKeyRef: vertex-ai-key-alloydb # secret used to enable AlloyDB Omni to access AlloyDB AI features vertexAIRegion: us-central1 # default resources: cpu: "12" disks: - name: DataDisk size: 1000Gi storageClass: px-ceph - name: LogDisk size: 10Gi storageClass: px-ceph - name: ObsDisk size: 4Gi storageClass: px-ceph - name: BackupDisk size: 10Gi storageClass: px-ceph memory: 100Gi walArchiveSetting: location: wal/log # enable WAL archiving and archive logs to /archive/wal/log sidecarRef: name: cv-sidecar-config # provide a sidecar config that is referenced here parameters: google_columnar_engine.enabled: "on" google_columnar_engine.memory_size_in_mb: "256" google_storage.parallel_log_replay_enabled: 'off' google_pg_auth.enable_auth: 'false' shared_preload_libraries: "pg_cron,pg_bigm3" archive_mode: 'on' archive_timeout: '300' work_mem: '4MB' # operator default values # shared_preload_libraries='g_stats,google_columnar_engine,google_db_advisor,google_job_scheduler,pg_stat_statements,pglogical,pgaudit' log_rotation_age: "2" # rotate every two minutes. Set to "0" to disable age-based rotation. If unset, no age-based rotation log_rotation_size: "400000" # rotate every 400,000kb. set to "0" to disable size-based rotation. If unset, rotate every 200,000kb schedulingconfig: tolerations: - effect: NoSchedule key: alloydb-node-type operator: Exists nodeaffinity: # requiredDuringSchedulingIgnoredDuringExecution: strong condition, not being able to meet this would stop pods being scheduled preferredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: alloydb-node-type operator: In values: - database podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "kubernetes.io/hostname" podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: "topology.kubernetes.io/zone" services: Logging: true Monitoring: true --- apiVersion: v1 kind: PersistentVolume metadata: name: "example-local-pv" spec: capacity: storage: 375Gi accessModes: - "ReadWriteOnce" persistentVolumeReclaimPolicy: "Retain" storageClassName: "local-storage" local: path: "/mnt/disks/raid/0" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: # following example key applies to an operator that is deployed on # Google Cloud and uses the local ssd option - key: "cloud.google.com/gke-local-nvme-ssd" operator: "In" values: - "true" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBInstance metadata: name: dbcluster-sample-rp-1 spec: instanceType: ReadPool dbcParent: name: dbcluster-sample nodeCount: 2 resources: memory: 6Gi cpu: 2 disks: - name: DataDisk size: 15Gi schedulingconfig: tolerations: - key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "NoSchedule" nodeaffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: another-node-label-key operator: In values: - another-node-label-value podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "kubernetes.io/hostname" podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: "topology.kubernetes.io/zone"
Parametri personalizzati
Configura i parametri PostgreSQL personalizzati.
Visualizza la configurazione YAML dei parametri personalizzati
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi parameters: google_columnar_engine.enabled: "on" google_columnar_engine.memory_size_in_mb: "256"
Deployment basati su Debian
Specifica un'immagine del sistema operativo Debian di base.
Visualizza la configurazione YAML dei deployment basati su Debian
# This is a minimal DBCluster spec. See v1_dbcluster_full.yaml for more configurations. apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" databaseImageOSType: Debian primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Deployment basati su UBI9
Specifica un'immagine di base universale Red Hat 9 (UBI 9) di base.
Visualizza la configurazione YAML dei deployment basati su UBI9
# This is a minimal DBCluster spec. See v1_dbcluster_full.yaml for more configurations. apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" databaseImageOSType: UBI9 primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Opzioni di pianificazione dei pod
Configura l'affinità dei nodi, le tolleranze e i comportamenti di pianificazione.
Visualizza la configurazione YAML delle opzioni di pianificazione dei pod
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" availability: numberOfStandbys: 1 enableStandbyAsReadReplica: true primarySpec: schedulingconfig: topologySpreadConstraints: - maxSkew: 1 topologyKey: "topology.kubernetes.io/zone" whenUnsatisfiable: DoNotSchedule adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Alta affidabilità e scalabilità
Distribuisci il traffico e garantisci tempi di inattività nulli o minimi.
DBCluster ad alta disponibilità
Configura più repliche per l'alta affidabilità.
Visualizza la configurazione YAML di DBCluster ad alta disponibilità
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" availability: numberOfStandbys: 1 enableStandbyAsReadReplica: true primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
DBCluster con bilanciatore del carico
Espone gli endpoint di lettura/scrittura utilizzando il bilanciamento del carico del servizio.
Visualizza la configurazione YAML di DBCluster con bilanciatore del carico
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi dbLoadBalancerOptions: annotations: # Creates internal LoadBalancer in GKE. networking.gke.io/load-balancer-type: "internal" allowExternalIncomingTraffic: true
Istanza del pool di lettura
Aggiungi istanze del pool di sola lettura per scalare le operazioni di lettura.
Visualizza la configurazione YAML dell'istanza del pool di lettura
apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBInstance metadata: name: dbcluster-sample-rp-1 spec: instanceType: ReadPool dbcParent: name: dbcluster-sample nodeCount: 2 resources: memory: 6Gi cpu: 2 disks: - name: DataDisk size: 15Gi schedulingconfig: tolerations: - key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "NoSchedule" nodeaffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: another-node-label-key operator: In values: - another-node-label-value podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - store topologyKey: "kubernetes.io/hostname" podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: "topology.kubernetes.io/zone"
Sicurezza e gestione dei secret
Proteggi chiavi, certificati e credenziali del cluster.
Autorità di certificazione
Configura le autorità di certificazione TLS personalizzate.
Visualizza la configurazione YAML delle autorità di certificazione
# This is a minimal DBCluster spec. See v1_dbcluster_full.yaml for more configurations. apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: tls: dataPlaneCertIssuer: name: data-plane-issuer kind: ClusterIssuer controlPlaneAgentsCertIssuer: name: control-plane-issuer kind: ClusterIssuer dataPlaneCertRequest: commonName: database.dbcluster-sample.com dnsNames: - database.dbcluster-sample.com - database-alt.dbcluster-sample.com duration: 240h0m0s renewBefore: 120h0m0s privateKey: rotationPolicy: Always algorithm: RSA size: 8192 controlPlaneAgentsCertRequest: duration: 240h0m0s renewBefore: 120h0m0s privateKey: rotationPolicy: Always algorithm: RSA size: 8192 adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Integrazione di Vault
Recupera e proteggi i secret utilizzando HashiCorp Vault.
Visualizza la configurazione YAML dell'integrazione di Vault
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: # dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 dbcluster-sample: "ZGhhcm1hbGluZ2Ft" --- apiVersion: v1 kind: Secret metadata: name: alloydbadmin-pw-dbcluster-sample type: Opaque data: # dbcluster-sample: "Q2hhbmdlTWUxMjM=" dbcluster-sample: "ZGhhcm1hbGluZ2Ft" # dbcluster-sample: "YXJhdmluZGFuCg==" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" # availability: # numberOfStandbys: 1 # enableStandbyAsReadReplica: true primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample systemUserPasswordRefs: alloydbadmin: alloydbadmin-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi parameters: omni_password_provider: "/samwise-scripts/credfetcher"
Replica primaria-replica di standby
Configura la replica tra i database upstream (primario) e downstream (di standby).
Configurazione upstream (primaria)
Configura il nodo primario per pubblicare le modifiche.
Visualizza la configurazione YAML della configurazione upstream (primaria)
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: replication-upstream-sample spec: dbcluster: name: dbcluster-sample upstream: {}
Configurazione downstream (di standby)
Configura le destinazioni di replica per la sincronizzazione da un nodo primario.
Visualizza la configurazione YAML della configurazione downstream (di standby)
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Replication metadata: name: replication-downstream-sample spec: dbcluster: name: dbcluster-sample downstream: host: "10.10.10.10" port: 5432 username: alloydbreplica password: name: "ha-rep-pw-dbcluster-sample" replicationSlotName: "dbcluster_sample_replication_upstream_sample" control: setup # to promote downstream, change control to promote
Backup, ripristino e clonazione
Gestisci ripristino di emergenza, le copie dei dati on demand e le pianificazioni.
Piano di backup pianificato
Pianifica backup completi e incrementali.
Visualizza la configurazione YAML del piano di backup pianificato
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: backupplan1 spec: dbclusterRef: dbcluster-sample backupRetainDays: 14 paused: false backupSchedules: # Full backup at 00:00 on every Sunday. full: "0 0 * * 0" # Incremental backup at 21:00 every day. incremental: "0 21 * * *"
Backup in Cloud Storage
Archivia i backup in modo sicuro in un bucket Cloud Storage.
Visualizza la configurazione YAML del backup in Cloud Storage
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: backupplan1 namespace: db spec: dbclusterRef: dbcluster-sample backupRetainDays: 14 paused: false backupSchedules: # Full backup at 00:00 on every Sunday. full: "0 0 * * 0" # Incremental backup at 21:00 every day. incremental: "0 21 * * *" backupLocation: type: GCS gcsOptions: bucket: dbcluster-sample-backups key: /backup # You can optionally provide a key for accessing your GCS bucket. # The key.json needs to be base64 encoded and stored in the given secret under data[key.json]. # Or comment out below, which will then use the GKE cluster service account # to access the GCS bucket (you need to make sure the service account has # the right permission to R/W the GCS bucket). secretRef: name: gcs-key namespace: db --- apiVersion: v1 kind: Secret metadata: name: gcs-key namespace: db data: key.json: | <paste your base64 encoded GCS key json here with 4 spaces for indentation>
Backup in Amazon S3
Archivia i backup in un bucket compatibile con Amazon S3.
Visualizza la configurazione YAML del backup in Amazon S3
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: backupplan1 namespace: db spec: dbclusterRef: dbcluster-sample backupRetainDays: 14 paused: false backupSchedules: # Full backup at 00:00 on every Sunday. full: "0 0 * * 0" # Incremental backup at 21:00 every day. incremental: "0 21 * * *" backupLocation: type: S3 s3Options: bucket: dbcluster-sample-backups-s3 key: /backup region: "us-east-1" endpoint: "https://s3.storage.com" secretRef: name: s3-access-secret namespace: db # You can optionally provide the cert to be used to connect to the S3 with TLS. # If not provided, TLS verification will be skipped. certRef: name: server-tls namespace: server-ns --- apiVersion: v1 kind: Secret metadata: namespace: db name: "s3-access-secret" type: Opaque data: # Update the following with your S3 access keys. access-key-id: "Q2hhbmdlTWUxMjM=" # access-key-id is ChangeMe123 access-key: "Q2hhbmdlTWUxMjM=" # access-key is ChangeMe123
Backup manuale on demand
Crea un singolo backup manuale.
Visualizza la configurazione YAML del backup manuale on demand
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Backup metadata: name: backup1 spec: dbclusterRef: dbcluster-sample backupPlanRef: backupplan1 manual: true physicalBackupSpec: backupType: full
Ripristino da backup
Recupera o crea un cluster da un backup archiviato.
Visualizza la configurazione YAML del ripristino da backup
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: restore1 spec: sourceDBCluster: dbcluster-sample backup: backup1
Clone del database
Clona i DBCluster standard.
Visualizza la configurazione YAML del clone del database
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: clone1 spec: sourceDBCluster: dbcluster-sample pointInTime: "2024-02-23T19:59:43Z" clonedDBClusterConfig: dbclusterName: new-dbcluster-sample
Operazioni e failover
Esegui transizioni di topologia sicure.
Cambio controllato
Promuovi una replica secondaria tramite un cambio pianificato senza perdita di dati.
Visualizza la configurazione YAML del cambio controllato
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Switchover metadata: name: switchover-sample spec: dbclusterRef: dbcluster-sample
Failover di disaster recovery
Gestisci scenari di ripristino di emergenza o failover non pianificati.
Visualizza la configurazione YAML del failover di disaster recovery
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Failover metadata: name: failover-sample spec: dbclusterRef: dbcluster-sample
Pool di connessioni (PgBouncer)
Configura gli strati del proxy del database utilizzando PgBouncer.
PgBouncer di base
Esegui il deployment di un componente aggiuntivo PgBouncer standard.
Visualizza la configurazione YAML di Pgbouncer di base
apiVersion: alloydbomni.dbadmin.goog/v1 kind: PgBouncer metadata: name: mypgbouncer spec: allowSuperUserAccess: true dbclusterRef: dbcluster-sample replicaCount: 1 parameters: pool_mode: transaction ignore_startup_parameters: extra_float_digits default_pool_size: "15" max_client_conn: "800" max_db_connections: "160" podSpec: resources: memory: 1Gi cpu: 1 image: "gcr.io/alloydb-omni/operator/g-pgbouncer:1.7.0" serviceOptions: type: "ClusterIP"
PgBouncer completo
Configura la regolazione avanzata, l'autorizzazione personalizzata e le sostituzioni del pool di connessioni.
Visualizza la configurazione YAML di Pgbouncer completo
apiVersion: alloydbomni.dbadmin.goog/v1 kind: PgBouncer metadata: name: mypgbouncer spec: allowSuperUserAccess: true dbclusterRef: dbcluster-sample replicaCount: 2 parameters: pool_mode: transaction ignore_startup_parameters: extra_float_digits default_pool_size: "15" max_client_conn: "800" max_db_connections: "160" podSpec: resources: memory: 1Gi cpu: 1 image: "gcr.io/alloydb-omni-staging/g-pgbouncer:1.4.0" schedulingconfig: nodeaffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: nodetype operator: In values: - pgbouncer serviceOptions: type: "LoadBalancer" loadBalancerSourceRanges: - "11.0.0.0/8" annotations: networking.gke.io/load-balancer-type: "internal"
Servizi integrati e sidecar
Migliora le funzionalità del database con machine learning, osservabilità e sidecar degli agenti personalizzati.
DBCluster con agente ML
Integra il sidecar del proxy ML locale o di Vertex AI.
Visualizza la configurazione YAML di DBCluster con agente ML
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: v1 kind: Secret metadata: name: vertex-ai-key-alloydb type: Opaque data: private-key.json: "" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: features: googleMLExtension: enabled: true config: vertexAIKeyRef: vertex-ai-key-alloydb vertexAIRegion: us-central1 adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Configurazione di osservabilità
Configura le metriche del cluster, incluse le query SQL personalizzate per raccogliere metriche specifiche del database e dell'applicazione definite dall'utente.
Visualizza la configurazione YAML della configurazione di osservabilità
apiVersion: alloydbomni.dbadmin.goog/v1 kind: ObservabilityConfig metadata: name: my-custom-metrics spec: dbClusterRefs: - dbcluster-sample customMetrics: resourceLimits: workMemory: "4MB" maxParallelWorkers: 0 #limits to 1 CPU core definitions: - metricGroup: querygroup_postgres database: "postgres" query: | SELECT datname, pg_database_size(datname) as db_size_bytes, (SELECT count(*) FROM pg_stat_activity WHERE datname = d.datname) as active_connections FROM pg_database d WHERE datname = 'postgres' metrics: - name: datname desc: "Database name" usage: label - name: db_size_bytes desc: "Size of the current database in bytes" usage: gauge - name: active_connections desc: "Number of active connections to the database" usage: gauge
Configurazione delle metriche di osservabilità estese
Estendi AlloyDB Omni con metriche PostgreSQL supplementari (come writer in background, WAL, I/O delle tabelle e metriche delle transazioni).
Visualizza la configurazione YAML delle metriche di osservabilità estese
# This ObservabilityConfig extends AlloyDB Omni with supplemental PostgreSQL metrics. # # Intent: # Provide operational visibility into background processes, WAL, table I/O, etc. # # Prometheus Naming Pattern: # alloydb_omni_custom_<metricGroup>_<metric_name> # # Example (bgwriter): # 'checkpoints_timed' in the 'bgwriter' group appears as: # alloydb_omni_custom_bgwriter_checkpoints_timed_total # apiVersion: alloydbomni.dbadmin.goog/v1 kind: ObservabilityConfig metadata: name: obs-extended-metrics spec: dbClusterRefs: - dbcluster-sample customMetrics: resourceLimits: workMemory: "4MB" maxParallelWorkers: 0 definitions: - metricGroup: bgwriter database: "postgres" query: | SELECT checkpoints_timed, checkpoints_req, checkpoint_write_time, checkpoint_sync_time, buffers_clean, maxwritten_clean, buffers_backend, buffers_backend_fsync, buffers_alloc FROM pg_stat_bgwriter metrics: - name: checkpoints_timed desc: "Scheduled checkpoints performed" usage: counter - name: checkpoints_req desc: "Requested checkpoints performed" usage: counter - name: checkpoint_write_time desc: "Total time writing files to disk during checkpoint (ms)" usage: counter - name: checkpoint_sync_time desc: "Total time syncing files to disk during checkpoint (ms)" usage: counter - name: buffers_clean desc: "Buffers written by the background writer" usage: counter - name: maxwritten_clean desc: "Times bgwriter stopped because it wrote too many buffers" usage: counter - name: buffers_backend desc: "Buffers written directly by backends" usage: counter - name: buffers_backend_fsync desc: "Times backends had to execute their own fsync calls" usage: counter - name: buffers_alloc desc: "Total buffers allocated" usage: counter - metricGroup: autovacuum database: "postgres" query: | SELECT count(*) as active_autovacuum_workers FROM pg_stat_activity WHERE backend_type = 'autovacuum worker' metrics: - name: active_autovacuum_workers desc: "Number of active autovacuum worker processes" usage: gauge - metricGroup: vacuum_progress database: "postgres" query: | SELECT phase, COUNT(*) AS num_in_phase FROM pg_stat_progress_vacuum GROUP BY phase metrics: - name: phase desc: "Current phase of the vacuum operation" usage: label - name: num_in_phase desc: "Number of vacuum operations in this phase" usage: gauge - metricGroup: user_tables database: "postgres" query: | SELECT SUM(seq_scan) AS total_seq_scan, SUM(seq_tup_read) AS total_seq_tup_read, SUM(idx_scan) AS total_idx_scan, SUM(idx_tup_fetch) AS total_idx_tup_fetch, SUM(n_tup_ins) AS total_n_tup_ins, SUM(n_tup_upd) AS total_n_tup_upd, SUM(n_tup_del) AS total_n_tup_del, SUM(n_live_tup) AS total_n_live_tup, SUM(n_dead_tup) AS total_n_dead_tup, SUM(n_mod_since_analyze) AS total_n_mod_since_analyze FROM pg_stat_user_tables metrics: - name: total_seq_scan desc: "Total sequential scans on user tables" usage: counter - name: total_seq_tup_read desc: "Total rows fetched by sequential scans" usage: counter - name: total_idx_scan desc: "Total index scans on user tables" usage: counter - name: total_idx_tup_fetch desc: "Total rows fetched by index scans" usage: counter - name: total_n_tup_ins desc: "Total rows inserted" usage: counter - name: total_n_tup_upd desc: "Total rows updated" usage: counter - name: total_n_tup_del desc: "Total rows deleted" usage: counter - name: total_n_live_tup desc: "Estimated live rows" usage: gauge - name: total_n_dead_tup desc: "Estimated dead rows" usage: gauge - name: total_n_mod_since_analyze desc: "Rows modified since last analyze" usage: counter - metricGroup: statio_user_tables database: "postgres" query: | SELECT SUM(heap_blks_read) AS total_heap_blks_read, SUM(heap_blks_hit) AS total_heap_blks_hit, SUM(idx_blks_read) AS total_idx_blks_read, SUM(idx_blks_hit) AS total_idx_blks_hit, SUM(toast_blks_read) AS total_toast_blks_read, SUM(toast_blks_hit) AS total_toast_blks_hit, SUM(tidx_blks_read) AS total_tidx_blks_read, SUM(tidx_blks_hit) AS total_tidx_blks_hit FROM pg_statio_user_tables metrics: - name: total_heap_blks_read desc: "Heap blocks read from disk" usage: counter - name: total_heap_blks_hit desc: "Heap blocks found in buffer cache" usage: counter - name: total_idx_blks_read desc: "Index blocks read from disk" usage: counter - name: total_idx_blks_hit desc: "Index blocks found in buffer cache" usage: counter - name: total_toast_blks_read desc: "TOAST blocks read from disk" usage: counter - name: total_toast_blks_hit desc: "TOAST blocks found in buffer cache" usage: counter - name: total_tidx_blks_read desc: "TOAST index blocks read from disk" usage: counter - name: total_tidx_blks_hit desc: "TOAST index blocks found in buffer cache" usage: counter - metricGroup: statio_user_indexes database: "postgres" query: | SELECT SUM(idx_blks_read) AS total_index_blks_read, SUM(idx_blks_hit) AS total_index_blks_hit FROM pg_statio_user_indexes metrics: - name: total_index_blks_read desc: "Total index blocks read from disk" usage: counter - name: total_index_blks_hit desc: "Total index blocks found in buffer cache" usage: counter - metricGroup: wal database: "postgres" query: | SELECT wal_records, wal_fpi, wal_bytes, wal_buffers_full, wal_write, wal_sync, wal_write_time, wal_sync_time FROM pg_stat_wal metrics: - name: wal_records desc: "Total WAL records generated" usage: counter - name: wal_fpi desc: "Total full page images generated" usage: counter - name: wal_bytes desc: "Total WAL generated in bytes" usage: counter - name: wal_buffers_full desc: "Number of times WAL buffers were full" usage: counter - name: wal_write desc: "Number of WAL writes to disk" usage: counter - name: wal_sync desc: "Number of WAL syncs to disk" usage: counter - name: wal_write_time desc: "Total time spent writing WAL (ms)" usage: counter - name: wal_sync_time desc: "Total time spent syncing WAL (ms)" usage: counter - metricGroup: stat_wal_receiver database: "postgres" query: | SELECT status, EXTRACT(EPOCH FROM (now() - last_msg_receipt_time)) AS receiver_lag_seconds FROM pg_stat_wal_receiver WHERE last_msg_receipt_time IS NOT NULL metrics: - name: status desc: "Status of the WAL receiver" usage: label - name: receiver_lag_seconds desc: "Seconds since last message from primary" usage: gauge - metricGroup: replication_slots database: "postgres" query: | SELECT slot_name, slot_type, active, pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn) AS retained_wal_bytes FROM pg_replication_slots metrics: - name: slot_name desc: "Name of the replication slot" usage: label - name: slot_type desc: "Type of replication slot" usage: label - name: active desc: "Is replication slot active" usage: gauge - name: retained_wal_bytes desc: "WAL bytes retained by slot" usage: gauge - metricGroup: database database: "postgres" query: | SELECT datname, numbackends, xact_commit, xact_rollback, blks_read, blks_hit, tup_returned, tup_fetched, tup_inserted, tup_updated, tup_deleted, conflicts, temp_files, temp_bytes, deadlocks, checksum_failures, blk_read_time, blk_write_time FROM pg_stat_database WHERE datname IS NOT NULL metrics: - name: datname desc: "Database name" usage: label - name: numbackends desc: "Connected backends" usage: gauge - name: xact_commit desc: "Transactions committed" usage: counter - name: xact_rollback desc: "Transactions rolled back" usage: counter - name: blks_read desc: "Disk blocks read" usage: counter - name: blks_hit desc: "Disk blocks found in cache" usage: counter - name: tup_returned desc: "Rows returned" usage: counter - name: tup_fetched desc: "Rows fetched" usage: counter - name: tup_inserted desc: "Rows inserted" usage: counter - name: tup_updated desc: "Rows updated" usage: counter - name: tup_deleted desc: "Rows deleted" usage: counter - name: conflicts desc: "Recovery conflicts" usage: counter - name: temp_files desc: "Temporary files created" usage: counter - name: temp_bytes desc: "Temporary file bytes" usage: counter - name: deadlocks desc: "Deadlocks detected" usage: counter - name: checksum_failures desc: "Data checksum failures" usage: counter - name: blk_read_time desc: "Time spent reading blocks (ms)" usage: counter - name: blk_write_time desc: "Time spent writing blocks (ms)" usage: counter - metricGroup: long_running_transactions database: "postgres" query: | SELECT COUNT(*) FILTER (WHERE now() - xact_start > INTERVAL '5 minutes') AS long_running_xact_count, COALESCE(EXTRACT(EPOCH FROM MAX(now() - xact_start)), 0) AS max_xact_age_seconds FROM pg_stat_activity WHERE backend_type = 'client backend' AND xact_start IS NOT NULL metrics: - name: long_running_xact_count desc: "Client transactions running > 5m" usage: gauge - name: max_xact_age_seconds desc: "Max transaction age in seconds" usage: gauge - metricGroup: stat_statements database: "postgres" query: | SELECT sum(calls) as total_calls, sum(total_exec_time) as total_exec_time_ms, sum(rows) as total_rows FROM pg_stat_statements metrics: - name: total_calls desc: "Total statement calls" usage: counter - name: total_exec_time_ms desc: "Total statement execution time (ms)" usage: counter - name: total_rows desc: "Total rows processed" usage: counter
Sidecar personalizzato
Inserisci i sidecar di assistenza standard nei pod del cluster.
Visualizza la configurazione YAML del sidecar personalizzato
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Sidecar metadata: name: sidecar-sample spec: sidecars: - image: busybox name: sidecar-sample volumeMounts: - name: obsdisk mountPath: /logs command: ["/bin/sh"] args: - -c - | while [ true ] do date set -x ls -lh /logs/diagnostic set +x done
DBCluster con sidecar personalizzato
Configura un DBCluster di base che includa i sidecar di assistenza standard.
Visualizza la configurazione YAML di DBCluster con sidecar personalizzato
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi sidecarRef: name: sidecar-sample
Sidecar di backup di Commvault
Specifica la configurazione dell'agente Commvault come sidecar helper.
Visualizza la configurazione YAML del sidecar di backup di Commvault
# Source: commvault/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: cvconfigmap data: CV_MASVCNAME: commvault-prod CV_CSHOSTNAME: "tipcs.idcprodcert.loc" CV_CSIPADDR: "123.123.123.123" CV_CSCLIENTNAME: "tipcs" CV_CLIENT_ROLE: "postgres" --- apiVersion: v1 kind: Secret metadata: name: commcell-secret data: CV_COMMCELL_USER: Y3ZhZG1pbgo= # commcell username is cvadmin CV_COMMCELL_PWD: Y3ZwYXNzd29yZAo= # commcell password is cvpassword --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: Sidecar metadata: name: cv-sidecar-config annotations: alloydbomni.dbadmin.goog/sidecar: commvault spec: sidecars: - name: "commvault-pgsqlagent" image: "commvault/accessnode:11.32.42" lifecycle: preStop: exec: command: [ "/bin/sh", "-c" , "cp /opt/commvault/Base/FwConfig* /etc/CommVaultRegistry/Galaxy/FwConfig/" ] envFrom: - configMapRef: name: cvconfigmap volumeMounts: - name: logdisk mountPath: /archive/ - name: tmp-socket mountPath: /tmp - name: commvault-env-store2 mountPath: /opt/cvdocker_env readOnly: true - name: backupdisk mountPath: /etc/CommVaultRegistry subPath: Registry - name: backupdisk mountPath: /var/log/commvault/Log_Files subPath: Log_Files - name: backupdisk mountPath: /opt/commvault/MediaAgent/IndexCache subPath: IndexCache - name: backupdisk mountPath: /opt/commvault/iDataAgent/jobResults subPath: jobResults - name: backupdisk mountPath: /opt/commvault/Base/certificates subPath: certificates - name: datadisk mountPath: /mnt/disks/pgsql - name: commcell-secret mountPath: /opt/commcell_secret ports: - name: cvdport containerPort: 8400 securityContext: runAsUser: 0 additionalVolumes: - name: commcell-secret secret: secretName: commcell-secret - name: commvault-env-store2 configMap: name: cvconfigmap
DBCluster con sidecar di Commvault
Configura un DBCluster che specifichi un container sidecar helper dell'agente Commvault.
Visualizza la configurazione YAML di DBCluster con sidecar di Commvault
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "15.17.0" primarySpec: adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi - name: LogDisk size: 10Gi walArchiveSetting: location: wal/log # enable WAL archiving and archive logs to /archive/wal/log sidecarRef: name: cv-sidecar-config