אפשר להגדיר את מאגר הקריאה בקובץ המניפסט של המכונה של מסד הנתונים. לכל מופע של מאגר קריאה צריך ליצור קובץ מניפסט ייחודי. אפשר ליצור עד 20 מופעים של מאגר קריאה.
כל מופע של מאגר קריאה תופס את אותה כמות אחסון כמו המופע שהוא משכפל.
יצירת מופע של מאגר קריאה אסינכרוני
אתם יכולים ליצור כל מספר של מופעים של מאגר קריאה באשכול מסדי הנתונים. כדי ליצור מכונת מאגר קריאה אסינכרוני של AlloyDB Omni, מבצעים את השלבים הבאים:
יוצרים את המניפסט של מכונת מסד הנתונים כדי להגדיר את סוג המכונה של מאגר הקריאה:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBInstance metadata: name: READ_POOL_INSTANCE_NAME namespace: NAMESPACE spec: instanceType: ReadPool nodeCount: READ_POOL_INSTANCE_SIZE dbcParent: name: DB_CLUSTER_NAMEמחליפים את מה שכתוב בשדות הבאים:
READ_POOL_INSTANCE_NAME: שם למשאב, לדוגמהread-pool-instance-1.
NAMESPACE: מרחב השמות של אשכול מסד הנתונים.
DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהמופע שייך לו.
READ_POOL_INSTANCE_SIZE: מספר הצמתים במכונה של מאגר לקריאה בלבד. ההגדרה הזו קובעת את קיבולת המחשוב הכוללת של המופע. אפשר להגדיר עד 20 צמתים לכל מופע של מאגר לקריאה.
מחילים את המניפסט.
אימות סטטוס המכונה
כדי לוודא שהמכונה של מאגר הקריאה זמינה, מריצים את הפקודה הבאה:
kubectl get dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME -o jsonpath='{.status.conditions[?(@.type=="Available")].status}'התשובה true מציינת שמופע מאגר הקריאה יכול לשרת שאילתות, אבל יכול להיות שהוא לא משכפל נתונים ממופע מסד הנתונים שלכם.
כדי לוודא את סטטוס הסטרימינג של המכונה של מאגר הקריאה, מריצים את הפקודה הבאה:
kubectl get dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME -o jsonpath='{.status.conditions[?(@.type=="Streaming")].status}'התשובה true מציינת שהמכונה של מאגר הקריאה מחוברת למכונה של מסד הנתונים ומעבירה שינויים בסטרימינג.
אם אי אפשר לגשת למכונה של מסד הנתונים, המכונה של מאגר הקריאה ממשיכה לשרת את השאילתות. במקרה כזה, סטטוס הזמינות יהיה true וסטטוס הסטרימינג יהיה false.
אחרי שמגדירים את המכונה של מאגר הקריאה, כל ההוספות, העדכונים והמחיקות של שורות במכונה ניתנים לקריאה במכונה של מאגר הקריאה.
מגבלה: טיפול במעבר בין שרתים ובמעבר לגיבוי
אם במכונה של מסד הנתונים הראשי מתבצע מעבר או יתירות כשל, המכונה של מאגר הקריאה לא מסתנכרנת באופן אוטומטי עם המכונה הראשית החדשה, והיא מפסיקה לשכפל נתונים. כדי להמשיך את שכפול הנתונים, צריך להקטין את מאגר הקריאה לאפס ואז להגדיל אותו בחזרה למספר הצמתים שנבחר.
מתעדים את מספר הצמתים הנוכחי במאגר הקריאה:
NODE_COUNT=$(kubectl get dbinstance -n NAMESPACE \ READ_POOL_INSTANCE_NAME -ojsonpath="{.spec.nodeCount}")מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: מרחב השמות של אשכול מסד הנתונים. -
READ_POOL_INSTANCE_NAME: השם של המכונה במאגר הקריאה.
-
מצמצמים את מאגר הקריאה לאפס:
kubectl patch dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME \ --type=merge -p '{"spec":{"nodeCount":0}}'מקטינים את מאגר הקריאה בחזרה למספר הצמתים שנבחר:
kubectl patch dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME \ --type=merge -p "{\"spec\":{\"nodeCount\":NODE_COUNT}}"