Além dos buffers compartilhados na memória do PostgreSQL padrão, o cache de disco do AlloyDB Omni permite armazenar buffers em armazenamento rápido, como unidades de estado sólido (SSDs). O cache em disco acelera a recuperação de dados em instalações do AlloyDB Omni com diretórios de dados localizados em um armazenamento mais lento.
Assim como os buffers compartilhados do PostgreSQL, o cache de disco do AlloyDB Omni não é permanente, o que significa que os dados armazenados em cache são perdidos na reinicialização.
Por padrão, o cache de disco do AlloyDB Omni usa todo o armazenamento informado pelo sistema de arquivos. É possível definir a quantidade de armazenamento reservada para dados de cache usando o parâmetro omni_disk_cache_file_size
.
Ativar o cache de disco do AlloyDB Omni
Para ativar o cache de disco do AlloyDB Omni em um contêiner, siga estas etapas.
Provisionar discos e criar um sistema de arquivos
Para o cache de disco do AlloyDB Omni, crie um sistema de arquivos em um ou vários discos e ative-o em um contêiner com o AlloyDB Omni. Além disso, é possível usar utilitários como mdadm
ou lvm
para agrupar a capacidade usando vários discos e qualquer sistema de arquivos.
As etapas a seguir demonstram o uso de lvm
e ext4
em uma instância do Ubuntu Compute Engine usando SSDs NVMe.
Crie um grupo de volumes com todos os dispositivos físicos disponíveis:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Substitua:
STORAGE_PREFIX
: o prefixo do caminho dos discos locais de destino anexados a uma máquina virtual usando a interface nonvolatile memory express (NVMe). Por exemplo, em Google Cloud, os caminhos de dispositivos NVMe sempre começam com/dev/nvme0n
.VOLUME_GROUP
: o nome de um grupo de volumes em que seus SSDs estão combinados. Por exemplo,omni-disk-cache-volume
.
-
Para criar um volume lógico com a capacidade livre do grupo de volumes da etapa anterior, use o seguinte comando:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Substitua
LOGICAL_VOLUME
pelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo,omni_disk_cache_device
. - Crie o sistema de arquivos
ext4
no volume lógico. Se necessário, especifique outras opções deext4
sujeitas à segurança de dados.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Para criar um diretório que sirva como ponto de montagem na máquina host e ative o sistema de arquivos, use o seguinte comando:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
Substitua
OMNI_DISK_CACHE_DIRECTORY
pelo nome do diretório ou um caminho para o diretório que serve como um ponto de montagem, por exemplo,omni_disk_cache_directory
.
Monte o diretório de cache no AlloyDB Omni
Antes de ativar o cache de disco para o AlloyDB Omni em execução em um contêiner, é necessário montar o diretório de cache dentro do AlloyDB Omni.
Para informações sobre como instalar o AlloyDB Omni de uma imagem do Docker e personalizar, consulte Personalizar a instalação do AlloyDB Omni.
Para montar o OMNI_DISK_CACHE_DIRECTORY
dentro do contêiner do Docker que executa o AlloyDB Omni, use o seguinte 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_INSIDE_CONTAINER
-d google/alloydbomni
Substitua:
CONTAINER_NAME
: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo,my-omni
.PASSWORD
: a senha do administrador raiz do banco de dados PostgreSQL.DATA_DIR
: o caminho do sistema de arquivos que você quer que o AlloyDB Omni use para o diretório de dados.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner,/omni_disk_cache_directory
, semelhante aOMNI_DISK_CACHE_DIRECTORY
, ou/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_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
Substitua:
CONTAINER_NAME
: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo,my-omni
.PASSWORD
: a senha do administrador raiz do banco de dados PostgreSQL.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner,/omni_disk_cache_directory
, semelhante aOMNI_DISK_CACHE_DIRECTORY
, ou/disk/cache/inside/container
.
Para conceder permissões de acesso total ao OMNI_DISK_CACHE_DIRECTORY
montado, use os seguintes comandos:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Ativar o cache de disco do AlloyDB Omni
Para ativar o cache de disco do AlloyDB Omni no seu banco de dados, defina os parâmetros apropriados da configuração unificada geral (GUC, na sigla em inglês) depois de verificar se o diretório de cache montado está acessível de dentro do contêiner do Docker.
-
Para se conectar ao banco de dados em contêiner do AlloyDB Omni como superusuário, use o seguinte comando:
Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
Podman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
-
Para definir o valor dos parâmetros, use os seguintes comandos no banco de dados do AlloyDB Omni:
alter system set omni_disk_cache_enabled=on; alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
-
Por padrão, o AlloyDB Omni usa todo o espaço disponível no sistema de arquivos. Se necessário, substitua o valor padrão usando o parâmetro
omni_disk_cache_file_size
.alter system set omni_disk_cache_file_size=SIZE_IN_MB;
-
Para que a mudança nos parâmetros de configuração de cache entre em vigor, reinicie o contêiner em execução com o AlloyDB Omni:
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Verificar a configuração do cache de disco
Depois de ativar o cache de disco do AlloyDB Omni, verifique se ele está sendo acessado monitorando a atividade de leitura e gravação nos discos usando utilitários como iotop
ou iostat
.
Além disso, você pode verificar se o cache de disco do AlloyDB Omni está aberto.
Para verificar a configuração do cache de disco do AlloyDB Omni em um contêiner, siga estas etapas:
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"
Se o cache de disco estiver configurado corretamente, a mensagem "Successfully opened omni disk cache ..." vai aparecer nos registros.
A seguir
- Sobre o gerenciamento automático de memória
- Sobre discos SSD locais
- Como criar e iniciar uma instância de VM