יצירת עותק משוכפל לקריאה בלבד

בוחרים גרסת תיעוד:

כדי להגדיל את קצב העברת הנתונים לקריאה ואת הזמינות, אפשר ליצור שרת העתקה של AlloyDB Omni לשרת AlloyDB Omni קיים. שרת העתקה מספק שיבוט לקריאה בלבד של שרת מסד הנתונים הראשי. הוא מעדכן את הנתונים שלו באופן רציף כדי לשקף את השינויים בנתונים של השרת הראשי.

בקטעים הבאים מוסבר איך להגדיר את השרת הראשי של AlloyDB Omni לרפליקציה, איך להגדיר את שרת הרפליקה ואיך לאמת את סטטוס הרפליקציה בשרת הראשי.

לפני שמתחילים

לפני שממשיכים, צריך להתקין ולהגדיר את AlloyDB Omni באמצעות חבילת ה-RPM. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni באמצעות RPM.

הגדרת השרת הראשי לשכפול

  1. מעדכנים את הגדרות הרשת או חומת האש של המארח של השרת הראשי, כדי לאפשר תעבורת נתונים נכנסת (ingress) מהמארח של שרת הרפליקה דרך יציאת Postgres של השרת הראשי.

  2. יוצרים משתמש רפליקציה:

    psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD';
    grant pg_read_all_settings to REPLICA_USER;"
  3. מוסיפים את השורות הבאות לקובץ /DATA_DIR/pg_hba.conf של השרת הראשי לפני host all all all scram-sha-256 שקיים בקובץ:

    host alloydbmetadata    alloydbmetadata   IP_RANGE trust
    host replication        REPLICA_USER    IP_RANGE scram-sha-256
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫IP_RANGE: טווח כתובות ה-IP, בסימון CIDR, של תת-הרשת שבה נמצאת מכונת הרפליקה. לדוגמה, 203.0.113.0/24.
    • ‫DATA_DIR: הנתיב לספריית הנתונים של השרת הראשי.
  4. מפעילים מחדש את השרת הראשי:

    sudo systemctl restart alloydbomni18

יצירה והגדרה של שרת הרפליקה

כדי ליצור ולהגדיר שרת רפליקה של AlloyDB Omni:

  1. מוודאים שלעותק יש קישוריות לרשת לשרת הראשי:

    ping SOURCE_IP

    מחליפים את SOURCE_IP בכתובת ה-IP של מכונת AlloyDB Omni הראשית שממנה רוצים לבצע את השכפול.

  2. מוודאים שהרפליקה יכולה להתחבר לשרת הראשי:

    psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"

    הפלט אמור להיראות כך:

           systemid       | timeline |  xlogpos  | dbname
     ---------------------+----------+-----------+--------
      7376500460465963036 |        1 | 0/454B670 |
      (1 row)
    
  3. לרפליקה צריך להיות מיקום אחסון מתמיד בדיסק:

    sudo -u postgres pg_basebackup \
      --pgdata=DATA_DIR \
      --checkpoint=fast \
      --host="SOURCE_IP" \
      --port="SOURCE_PORT" \
      --username=REPLICA_USER \
      --create-slot \
      --write-recovery-conf \
      --slot="SLOT_NAME"

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SOURCE_PORT: יציאת ה-TCP של המכונה הראשית של AlloyDB Omni שממנה רוצים לבצע את הרפליקציה. אם לא תציינו ערך, AlloyDB Omni ישתמש בערך ברירת המחדל 5432.
    • ‫SLOT_NAME: התווית של השם של משבצת הרפליקציה.
    • ‫DATA_DIR: הנתיב לספריית הנתונים של שרת הרפליקה.
  4. מפעילים את המכונה של הרפליקה:

    sudo systemctl start alloydbomni18

אימות סטטוס הרפליקציה בשרת הראשי

כדי לוודא שהרפליקציה מוגדרת כמו שצריך, מריצים את הפקודה הבאה במארח של השרת הראשי:

psql -h localhost -U postgres -c "select * from pg_stat_replication"

טבלת הפלט מכילה שורה אחת לכל רפליקה שמחוברת לשרת מסד הנתונים הראשי.

אחרי שמגדירים את הרפליקציה, כל ההוספות, העדכונים והמחיקות של שורות בשרת מסד הנתונים הראשי ניתנים לקריאה ברפליקה תוך כמה שניות.

הרחבת עומסי עבודה של קריאה באמצעות מאגרי קריאה

כדי להרחיב את דרישות הדיווח והקריאה בלבד, אתם יכולים להקצות כמה רפליקות של סטרימינג אסינכרוני כדי ליצור מאגר קריאה. אפשר לגשת למאגר הקריאה על ידי התחברות ישירה לכתובות ה-IP של צמתי הרפליקה.

לפני שמתחילים

צריך לוודא שיצרת את REPLICA_USER עם הרשאות REPLICATION בשרת הראשי. אתם צריכים גם לוודא שהקובץ pg_hba.conf של השרת הראשי מוגדר כך שיאפשר חיבורי שכפול מכתובות ה-IP של צומתי הרפליקה.

הקצאת כמה רפליקות לקריאה בלבד

כדי ליצור כמה רפליקות, חוזרים על השלבים האלה לכל צומת רפליקה שרוצים להוסיף למאגר.

בכל צומת משוכפל, מריצים את הפקודה pg_basebackup, ומוודאים שמזינים שם ייחודי של משבצת שכפול לכל צומת:

  sudo -u postgres pg_basebackup \
   --pgdata=DATA_DIR \
   --checkpoint=fast \
   --host="SOURCE_IP" \
   --port="SOURCE_PORT" \
   --username=REPLICA_USER \
   --create-slot \
   --write-recovery-conf \
   --slot="UNIQUE_SLOT_NAME_PER_NODE"
   ```
Once the backup is complete, start the database service on each replica:
  ```posix-terminal
  sudo systemctl start alloydbomni18