בנוסף למאגרי הנתונים הזמניים המשותפים הרגילים בזיכרון של PostgreSQL, מטמון הדיסק של AlloyDB Omni מאפשר לאחסן מאגרי נתונים זמניים באחסון מהיר כמו כונני SSD. מטמון הדיסק מאיץ את אחזור הנתונים בהתקנות של AlloyDB Omni עם ספריות נתונים שנמצאות באחסון איטי יותר.
בדומה למאגרי נתונים זמניים משותפים של PostgreSQL, מטמון הדיסק של AlloyDB Omni הוא לא מתמיד, כלומר הנתונים שנשמרו במטמון אובדים בהפעלה מחדש.
כברירת מחדל, מטמון הדיסק של AlloyDB Omni משתמש בכל נפח האחסון שמדווח על ידי מערכת הקבצים. אפשר להגדיר את נפח האחסון ששמור לשמירת נתונים במטמון באמצעות הפרמטר omni_disk_cache_file_size.
הפעלת מטמון הדיסק של AlloyDB Omni
כדי להפעיל את מטמון הדיסק, צריך לבצע את הפעולות באחד מסעיפי המשנה הבאים:
הפעלת מטמון הדיסק בנפח גנרי
אפשר להפעיל את מטמון הדיסק באמצעות אמצעי אחסון כללי.
כדי להפעיל את מטמון הדיסק בנפח גנרי באופרטור AlloyDB Omni Kubernetes, צריך להכין מראש נפח מתמיד ו-storageClass.
לדוגמה, אם אתם משתמשים ב-GKE ואין לכם את אמצעי האחסון הקבוע ואת storageClass, ודאו שביצעתם את הפעולות הבאות לפני שהפעלתם את מטמון הדיסק באמצעי אחסון כללי:
- יצרתם אשכול עם אחסון מקומי מבוסס-SSD.
- פרמטתם את נפח האחסון למערכת הקבצים ext4 באמצעות שלב 1 של הפעלת ההקצאה הסטטית של נפח האחסון המקומי.
- יצירה ידנית של נפח אחסון מתמיד לכל SSD באשכול באמצעות
storageClassשמגדיר אחסון מתמיד בהתקן אחסון.
כדי להפעיל את מטמון הדיסק בנפח גנרי למסד הנתונים, מבצעים את השלבים הבאים:
משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין
ultraFastCacheלקטעfeaturesשבקטעspec:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE genericVolume: storageClass: "STORAGE_CLASS_NAME" ...
מחליפים את מה שכתוב בשדות הבאים:
-
DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו. -
DISK_CACHE_SIZE: גודל המטמון, לדוגמה100Gi. הערך חייב להיות גדול מ-shared_buffers. השדה הזה הוא אופציונלי. אם לא מציינים את הערך של השדה הזה, AlloyDB Omni משתמש בכל המקום שנותר בדיסק, גם ב-AlloyDB Omni בקונטיינר וגם באשכול Kubernetes. -
STORAGE_CLASS_NAME: השם שלstorage classשל נפח המטמון המהיר במיוחד, לדוגמהlocal-storage.
-
- מחילים מחדש את המניפסט.
הפעלת מטמון הדיסק בנפח אחסון מקומי
אם אתם רוצים להשתמש בנפח אחסון מקומי, אתם לא צריכים ליצור נפח אחסון קבוע. במקום זאת, אתם יכולים להשתמש באופטימיזציה הבאה.
לדוגמה, אם אתם משתמשים ב-GKE ואין לכם אמצעי אחסון קבוע ו-storageClass מוכנים, ודאו שביצעתם את הפעולות הבאות לפני הפעלת מטמון הדיסק בנפח אחסון מקומי:
פרמטתם את נפח האחסון למערכת הקבצים
ext4באמצעות שלב 1 של הפעלת מקצה המשאבים הסטטי של נפח האחסון המקומי.
כדי להפעיל את מטמון הדיסק בנפח אחסון מקומי של מסד הנתונים:
משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין
ultraFastCacheלקטעfeaturesשבקטעspec:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE localVolume: path: "LOCAL_VOLUME_PATH" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: "LABEL_KEY" operator: "OPERATOR_VALUE" values: - "LABEL_KEY_VALUE" ...
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו. -
DISK_CACHE_SIZE: גודל המטמון, לדוגמה100Gi. הערך חייב להיות גדול מ-shared_buffers. השדה הזה הוא אופציונלי. אם לא מציינים את הערך של השדה הזה, AlloyDB Omni משתמש בכל המקום שנותר בדיסק, גם ב-AlloyDB Omni בקונטיינר וגם באשכול Kubernetes. -
STORAGE_CLASS_NAME: השם של סוג האחסון. -
LOCAL_VOLUME_PATH: הנתיב לנפח האחסון המקומי, לדוגמה/mnt/disks/raid/0. -
LABEL_KEY: התווית של הצומת למפתח שמשמש כאינדיקטור למיקום ומאפשר הפצה אחידה של Pods באשכול – לדוגמה,cloud.google.com/gke-local-nvme-ssd. -
OPERATOR_VALUE: הקשר של המפתח לקבוצת ערכים, לדוגמהIn. מגדירים את הפרמטר לאחת מהאפשרויות הבאות:-
In: מערך הערכים לא יכול להיות ריק. -
NotIn: מערך הערכים לא יכול להיות ריק. -
Exists: מערך הערכים חייב להיות ריק. -
DoesNotExist: מערך הערכים חייב להיות ריק. -
Gt: מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם. -
Lt: מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם.
-
-
LABEL_KEY_VALUE: הערך של מפתח התווית, לדוגמהtrue. מגדירים את הפרמטר למערך של ערכי מחרוזת באופן הבא:- אם האופרטור הוא
InאוNotIn, מערך הערכים לא יכול להיות ריק. - אם האופרטור הוא
ExistsאוDoesNotExist, מערך הערכים חייב להיות ריק. - אם האופרטור הוא
GtאוLt, מערך הערכים חייב להכיל רכיב אחד, שמפורש כמספר שלם.
- אם האופרטור הוא
-
הפעלת מטמון הדיסק בנפח זמני
כדי להפעיל את מטמון הדיסק, אתם יכולים להשתמש בנפח emptyDir שמספק אחסון זמני שקשור ישירות למחזור החיים של ה-Pod. אמצעי האחסון נוצר כש-pod מוקצה לצומת, והוא קיים כל עוד ה-pod פועל בצומת הזה.
כש-pod מוסר מצומת, הנתונים ב-emptyDir נמחקים באופן סופי. סוג כזה של נפח מתאים למטמון כי הוא מספק אחסון זמני ומהיר. אין צורך לשמור את הנתונים במטמון אם מתזמנים מחדש את ה-pod.
כדי להפעיל את מטמון הדיסק בנפח זמני במסד הנתונים:
משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין
ultraFastCacheלקטעfeaturesשבקטעspec, ומציינים אתemptyDirVolume:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE emptyDirVolume: {} ...
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו. -
DISK_CACHE_SIZE: גודל המטמון, לדוגמה 200Gi.
-
- מחילים מחדש את המניפסט.
אימות ההגדרות של מטמון הדיסק
אחרי שמפעילים את מטמון הדיסק של AlloyDB Omni, מוודאים שיש גישה למטמון הדיסק על ידי מעקב אחרי פעילות הקריאה והכתיבה בדיסקים באמצעות כלים זמינים כמו iotop או iostat.
בנוסף, אתם יכולים לבדוק אם מטמון הדיסק של AlloyDB Omni פתוח.
כדי לאמת את הגדרת מטמון הדיסק של AlloyDB Omni, משתמשים בפקודה הבאה.
kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"אם מטמון הדיסק מוגדר בצורה נכונה, ההודעה Successfully opened omni disk cache ... מוצגת ביומנים.