Zusätzlich zu den standardmäßigen gemeinsam genutzten In-Memory-Puffern von PostgreSQL ermöglicht der AlloyDB Omni-Festplatten-Cache das Speichern von Puffern auf schnellem Speicher wie Solid-State-Laufwerken (SSDs). Durch das Festplatten-Caching wird der Datenabruf in AlloyDB Omni-Installationen mit Datenverzeichnissen auf langsamerem Speicher beschleunigt.
Wie die freigegebenen Puffer von PostgreSQL ist der Festplatten-Cache von AlloyDB Omni nicht persistent. Das bedeutet, dass die im Cache gespeicherten Daten beim Neustart verloren gehen.
Standardmäßig verwendet der AlloyDB Omni-Festplatten-Cache den gesamten vom Dateisystem gemeldeten Speicher. Mit dem Parameter omni_disk_cache_file_size
können Sie die Menge an Speicherplatz definieren, die für das Zwischenspeichern von Daten reserviert ist.
AlloyDB Omni-Festplatten-Cache aktivieren
So aktivieren Sie den Festplatten-Cache für AlloyDB Omni in einem Container:
Laufwerke bereitstellen und ein Dateisystem erstellen
Für den AlloyDB Omni-Festplatten-Cache erstellen Sie ein Dateisystem auf einer oder mehreren Festplatten und stellen es in einem Container mit AlloyDB Omni bereit. Außerdem können Sie Dienstprogramme wie mdadm
oder lvm
verwenden, um die Kapazität mit mehreren Festplatten zu bündeln und ein beliebiges Dateisystem zu verwenden.
In den folgenden Schritten wird die Verwendung von lvm
und ext4
auf einer Ubuntu Compute Engine-Instanz mit NVMe-SSDs veranschaulicht.
Erstellen Sie eine Volume-Gruppe aus allen verfügbaren physischen Geräten:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
Ersetzen Sie Folgendes:
STORAGE_PREFIX
: Das Präfix des Pfads der lokalen Ziellaufwerke, die über die NVMe-Schnittstelle (Nonvolatile Memory Express) an eine VM angehängt sind. Auf Google Cloudbeginnen die NVMe-Gerätepfade beispielsweise immer mit/dev/nvme0n
.VOLUME_GROUP
: Der Name einer Volumegruppe, in der Ihre SSDs kombiniert sind, z. B.omni-disk-cache-volume
.
-
Verwenden Sie den folgenden Befehl, um ein logisches Volume aus der freien Kapazität der Volumegruppe aus dem vorherigen Schritt zu erstellen:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Ersetzen Sie
LOGICAL_VOLUME
durch den Namen eines logischen Volumes, das vom LVM als Partition behandelt wird, z. B.omni_disk_cache_device
. - Erstellen Sie das
ext4
-Dateisystem auf dem logischen Volume. Bei Bedarf können Sie weitereext4
-Optionen angeben, die der Datensicherheit unterliegen.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
Verwenden Sie den folgenden Befehl, um ein Verzeichnis als Bereitstellungspunkt auf dem Hostcomputer zu erstellen und das Dateisystem bereitzustellen:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
Ersetzen Sie
OMNI_DISK_CACHE_DIRECTORY
durch den Namen des Verzeichnisses oder einen Pfad zu dem Verzeichnis, das als Mount-Point dient, z. B.omni_disk_cache_directory
.
Cache-Verzeichnis in AlloyDB Omni bereitstellen
Bevor Sie den Festplatten-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird, müssen Sie das Cache-Verzeichnis in AlloyDB Omni einbinden.
Informationen zum Installieren von AlloyDB Omni über ein Docker-Image und zum Anpassen der Installation finden Sie unter AlloyDB Omni-Installation anpassen.
Verwenden Sie den folgenden Befehl, um OMNI_DISK_CACHE_DIRECTORY
in Ihrem Docker-Container mit AlloyDB Omni zu mounten:
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
Ersetzen Sie Folgendes:
CONTAINER_NAME
: Der Name, der dem neuen AlloyDB Omni-Container zugewiesen werden soll, z. B.my-omni
.PASSWORD
: Das Passwort für den PostgreSQL-Datenbank-Root-Administrator.DATA_DIR
: Der Dateisystempfad, den AlloyDB Omni für das Datenverzeichnis verwenden soll.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: Das Cache-Verzeichnis im AlloyDB Omni-Container, das dem Mount-Point auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cache-Verzeichnisses im Container entweder/omni_disk_cache_directory
, ähnlich wieOMNI_DISK_CACHE_DIRECTORY
, oder/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
Ersetzen Sie Folgendes:
CONTAINER_NAME
: Der Name, der dem neuen AlloyDB Omni-Container zugewiesen werden soll, z. B.my-omni
.PASSWORD
: Das Passwort für den PostgreSQL-Datenbank-Root-Administrator.CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
: Das Cache-Verzeichnis im AlloyDB Omni-Container, das dem Mount-Point auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cache-Verzeichnisses im Container entweder/omni_disk_cache_directory
, ähnlich wieOMNI_DISK_CACHE_DIRECTORY
, oder/disk/cache/inside/container
.
Verwenden Sie die folgenden Befehle, um dem eingebundenen OMNI_DISK_CACHE_DIRECTORY
vollständige Zugriffsrechte zu gewähren:
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
AlloyDB Omni-Festplatten-Cache aktivieren
Wenn Sie den AlloyDB Omni-Festplatten-Cache für Ihre Datenbank aktivieren möchten, legen Sie die entsprechenden GUC-Parameter (Grand Unified Configuration) fest, nachdem Sie dafür gesorgt haben, dass das bereitgestellte Cache-Verzeichnis aus dem Docker-Container heraus zugänglich ist.
-
Verwenden Sie den folgenden Befehl, um als Superuser eine Verbindung zur containerisierten AlloyDB Omni-Datenbank herzustellen:
Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
Podman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
-
Verwenden Sie die folgenden Befehle in der AlloyDB Omni-Datenbank, um die Werte der Parameter festzulegen:
alter system set omni_disk_cache_enabled=on; alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
-
Standardmäßig verwendet AlloyDB Omni den gesamten verfügbaren Speicherplatz im Dateisystem. Bei Bedarf können Sie den Standardwert mit dem Parameter
omni_disk_cache_file_size
überschreiben.alter system set omni_disk_cache_file_size=SIZE_IN_MB;
-
Damit die Änderungen an den Caching-Konfigurationsparametern wirksam werden, starten Sie den laufenden Container mit AlloyDB Omni neu:
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Festplatten-Cache-Konfiguration prüfen
Nachdem Sie den AlloyDB Omni-Festplatten-Cache aktiviert haben, prüfen Sie, ob auf den Festplatten-Cache zugegriffen wird. Dazu können Sie die Lese- und Schreibaktivitäten auf den Festplatten mit Dienstprogrammen wie iotop
oder iostat
überwachen.
Außerdem können Sie prüfen, ob der AlloyDB Omni-Festplattencache geöffnet ist.
So prüfen Sie die Konfiguration des Festplatten-Cache für AlloyDB Omni in einem Container:
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"
Wenn das Festplatten-Caching richtig konfiguriert ist, wird die Meldung Successfully opened omni disk cache ...
in den Logs angezeigt.