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 schnellen Speichermedien wie Solid-State-Laufwerken (SSDs). Durch das Zwischenspeichern auf dem Laufwerk wird der Datenabruf in AlloyDB Omni-Installationen mit Datenverzeichnissen auf langsameren Speichermedien beschleunigt.
Wie die freigegebenen Puffer von PostgreSQL ist der AlloyDB Omni-Laufwerk-Cache nicht persistent. Das bedeutet, dass die im Cache gespeicherten Daten beim Neustart verloren gehen.
Standardmäßig verwendet der AlloyDB Omni-Laufwerks-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-Laufwerks-Cache aktivieren
Führen Sie alle Schritte in den folgenden Unterabschnitten aus, um den Laufwerk-Cache zu aktivieren:
- Laufwerke bereitstellen und ein Dateisystem erstellen
- Cacheverzeichnis in AlloyDB Omni einbinden
- AlloyDB Omni-Laufwerks-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird
Laufwerke bereitstellen und ein Dateisystem erstellen
Für den AlloyDB Omni-Laufwerks-Cache erstellen Sie ein Dateisystem auf einer oder mehreren Festplatten und stellen es 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.
Die folgenden Schritte zeigen, wie Sie lvm und ext4 auf einer Ubuntu Compute Engine-Instanz mit NVMe-SSDs verwenden.
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 kostenlosen Kapazität der Volumegruppe aus dem vorherigen Schritt zu erstellen:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
Ersetzen Sie
LOGICAL_VOLUMEdurch 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 andereext4-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_DIRECTORYdurch den Namen des Verzeichnisses oder einen Pfad zu dem Verzeichnis, das als Bereitstellungspunkt dient, z. B.omni_disk_cache_directory.
Cacheverzeichnis in AlloyDB Omni einbinden
Bevor Sie den Laufwerk-Cache für AlloyDB Omni aktivieren, das in einem Container ausgeführt wird, müssen Sie das Cache-Verzeichnis in AlloyDB Omni einbinden.
Informationen zur Installation von AlloyDB Omni über ein Docker-Image und zur Anpassung finden Sie unter AlloyDB Omni-Installation anpassen.
Verwenden Sie den folgenden Befehl, um OMNI_DISK_CACHE_DIRECTORY in Ihrem Docker-Container mit AlloyDB Omni bereitzustellen:
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
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 sein Datenverzeichnis verwenden soll.CACHE_DIRECTORY_PATH: Das Cacheverzeichnis im AlloyDB Omni-Container, das dem Bereitstellungspunkt auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cacheverzeichnisses 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 \ -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: Das Cacheverzeichnis im AlloyDB Omni-Container, das dem Bereitstellungspunkt auf dem Hostcomputer zugeordnet ist, z. B. basierend auf dem Wert des Cacheverzeichnisses 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 /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
Laufwerk-Cache aktivieren
Führen Sie die folgenden Schritte aus, um das Laufwerk-Caching für Ihre Datenbank zu aktivieren:
Stellen Sie als
SUPERUSEReine Verbindung zu Ihrer Datenbank her.Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgresPodman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgresLegen Sie die GUC-Flags (Grand Unified Configuration)
omni_disk_cache_enabledundomni_disk_cache_directoryfest.ALTER SYSTEM SET omni_disk_cache_enabled=on; ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';(Optional) Standardmäßig verwendet AlloyDB Omni den gesamten verfügbaren Speicherplatz im Dateisystem. Bei Bedarf können Sie dies überschreiben, indem Sie das GUC-Flag
omni_disk_cache_file_sizeaktualisieren.ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;Ersetzen Sie
SIZE_IN_MBdurch die Menge an Speicherplatz in MB, die der Laufwerk-Cache verwenden soll.Starten Sie AlloyDB Omni neu.
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
Laufwerk-Cache-Konfiguration prüfen
Nachdem Sie den AlloyDB Omni-Laufwerks-Cache aktiviert haben, prüfen Sie, ob auf den Laufwerks-Cache zugegriffen wird. Dazu überwachen Sie die Lese- und Schreibaktivität auf den Laufwerken mit verfügbaren Dienstprogrammen wie iotop oder iostat.
Außerdem können Sie prüfen, ob der AlloyDB Omni-Laufwerks-Cache geöffnet ist.
Verwenden Sie den folgenden Befehl, um die Konfiguration des Laufwerk-Caches für AlloyDB Omni zu prüfen.
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 Laufwerk-Caching richtig konfiguriert ist, wird in den Logs die Successfully opened omni disk cache ... Meldung angezeigt.