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

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

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

כדי לשדרג בין גרסאות עיקריות של PostgreSQL, קראו את המאמר שדרוג AlloyDB Omni ב-VM.

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

  • ספריית נתונים חיצונית: לפני שאתם עוצרים ומסירים קונטיינר, ודאו שנתוני מסד הנתונים מאוחסנים בספריית מארח קבועה שנטענת בקונטיינר (לדוגמה, -v DATA_DIR:/var/lib/postgresql/data). אם תסירו קונטיינר שמאחסן נתונים רק במערכת הקבצים של הקונטיינר, נתוני מסד הנתונים יימחקו. מידע נוסף זמין במאמר התקנת AlloyDB Omni באמצעות קונטיינרים.
  • טופולוגיות עם כמה צמתים: תמיד צריך לשדרג את כל צומתי הרפליקה וההמתנה לפני שמשדרגים את הצומת הראשי. בהגדרה של זמינות גבוהה, השהו את זיהוי הכשל או את יתירות הכשל האוטומטית לפני עצירת הקונטיינרים, ובצעו מעבר לצומת המתנה משודרג לפני שאתם משדרגים את הצומת הראשי הקודם.
  • קובצי אימג' של קונטיינרים בהתאמה אישית עם תוספים: אם יצרתם קובץ אימג' של קונטיינר בהתאמה אישית עם תוספים של צד שלישי כמו PostGIS או Orafce, אתם צריכים ליצור מחדש את קובץ האימג' של הקונטיינר בהתאמה אישית באמצעות קובץ האימג' הבסיסי של גרסת המשנה המעודכנת, לפני שאתם יוצרים מחדש את הקונטיינר.

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

לפני שמשדרגים את AlloyDB Omni, צריך לבצע את השלבים הבאים:

  1. תכננו חלון זמן לתחזוקה או השבתה קצרה של השירות, כי החלפת הקונטיינר דורשת עצירה זמנית של שירות מסד הנתונים.
  2. לפני שמתחילים בשדרוג, חשוב לגבות את מסד הנתונים באופן מלא. מידע נוסף זמין במאמר סקירה כללית על גיבוי ושחזור.
  3. אם אתם משדרגים טופולוגיה עם כמה צמתים, זהו את הצומת הראשי הנוכחי ואת כל הצמתים במצב המתנה או הרפליקות, כדי שתוכלו לשדרג קודם את הצמתים במצב המתנה ואת הרפליקות.
  4. בודקים את הקונטיינר שפועל כדי לתעד את קובץ האימג' הנוכחי שלו, את טעינת ספריית הנתונים של המארח, את מיפוי היציאות, את משתני הסביבה ואת דגלי זמן הריצה, כדי שתוכלו ליצור מחדש את הקונטיינר עם אותה הגדרה:

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    מחליפים את CONTAINER_NAME בשם של קונטיינר AlloyDB Omni, לדוגמה my-omni.

  5. לפני השדרוג, בודקים את הגרסה הנוכחית של מסד הנתונים של AlloyDB Omni:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

משיכת קובץ האימג' המעודכן של הקונטיינר

מורידים את קובץ האימג' של הקונטיינר של גרסת היעד המשנית למכונה המארחת:

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

מחליפים את IMAGE_URI ב-URI של קובץ האימג' של הקונטיינר ובתג של גרסת המשנה שאליה רוצים לשדרג. לדוגמה, google/alloydbomni:18.4.0 לקובץ האימג' של Debian או google/alloydbomni:18.4.0-ubi9 לקובץ האימג' של Red Hat Universal Base Image ‏ (UBI).

אם אתם משתמשים בקובץ אימג' של קונטיינר בהתאמה אישית עם תוספים כמו PostGIS או Orafce, עדכנו את ההוראה FROM או את הארגומנט OMNI_VERSION של ה-build ב-Dockerfile כך שיפנו לתג של גרסת המשנה המעודכנת, ואז בנו את קובץ האימג' המעודכן בהתאמה אישית לפני שתמשיכו.

שדרוג של AlloyDB Omni

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

  1. עוצרים ומסירים את מאגר AlloyDB Omni הקיים:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

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

  2. יוצרים מחדש ומפעילים את מאגר AlloyDB Omni באמצעות קובץ האימג' המעודכן של גרסת המשנה, ומחברים את ספריית הנתונים הקיימת של המארח:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

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

    • ‫CONTAINER_NAME: השם של מאגר AlloyDB Omni, לדוגמה my-omni.
    • ‫PASSWORD: הסיסמה של המשתמש postgres בקונטיינר. כשמפעילים ספריית נתונים מאותחלת קיימת, הקונטיינר שומר את הסיסמה הקיימת שהוגדרה במסד הנתונים.
    • ‫DATA_DIR: הנתיב לספריית המארח שבה מאוחסנים נתוני מסד הנתונים הקיימים.
    • ‫HOST_PORT: יציאת ה-TCP במכונה המארחת שמפרסמת את יציאת הקונטיינר 5432, לדוגמה 5432.
    • ‫IMAGE_URI: ה-URI של קובץ האימג' של הקונטיינר של גרסת המשנה המעודכנת (או ה-URI של קובץ האימג' בהתאמה אישית שנבנה מחדש) – לדוגמה, google/alloydbomni:18.4.0.

    כדי שהבעלות על הקבצים בספריית הנתונים של המארח תתאים למשתמש postgres של הקונטיינר, צריך להשתמש באותה גרסה של קובץ האימג' של מערכת ההפעלה הבסיסית (Debian או UBI) כמו בקונטיינר הקודם. אם במאגר הקודם השתמשתם בדגלים נוספים של זמן ריצה, כמו --ulimit,‏ --log-driver,‏ --shm-size או -v /dev/shm:/dev/shm, צריך לכלול את הדגלים האלה כשיוצרים מחדש את המאגר. מידע נוסף זמין במאמר הגדרת AlloyDB Omni לסביבת ייצור.

אימות השדרוג

אחרי שיוצרים מחדש את הקונטיינר ומפעילים אותו, מוודאים ששירות מסד הנתונים מריץ את גרסת המשנה המעודכנת:

  1. בודקים את הסטטוס של מאגר AlloyDB Omni ומוודאים שהסטטוס הוא Up:

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. מתחברים למסד הנתונים ומוודאים שהגרסה המשודרגת פעילה:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

ביטול השדרוג

אם אתם צריכים להחזיר את ההתקנה של AlloyDB Omni לגרסה המשנית הקודמת, עצרו והסירו את הקונטיינר המשודרג והפעילו קונטיינר שמשתמש בקובץ האימג' של הגרסה המשנית הקודמת:

  1. עוצרים ומסירים את הקונטיינר המשודרג של AlloyDB Omni:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. יוצרים מחדש את הקונטיינר ומפעילים אותו באמצעות קובץ האימג' של גרסת המשנה הקודמת, ומחברים את אותה ספריית נתונים של המארח:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

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

    • ‫CONTAINER_NAME: השם של מאגר AlloyDB Omni, לדוגמה my-omni.
    • ‫PASSWORD: הסיסמה של המשתמש postgres בקונטיינר. כשמפעילים ספריית נתונים מאותחלת קיימת, הקונטיינר שומר את הסיסמה הקיימת שהוגדרה במסד הנתונים.
    • ‫DATA_DIR: הנתיב לספריית המארח שבה מאוחסנים נתוני מסד הנתונים הקיימים.
    • ‫HOST_PORT: יציאת ה-TCP במכונה המארחת שמפרסמת את יציאת הקונטיינר 5432, לדוגמה 5432.
    • ‫ROLLBACK_IMAGE_URI: ה-URI של קובץ האימג' של הקונטיינר ותג הגרסה המשנית של ההתקנה הקודמת (או ה-URI של קובץ האימג' הקודם בהתאמה אישית) – לדוגמה, google/alloydbomni:18.1.0.
  3. מוודאים שהקונטיינר פועל ושהגרסה הקודמת של מסד הנתונים פעילה:

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

המאמרים הבאים