בנוסף למאגרי הנתונים הזמניים המשותפים הרגילים בזיכרון של 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: התווית של הצומת עבור המפתח שמשמש כאינדיקטור מיקום ומאפשר חלוקה שווה של ה-Pod באשכול – לדוגמה,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 פועל בצומת הזה.
כשמסירים פוד מצומת, הנתונים ב-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 ... תוצג ביומנים.