בנוסף למאגרי הנתונים המשותפים הרגילים בזיכרון של 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 בקונטיינר וגם ל-AlloyDB Omni באשכול Kubernetes. -
STORAGE_CLASS_NAME: השם שלstorage classשל נפח מטמון מהיר במיוחד, לדוגמהlocal-storage.
-
- מחילים מחדש את המניפסט.
הפעלת מטמון בדיסק בנפח אחסון מקומי
אם רוצים להשתמש בנפח אחסון מקומי, לא צריך ליצור אמצעי אחסון קבוע. במקום זאת, אפשר להשתמש באופטימיזציה הבאה.
לדוגמה, אם אתם משתמשים ב-GKE ואין לכם את הכרך המתמשך ואת storageClass מוכן, אתם צריכים לוודא שביצעתם את הפעולות הבאות לפני הפעלת מטמון דיסק בכרך מקומי:
- יצירת אשכול עם אחסון מקומי מבוסס SSD.
- עיצבתם את אמצעי האחסון שלכם למערכת הקבצים
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 בקונטיינר וגם ל-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. הנפח נוצר כשמשבצים פוד לצומת, והוא קיים כל עוד הפוד פועל בצומת הזה.
כשמסירים פוד מצומת, הנתונים ב-emptyDir נמחקים באופן סופי. סוג הנפח הזה מתאים למטמון כי הוא מספק אחסון זמני ומהיר. אין צורך לשמור את הנתונים במטמון אם הפוד מתוזמן מחדש.
כדי להפעיל מטמון דיסק בכרך זמני עבור מסד הנתונים:
משנים את המניפסט של אשכול מסד הנתונים כדי להוסיף את המאפיין
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 ... מוצגת ביומנים.