Además de los búferes compartidos en memoria de PostgreSQL estándar, la memoria caché del disco de AlloyDB Omni permite almacenar búferes en un almacenamiento rápido, como unidades de estado sólido (SSD). El almacenamiento en caché de disco acelera la recuperación de datos en las instalaciones de AlloyDB Omni con directorios de datos ubicados en un almacenamiento más lento.
Al igual que los búferes compartidos de PostgreSQL, la memoria caché del disco de AlloyDB Omni no es persistente, lo que significa que los datos almacenados en caché se pierden cuando se reinicia.
De forma predeterminada, la memoria caché del disco de AlloyDB Omni usa todo el almacenamiento que informa el sistema de archivos. Puedes definir la cantidad de almacenamiento reservado para almacenar datos en caché con el parámetro omni_disk_cache_file_size.
Habilita la memoria caché del disco de AlloyDB Omni
Para habilitar la memoria caché del disco, completa todas las siguientes subsecciones:
- Aprovisiona discos y crea un sistema de archivos
- Activa el directorio de caché dentro de AlloyDB Omni
- Habilita la memoria caché del disco de AlloyDB Omni para AlloyDB Omni que se ejecuta en un contenedor
Aprovisiona discos y crea un sistema de archivos
Para la memoria caché del disco de AlloyDB Omni, crea un sistema de archivos en un disco o varios discos y lo activa. Además, puedes usar utilidades como mdadm o lvm para agrupar la capacidad con varios discos y usar cualquier sistema de archivos.
En los siguientes pasos, se muestra el uso de lvm y ext4 en una instancia de Compute Engine de Ubuntu con SSD NVMe.
Crea un grupo de volúmenes a partir de todos los dispositivos físicos disponibles:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Reemplaza lo siguiente:
STORAGE_PREFIX: Es el prefijo de la ruta de acceso de los discos locales de destino que se conectan a una máquina virtual con la interfaz de memoria no volátil express (NVMe). Por ejemplo, en Google Cloud, las rutas de acceso del dispositivo NVMe siempre comienzan con/dev/nvme0n.VOLUME_GROUP: Es el nombre de un grupo de volúmenes en el que se combinan tus SSD, por ejemplo,omni-disk-cache-volume.
-
Para crear un volumen lógico a partir de la capacidad libre del grupo de volúmenes del paso anterior, usa el siguiente comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Reemplaza
LOGICAL_VOLUMEpor el nombre de un volumen lógico que LVM trata como una partición, por ejemplo,omni_disk_cache_device. - Crea el sistema de archivos
ext4en el volumen lógico. Si es necesario, puedes especificar otras opciones deext4sujetas a la seguridad de los datos.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Para crear un directorio que sirva como punto de activación en la máquina anfitrión y activar el sistema de archivos, usa el siguiente comando:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
Reemplaza
OMNI_DISK_CACHE_DIRECTORYpor el nombre del directorio o una ruta de acceso al directorio que sirve como punto de activación, por ejemplo,omni_disk_cache_directory.
Activa el directorio de caché dentro de AlloyDB Omni
Antes de habilitar la memoria caché del disco para AlloyDB Omni que se ejecuta en un contenedor, debes activar el directorio de caché dentro de AlloyDB Omni.
Para obtener información sobre cómo instalar AlloyDB Omni desde una imagen de Docker y personalizarla, consulta Personaliza tu instalación de AlloyDB Omni.
Para activar OMNI_DISK_CACHE_DIRECTORY dentro de tu contenedor de Docker que ejecuta AlloyDB Omni, usa el siguiente comando:
Docker
sudo docker run --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=PASSWORD \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v DATA_DIR:/var/lib/postgresql/data \ -v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH \ -d google/alloydbomni
Reemplaza lo siguiente:
CONTAINER_NAME: Es el nombre que se asignará al nuevo contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del administrador raíz de tu base de datos de PostgreSQL.DATA_DIR: Es la ruta de acceso del sistema de archivos que deseas que AlloyDB Omni use para su directorio de datos.CACHE_DIRECTORY_PATH: Es el directorio de caché dentro del contenedor de AlloyDB Omni que se asigna al punto de activación en la máquina anfitrión, por ejemplo, según el valor del directorio de caché dentro del contenedor, ya sea/omni_disk_cache_directory, similar aOMNI_DISK_CACHE_DIRECTORY, o/disk/cache/inside/container.
Podman
podman run --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=PASSWORD \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v DATA_DIR:/var/lib/postgresql/data \ -v /OMNI_DISK_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH \ -d docker.io/google/alloydbomni
Reemplaza lo siguiente:
CONTAINER_NAME: Es el nombre que se asignará al nuevo contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del administrador raíz de tu base de datos de PostgreSQL.CACHE_DIRECTORY_PATH: Es el directorio de caché dentro del contenedor de AlloyDB Omni que se asigna al punto de activación en la máquina anfitrión, por ejemplo, según el valor del directorio de caché dentro del contenedor, ya sea/omni_disk_cache_directory, similar aOMNI_DISK_CACHE_DIRECTORY, o/disk/cache/inside/container.
Para otorgar permisos de acceso completo al OMNI_DISK_CACHE_DIRECTORY activado, usa los siguientes comandos:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /OMNI_DISK_CACHE_DIRECTORY
sudo docker exec -it CONTAINER_NAME chmod -R a+rw /OMNI_DISK_CACHE_DIRECTORY
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /OMNI_DISK_CACHE_DIRECTORY
sudo podman exec -it CONTAINER_NAME chmod -R a+rw /OMNI_DISK_CACHE_DIRECTORY
Habilita la memoria caché del disco
Para habilitar el almacenamiento en caché de disco para tu base de datos, completa los siguientes pasos:
Conéctate a tu base de datos como
SUPERUSER.Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgresPodman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgresConfigura las marcas de configuración unificada general (GUC)
omni_disk_cache_enabledyomni_disk_cache_directory.ALTER SYSTEM SET omni_disk_cache_enabled=on; ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';(Opcional) De forma predeterminada, AlloyDB Omni usa todo el espacio disponible en el sistema de archivos. Si es necesario, puedes anular este comportamiento actualizando la marca GUC
omni_disk_cache_file_size.ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;Reemplaza
SIZE_IN_MBpor la cantidad de espacio en disco, en MB, que deseas que use la memoria caché del disco.Reinicia AlloyDB Omni.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Verifica la configuración de la memoria caché del disco
Después de habilitar la caché de disco de AlloyDB Omni, verifica que se acceda a la caché de disco mediante la supervisión de la actividad de lectura y escritura en los discos con las utilidades disponibles, como iotop o iostat.
Además, puedes verificar si la memoria caché del disco de AlloyDB Omni está abierta.
Para verificar la configuración de la memoria caché del disco para AlloyDB Omni, usa el siguiente comando.
Docker
sudo docker logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"Podman
sudo podman logs CONTAINER_NAME 2>&1 | grep "opened omni disk cache"Si el almacenamiento en caché de disco está configurado correctamente, el mensaje Successfully opened omni disk cache ... se muestra en los registros.
¿Qué sigue?
- Acerca de la administración automática de memoria
- Acerca de los discos SSD locales
- Crea y, luego, inicia una instancia de VM