DBCluster). Usa estas recomendaciones de tamaño para configurar tus volúmenes cuando realices la implementación en Kubernetes con el operador de Kubernetes de AlloyDB Omni.
Cuando creas un recurso personalizado DBCluster, el operador de AlloyDB Omni aprovisiona PVC de Kubernetes según los discos que definas en los siguientes campos:
- Instancias principales y en espera de alta disponibilidad (HA): Se configuran en el campo
spec.primarySpec.resources.disksde tu recurso personalizadoDBCluster. Si habilitas la alta disponibilidad configurando el campospec.availability.numberOfStandbys, cada réplica en espera usará la misma configuración de disco que la instancia principal. - Instancias de grupo de lectura: Se configuran en
spec.resources.disksen cadaDBInstancerecurso personalizado en el queinstanceTypese establece enReadPool. Si omites la secciónspec.resourcesen un recursoDBInstance, la instancia del grupo de lectura hereda la configuración del disco del campospec.primarySpec.resourcesdel recursoDBClusterprincipal.
Volúmenes de PVC admitidos
El operador de AlloyDB Omni no aprovisiona todos los volúmenes de PVC al mismo tiempo:
- Siempre aprovisionado: El operador siempre aprovisiona
DataDisk,ObsDisk,BackupDiskyLogDiskpara todos los Pods de instancias de bases de datos principales, en espera de alta disponibilidad y de grupos de lectura. Debes especificar de forma explícitaDataDisky su tamaño en el manifiesto. EspecificarObsDisk,BackupDiskyLogDisken tu manifiesto es opcional. Si los omites, como se muestra en el manifiesto de instalación básico, el operador aún aprovisiona estos PVC con sus tamaños predeterminados. - No se aprovisiona de forma predeterminada: El operador no aprovisiona el volumen
BackupRepoDiskcuando creas un recursoDBClusterindependiente o cuando almacenas copias de seguridad en Cloud Storage o Amazon S3. Aprovisiona el Pod del repositorio de copias de seguridad y su PVCBackupRepoDisksolo cuando crea un recursoBackupPlanpara almacenar copias de seguridad de forma local en su clúster de Kubernetes (es decir, un recursoBackupPlansin un campobackupLocationremoto).
En la siguiente tabla, se describen los volúmenes persistentes que administra el operador de AlloyDB Omni:
| Nombre del disco | Ruta de activación | Pod objetivo | Configuración del manifiesto | Comportamiento del aprovisionamiento | Objetivo |
|---|---|---|---|---|---|
DataDisk |
/mnt/disks/pgsql |
Pod de base de datos | Obligatorio | Siempre se aprovisiona para cada Pod de base de datos. | Almacena el directorio del clúster de la base de datos de PostgreSQL (PGDATA), las tablas, los índices, los archivos temporales y los segmentos activos del registro de escritura anticipada (WAL). |
ObsDisk |
/obs |
Pod de base de datos | Opcional (valor predeterminado: 2Gi) |
Siempre se aprovisiona para cada Pod de base de datos. | Almacena datos de observabilidad, incluidos los registros del servidor de PostgreSQL (postgresql.log), los registros de pgAudit (postgresql.audit), los registros internos (postgresql.internal) y los archivos de registros .gz rotados. |
BackupDisk |
/backup |
Pod de base de datos | Opcional (valor predeterminado: 10Gi) |
Siempre se aprovisiona para cada Pod de base de datos. | Proporciona un directorio de preparación local para las operaciones de copia de seguridad en el Pod de la base de datos. |
LogDisk |
/archive |
Pod de base de datos | Opcional (valor predeterminado: 2Gi) |
Siempre se aprovisiona para cada Pod de base de datos. | Proporciona un destino de archivo WAL dedicado para los sidecars de copias de seguridad personalizados o de terceros. Si no usas un sidecar de archivado de WAL personalizado, puedes omitir este disco de tu manifiesto y dejarlo en su tamaño predeterminado de 2Gi. |
BackupRepoDisk |
/backup |
Pod del repositorio de copias de seguridad | Opcional (valor predeterminado: 10Gi) |
No se aprovisiona de forma predeterminada. Se aprovisiona solo cuando un recurso de BackupPlan almacena copias de seguridad de forma local (no se aprovisiona cuando no se configura ningún BackupPlan o cuando las copias de seguridad usan Cloud Storage o Amazon S3). |
Proporciona un volumen dedicado que almacena copias de seguridad físicas de la base de datos, copias de seguridad incrementales y copias de seguridad diferenciales, y archivos WAL archivados cuando usas copias de seguridad de almacenamiento local. |
Recomendaciones de tamaño de PVC
Usa los siguientes lineamientos para determinar el tamaño de cada volumen de PVC según tu carga de trabajo, la configuración de registro y la estrategia de copias de seguridad.
Volumen de DataDisk para el almacenamiento de la base de datos principal
El operador de AlloyDB Omni siempre aprovisiona el volumen DataDisk para cada Pod de base de datos, y debes especificar su tamaño de forma explícita en tu manifiesto. Para estimar la capacidad mínima de DataDisk, usa la siguiente fórmula:
DataDisk capacity = (initial_dataset_size + projected_growth + max_wal_size) * 1.30
Cuando determines el tamaño del volumen de DataDisk, ten en cuenta los siguientes factores:
- Sobrecarga de índices: Los índices de PostgreSQL y las tablas del catálogo del sistema suelen requerir entre un 20% y un 50% adicional de almacenamiento más allá de los datos sin procesar de la tabla.
- Espacio libre de WAL activo: Las transacciones de escritura de alto rendimiento acumulan archivos WAL en el directorio
pg_walhasta que se completan los puntos de control. Asigna suficiente almacenamiento para admitir el parámetro de base de datosmax_wal_sizeconfigurado (por lo general, de varios gigabytes a decenas de gigabytes, según tu carga de trabajo). Para ver o modificar parámetros de la base de datos, comomax_wal_size, consulta Configura parámetros de la base de datos. - Archivos temporales y operaciones de limpieza: Las operaciones de clasificación de consultas, creación de índices, reindexación y limpieza automática requieren espacio adicional en el disco temporal.
- Regla general de dimensionamiento: Asigna de 1.5 a 2 veces el tamaño de tu base de datos sin procesar, incluido un búfer de seguridad de al menos el 30%.
Volumen de ObsDisk para los registros de diagnóstico y auditoría
El operador de AlloyDB Omni siempre aprovisiona el volumen ObsDisk para cada Pod de base de datos (con el tamaño predeterminado 2Gi si lo omites de tu manifiesto). Si el volumen de ObsDisk se llena, PostgreSQL no puede escribir entradas de registro nuevas y la rotación del registro puede detenerse. Para obtener información sobre cómo configurar la rotación y la retención de registros para el volumen ObsDisk, consulta Configura la rotación de registros.
Cuando determines el tamaño del volumen de ObsDisk, ten en cuenta los siguientes lineamientos:
- Registro estándar: Un volumen de 4 a 10 GiB es suficiente para el registro operativo estándar con la configuración predeterminada de rotación del registro (umbral de rotación de 200 MB y retención de 7 días).
- Registros de auditoría (pgAudit): Cuando habilitas los registros de auditoría con pgAudit, se genera un volumen de registros significativamente mayor. Asigna entre 20 y 50 GiB, o más, según la tasa de consultas y el nivel de detalle de las reglas de auditoría.
Volumen BackupRepoDisk para el repositorio de copias de seguridad locales
A diferencia de los discos de Pod de la base de datos, BackupRepoDisk no se aprovisiona de forma predeterminada.
El operador de AlloyDB Omni aprovisiona el Pod del repositorio de copias de seguridad y su PVC BackupRepoDisk solo cuando creas un recurso BackupPlan para almacenar copias de seguridad de forma local en tu clúster de Kubernetes sin un campo backupLocation remoto. Si omites este disco de tu manifiesto DBCluster, se usará el tamaño predeterminado de 10Gi.
Si no configuras un recurso BackupPlan o si tu recurso BackupPlan usa Cloud Storage con el tipo GCS o Amazon S3 con el tipo S3, el operador no aprovisiona BackupRepoDisk. Para obtener más información sobre cómo configurar planes de copias de seguridad y cambiar el tamaño del almacenamiento de copias de seguridad, consulta Copia de seguridad y restablecimiento en Kubernetes y Cómo cambiar el tamaño de un disco de copia de seguridad.
Cuando almacenas copias de seguridad de forma local, el volumen BackupRepoDisk almacena copias de seguridad completas, diferenciales e incrementales comprimidas junto con archivos WAL archivados. El almacenamiento total requerido depende del tamaño de la base de datos, la tasa de cambio de datos diaria, el programa de copias de seguridad definido en backupSchedules y el período de retención establecido por backupRetainDays:
- Compresión de copias de seguridad: Las copias de seguridad comprimidas suelen usar entre el 37% y el 38% del tamaño de la base de datos sin comprimir, lo que representa una reducción del tamaño de entre el 62% y el 63%. Por ejemplo, una base de datos de 50 GiB se comprime a aproximadamente 18.5 GiB.
- Programa y retención de copias de seguridad: Combinar copias de seguridad completas semanales con copias de seguridad incrementales o diferenciales diarias requiere mucho menos almacenamiento que realizar copias de seguridad completas diarias.
En la siguiente tabla, se muestra el uso máximo de almacenamiento comparativo y el tamaño BackupRepoDisk recomendado (incluido un búfer del 20%) en diferentes programas de copias de seguridad para una base de datos de 100 GiB con una tasa de cambio de datos diaria del 10% y el período de retención predeterminado de 14 días (backupRetainDays: 14):
Programación de la copia de seguridad (backupSchedules) |
Copias de seguridad completas máximas | Copias de seguridad diferenciales | Copias de seguridad incrementales | Archivos WAL archivados | Almacenamiento máximo utilizado | Tamaño recomendado de BackupRepoDisk (búfer del 20%) |
|---|---|---|---|---|---|---|
| Copia de seguridad completa semanal y copias de seguridad incrementales diarias | 148.0 GiB | 0 GiB | 66.6 GiB | 155.4 GiB | 370.0 GiB | 444 GiB (aproximadamente 4.4 veces el tamaño de la base de datos) |
| Diferencial semanal completo y de mitad de semana, y datos incrementales diarios | 148.0 GiB | 22.2 GiB | 44.4 GiB | 155.4 GiB | 370.0 GiB | 444 GiB (aproximadamente 4.4 veces el tamaño de la base de datos) |
| Copia de seguridad completa semanal y diferencial diaria | 148.0 GiB | 155.4 GiB | 0 GiB | 155.4 GiB | 458.8 GiB | 551 GiB (aproximadamente 5.5 veces el tamaño de la base de datos) |
| Solo copia de seguridad completa diaria (programación predeterminada) | 592.0 GiB | 0 GiB | 0 GiB | 111.0 GiB | 703.0 GiB | 844 GiB (aproximadamente 8.4 veces el tamaño de la base de datos) |
Volumen BackupDisk para la etapa intermedia de la copia de seguridad del Pod de la base de datos
El operador de AlloyDB Omni siempre aprovisiona el volumen BackupDisk para cada Pod de base de datos con un tamaño predeterminado de 10 GiB (10Gi). AlloyDB Omni usa el volumen BackupDisk como un directorio de etapa de pruebas local durante las operaciones de copia de seguridad. Dado que el tamaño predeterminado de 10 GiB es suficiente para las operaciones estándar, puedes omitir BackupDisk de tu manifiesto de DBCluster para usar el tamaño predeterminado.
Volumen de LogDisk para el archivado de WAL personalizado
El operador de AlloyDB Omni siempre aprovisiona el volumen LogDisk para cada Pod de base de datos con un tamaño predeterminado de 2 GiB (2Gi). Solo debes especificar un tamaño personalizado para el volumen LogDisk si implementas un contenedor secundario personalizado o de terceros que archiva archivos WAL en el directorio /archive. En el caso de las implementaciones estándar del operador de AlloyDB Omni que usan copias de seguridad integradas, puedes omitir LogDisk de tu manifiesto de DBCluster y dejarlo en su tamaño predeterminado de 2Gi.
Referencia de tamaño por tamaño del conjunto de datos
En la siguiente tabla, se proporcionan los tamaños de PVC recomendados para los tamaños de conjuntos de datos sin procesar comunes:
| Tamaño de los datos sin procesar | Tamaño recomendado de DataDisk |
Tamaño recomendado de ObsDisk |
Tamaño recomendado de BackupRepoDisk (solo se aprovisiona para copias de seguridad locales) |
Tamaño recomendado de BackupDisk |
Tamaño recomendado de LogDisk |
|---|---|---|---|---|---|
| 50 GiB | 100 GiB | 4 GiB (de 10 a 20 GiB con pgAudit) | 150 GiB | 10 GiB (predeterminado) | 2 GiB (predeterminado) |
| 200 GiB | 400 GiB | 10 GiB (de 20 a 50 GiB con pgAudit) | 600 GiB | 10 GiB (predeterminado) | 2 GiB (predeterminado) |
| 500 GiB | 1,000 GiB (1 TiB) | 15 GiB (de 30 a 60 GiB con pgAudit) | 1,500 GiB (1.5 TiB) | 10 GiB (predeterminado) | 2 GiB (predeterminado) |
| 1 TiB | 2,000 GiB (2 TiB) | 20 GiB (de 50 a 100 GiB con pgAudit) | 3,000 GiB (3 TiB) | 10 GiB (predeterminado) | 2 GiB (predeterminado) |
Supervisa el uso del disco y las métricas de E/S
Puedes supervisar el uso del disco en tiempo real directamente dentro de los Pods de tu base de datos y repositorio de copias de seguridad con kubectl o recopilando las métricas de Prometheus que exporta AlloyDB Omni.
Verifica el uso del disco con kubectl
Para verificar el uso actual del espacio en el disco de los volúmenes de PVC montados dentro del Pod de la base de datos y el Pod del repositorio de copias de seguridad, ejecuta los siguientes comandos:
Obtén el nombre del Pod de la base de datos para tu recurso
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}')Reemplaza lo siguiente:
NAMESPACE: Es el espacio de nombres de Kubernetes en el que se implementa tu clúster de base de datos.DB_CLUSTER_NAME: Es el nombre de tu clúster de base de datos.
Ejecuta
df -hdentro del contenedor de la base de datos para ver la capacidad y el uso de los volúmenesDataDisk(/mnt/disks/pgsql),ObsDisk(/obs),BackupDisk(/backup) yLogDisk(/archive):kubectl exec -n NAMESPACE "${DB_POD}" -c database -- df -h /mnt/disks/pgsql /obs /backup /archiveSi configuraste un recurso
BackupPlanpara almacenar copias de seguridad de forma local, obtén el nombre del Pod del repositorio de copias de seguridad y ejecutadf -hpara ver la capacidad y el uso del volumenBackupRepoDisk(/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
Supervisa las métricas de almacenamiento con Prometheus
AlloyDB Omni exporta métricas de almacenamiento y de E/S de disco en el servicio al-INSTANCE_ID-DB_CLUSTER_NAME-monitoring-system (puerto 9187). Para obtener información sobre cómo recuperar y consultar estas métricas, consulta Supervisa AlloyDB Omni. Para obtener una lista completa de las métricas disponibles, consulta Métricas de AlloyDB Omni.
Supervisa las siguientes métricas de disco:
- Uso y capacidad de almacenamiento: Supervisa las métricas
alloydb_omni_node_storage_usage_per_disk_byteyalloydb_omni_node_storage_limit_per_disk_byte, que registran el uso del almacenamiento y la capacidad total en bytes para cada volumen con la etiquetadisk(por ejemplo,DataDisk,ObsDiskoBackupDisk). Configura alertas cuando el uso del disco alcance el 80% y el 90% de la capacidad para que puedas expandir los volúmenes antes de que se queden sin espacio. - Operaciones de E/S y capacidad de procesamiento del disco: Supervisa las métricas
alloydb_omni_node_storage_read_bytes_count_totalyalloydb_omni_node_storage_write_bytes_count_totalpara la capacidad de procesamiento de lectura y escritura del disco, y las métricasalloydb_omni_node_storage_read_ops_count_totalyalloydb_omni_node_storage_write_ops_count_totalpara las operaciones de E/S de lectura y escritura.
Cómo cambiar el tamaño de los PVC para un DBCluster existente
Si ya creaste un recurso DBCluster siguiendo los pasos de Crea un clúster de base de datos, es probable que tu manifiesto inicial solo haya especificado el volumen DataDisk (por ejemplo, 10Gi), mientras que el operador de AlloyDB Omni aprovisionó los volúmenes ObsDisk (2Gi), BackupDisk (10Gi) y LogDisk (2Gi) con sus tamaños predeterminados. Puedes expandir cualquiera de estos PVC actualizando tu manifiesto de DBCluster.
Antes de cambiar el tamaño de un PVC, revisa los siguientes requisitos y limitaciones:
- Expansión de volúmenes de StorageClass: Solo puedes aumentar el tamaño de un disco si su recurso
StorageClassde Kubernetes estableceallowVolumeExpansion: true. Para obtener más información, consulta Expande las reclamaciones de volúmenes persistentes. - Sin reducción ni cambios en StorageClass: No puedes disminuir el tamaño de un disco ni cambiar el campo
storageClassde un PVC existente después de que se aprovisiona. - Cambio de tamaño de discos predeterminados: Para expandir un disco que omitiste anteriormente en tu manifiesto (como el volumen
ObsDisko el volumenBackupRepoDisk), agrega una entrada para ese disco al campospec.primarySpec.resources.diskscon un camposizemás grande que su capacidad predeterminada actual. Siempre conservaDataDisky cualquier otra entrada de disco existente en la listadiskscuando actualices el manifiesto. - Comportamiento de reinicio del Pod: Cuando modificas el campo
resources.disks, el operador de AlloyDB Omni actualiza el PVC subyacente y reinicia el Pod de la instancia de la base de datos para aplicar la nueva especificación de recursos. Realiza la expansión del almacenamiento durante un período de mantenimiento planificado o configura la alta disponibilidad para minimizar el tiempo de inactividad.
Para inspeccionar y cambiar el tamaño de los PVC de tu DBCluster, sigue estos pasos:
Enumera los PVC en el espacio de nombres del clúster de la base de datos para verificar sus capacidades actuales y el recurso
StorageClass:kubectl get pvc -n NAMESPACEReemplaza
NAMESPACEpor el espacio de nombres en el que implementaste tuDBCluster(por ejemplo,default).El resultado es similar al siguiente para un clúster llamado
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 10mVerifica que el recurso
StorageClassque usan tus PVC admita la expansión de volumen:kubectl get storageclass STORAGE_CLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Reemplaza
STORAGE_CLASS_NAMEpor el nombre de la clase de almacenamiento de la columnaSTORAGECLASSdel resultado anterior (por ejemplo,standard-rwo). Confirma que el comando devuelvatrue.Actualiza el campo
spec.primarySpec.resources.disksen tu manifiestoDBClusterpara aumentar el valor desizedel volumenDataDisky agrega los discos de tamaño predeterminado que necesites expandir (como el volumenObsDisko el volumenBackupRepoDisk).En el siguiente manifiesto de ejemplo, se expande el volumen
DataDiska400Gi, se expande el volumenObsDiskde su valor predeterminado2Gia10Giy se configura el volumenBackupRepoDisken600Gipara una carga de trabajo de 200 GiB: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_NAMEReemplaza lo siguiente:
DB_CLUSTER_NAME: Es el nombre de tu clúster de base de datos, por ejemplo,my-db-cluster.NAMESPACE: Es el espacio de nombres de tu clúster de base de datos.STORAGE_CLASS_NAME: Es el nombre del recursoStorageClassde Kubernetes que usan tus volúmenes persistentes, por ejemplo,standard-rwo. Si omitiste el campostorageClasscuando creaste el clúster, puedes seguir omitiéndolo para que el operador use elStorageClasspredeterminado del clúster.
Aplica el manifiesto
DBClusteractualizado:kubectl apply -f DB_CLUSTER_MANIFEST.yamlReemplaza
DB_CLUSTER_MANIFESTpor la ruta de acceso a tu archivo de manifiestoDBCluster.Verifica que los PVC y el estado de
DBClusterreflejen los tamaños expandidos:kubectl get pvc -n NAMESPACETambién puedes inspeccionar el campo de estado
allocatedResources.disksen el recursoDBCluster:kubectl get dbcluster DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.allocatedResources.disks}{"\n"}'Reemplaza lo siguiente:
NAMESPACE: Es el espacio de nombres de tu clúster de base de datos.DB_CLUSTER_NAME: Es el nombre de tu clúster de base de datos.
Para obtener más información sobre cómo cambiar el tamaño de los recursos de procesamiento y almacenamiento, consulta Cambia el tamaño de tu clúster de bases de datos basado en Kubernetes.
¿Qué sigue?
- Instala AlloyDB Omni con el organizador de contenedores
- Administra y supervisa AlloyDB Omni
- Configura la rotación de registros
- Copia de seguridad y restauración en Kubernetes
- Administra la alta disponibilidad en Kubernetes
- Crea una instancia de grupo de lectura en Kubernetes