בנוסף למאגרי הנתונים הזמניים המשותפים הרגילים בזיכרון של PostgreSQL, מטמון הדיסק של AlloyDB Omni מאפשר לאחסן מאגרי נתונים זמניים באחסון מהיר כמו כונני SSD. מטמון הדיסק מאיץ את אחזור הנתונים בהתקנות של AlloyDB Omni עם ספריות נתונים שנמצאות באחסון איטי יותר.
בדומה למאגרי נתונים זמניים משותפים של PostgreSQL, מטמון הדיסק של AlloyDB Omni הוא לא מתמיד, כלומר הנתונים שנשמרו במטמון אובדים בהפעלה מחדש.
כברירת מחדל, מטמון הדיסק של AlloyDB Omni משתמש בכל נפח האחסון שמדווח על ידי מערכת הקבצים. אפשר להגדיר את נפח האחסון ששמור לשמירת נתונים במטמון באמצעות הפרמטר omni_disk_cache_file_size.
הפעלת מטמון הדיסק של AlloyDB Omni
כדי להפעיל את מטמון הדיסק של AlloyDB Omni בקונטיינר:
הקצאת דיסקים ויצירת מערכת קבצים
כדי להשתמש במטמון הדיסק של AlloyDB Omni, יוצרים מערכת קבצים בדיסק אחד או בכמה דיסקים, ומחברים אותה בתוך קונטיינר עם AlloyDB Omni. בנוסף, אתם יכולים להשתמש בכלי שירות כמו mdadm או lvm כדי לאחד את הקיבולת של כמה דיסקים ולהשתמש בכל מערכת קבצים.
בשלבים הבאים מוסבר איך להשתמש ב-lvm וב-ext4 במכונה של Compute Engine עם מערכת ההפעלה Ubuntu, באמצעות כונני NVMe SSD.
יוצרים קבוצת אמצעי אחסון מכל המכשירים הפיזיים הזמינים:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
מחליפים את מה שכתוב בשדות הבאים:
-
STORAGE_PREFIX: הקידומת של הנתיב לדיסקים המקומיים של היעד שמחוברים למכונה וירטואלית באמצעות ממשק NVMe (זיכרון לא נדיף מהיר). לדוגמה, ב- Google Cloud, הנתיבים של מכשירי NVMe תמיד מתחילים ב-/dev/nvme0n. -
VOLUME_GROUP: השם של קבוצת אמצעי האחסון שבה משולבים כונני ה-SSD, לדוגמהomni-disk-cache-volume.
-
-
כדי ליצור אמצעי אחסון לוגי מהקיבולת הפנויה של קבוצת אמצעי האחסון מהשלב הקודם, משתמשים בפקודה הבאה:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
מחליפים את
LOGICAL_VOLUMEבשם של אמצעי אחסון לוגי שמנוהל כמחיצה על ידי ה-LVM, לדוגמהomni_disk_cache_device. - יוצרים את מערכת הקבצים
ext4בנפח הלוגי. במקרה הצורך, אפשר לציין אפשרויות אחרות שלext4בכפוף לאבטחת הנתונים.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
כדי ליצור ספרייה שמשמשת כנקודת טעינה במכונה המארחת ולטעון את מערכת הקבצים, משתמשים בפקודה הבאה:
sudo mkdir /OMNI_DISK_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY
מחליפים את
OMNI_DISK_CACHE_DIRECTORYבשם של הספרייה או בנתיב לספרייה שמשמשת כנקודת טעינה, לדוגמהomni_disk_cache_directory.
טעינת ספריית המטמון ב-AlloyDB Omni
לפני שמפעילים את מטמון הדיסק ב-AlloyDB Omni שפועל בקונטיינר, צריך לטעון את ספריית המטמון בתוך AlloyDB Omni.
במאמר התאמה אישית של התקנת AlloyDB Omni מוסבר איך מתקינים את AlloyDB Omni מקובץ אימג' של Docker ואיך מתאימים אותו אישית.
כדי לטעון את OMNI_DISK_CACHE_DIRECTORY בתוך קונטיינר Docker שבו פועל AlloyDB Omni, משתמשים בפקודה הבאה:
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
מחליפים את מה שכתוב בשדות הבאים:
-
CONTAINER_NAME: השם שיוקצה לקונטיינר החדש של AlloyDB Omni, לדוגמהmy-omni. -
PASSWORD: הסיסמה של מנהל המערכת ברמה הבסיסית (root) של מסד הנתונים ב-PostgreSQL. -
DATA_DIR: הנתיב של מערכת הקבצים שרוצים ש-AlloyDB Omni ישתמש בו לספריית הנתונים. -
CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ספריית המטמון בתוך מאגר AlloyDB Omni שממופה לנקודת הטעינה במכונה המארחת. לדוגמה, על סמך הערך של ספריית המטמון בתוך המאגר,/omni_disk_cache_directory, בדומה ל-OMNI_DISK_CACHE_DIRECTORY, או/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
מחליפים את מה שכתוב בשדות הבאים:
-
CONTAINER_NAME: השם שיוקצה לקונטיינר החדש של AlloyDB Omni, לדוגמהmy-omni. -
PASSWORD: הסיסמה של מנהל המערכת ברמה הבסיסית (root) של מסד הנתונים ב-PostgreSQL. -
CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ספריית המטמון בתוך מאגר AlloyDB Omni שממופה לנקודת הטעינה במכונה המארחת. לדוגמה, על סמך הערך של ספריית המטמון בתוך המאגר,/omni_disk_cache_directory, בדומה ל-OMNI_DISK_CACHE_DIRECTORY, או/disk/cache/inside/container.
כדי לתת הרשאות גישה מלאות ל-OMNI_DISK_CACHE_DIRECTORY שנטען, משתמשים בפקודות הבאות:
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
כדי להפעיל את מטמון הדיסק של AlloyDB Omni במסד הנתונים, צריך להגדיר את הפרמטרים המתאימים של Grand Unified Configuration (GUC) אחרי שמוודאים שאפשר לגשת לספריית המטמון שנטענה מתוך מאגר Docker.
-
כדי להתחבר למסד הנתונים של AlloyDB Omni בקונטיינר כמשתמש-על, משתמשים בפקודה הבאה:
Docker
sudo docker exec -it CONTAINER_NAME psql -h localhost -U postgres
Podman
sudo podman exec -it CONTAINER_NAME psql -h localhost -U postgres
-
כדי להגדיר את ערך הפרמטרים, משתמשים בפקודות הבאות במסד הנתונים של AlloyDB Omni:
alter system set omni_disk_cache_enabled=on; alter system set omni_disk_cache_directory='/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER';
-
כברירת מחדל, AlloyDB Omni משתמש בכל השטח הפנוי במערכת הקבצים. אם צריך, אפשר לשנות את ערך ברירת המחדל באמצעות הפרמטר
omni_disk_cache_file_size.alter system set omni_disk_cache_file_size=SIZE_IN_MB;
-
כדי שהשינוי בפרמטרים של הגדרות השמירה במטמון ייכנס לתוקף, צריך להפעיל מחדש את הקונטיינר שפועל עם AlloyDB Omni:
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
אימות ההגדרות של מטמון הדיסק
אחרי שמפעילים את מטמון הדיסק של AlloyDB Omni, מוודאים שיש גישה למטמון הדיסק על ידי מעקב אחרי פעילות הקריאה והכתיבה בדיסקים באמצעות כלי שירות כמו iotop או iostat.
בנוסף, אתם יכולים לבדוק אם מטמון הדיסק של AlloyDB Omni פתוח.
כדי לאמת את הגדרת מטמון הדיסק של AlloyDB Omni בקונטיינר:
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"אם מטמון הדיסק מוגדר בצורה נכונה, ההודעה Successfully opened omni disk cache ... תופיע ביומנים.