כדי לשדרג בין גרסאות עיקריות של PostgreSQL, קראו את המאמר שדרוג AlloyDB Omni ב-VM.
ההוראות בדף הזה רלוונטיות לפריסות של צומת יחיד עצמאי ולצומתי מסד נתונים נפרדים בטופולוגיות של כמה צמתים, כמו פריסות עם עותקים משוכפלים לקריאה בלבד או צומתי המתנה בזמינות גבוהה. בהתאם להגדרה שלכם, כדאי לקרוא את השיקולים הבאים:
- ספריית נתונים חיצונית: לפני שאתם עוצרים ומסירים קונטיינר, ודאו שנתוני מסד הנתונים מאוחסנים בספריית מארח קבועה שנטענת בקונטיינר (לדוגמה,
-v DATA_DIR:/var/lib/postgresql/data). אם תסירו קונטיינר שמאחסן נתונים רק במערכת הקבצים של הקונטיינר, נתוני מסד הנתונים יימחקו. מידע נוסף זמין במאמר התקנת AlloyDB Omni באמצעות קונטיינרים. - טופולוגיות עם כמה צמתים: תמיד צריך לשדרג את כל צומתי הרפליקה וההמתנה לפני שמשדרגים את הצומת הראשי. בהגדרה של זמינות גבוהה, השהו את זיהוי הכשל או את יתירות הכשל האוטומטית לפני עצירת הקונטיינרים, ובצעו מעבר לצומת המתנה משודרג לפני שאתם משדרגים את הצומת הראשי הקודם.
- קובצי אימג' של קונטיינרים בהתאמה אישית עם תוספים: אם יצרתם קובץ אימג' של קונטיינר בהתאמה אישית עם תוספים של צד שלישי כמו PostGIS או Orafce, אתם צריכים ליצור מחדש את קובץ האימג' של הקונטיינר בהתאמה אישית באמצעות קובץ האימג' הבסיסי של גרסת המשנה המעודכנת, לפני שאתם יוצרים מחדש את הקונטיינר.
לפני שמתחילים
לפני שמשדרגים את AlloyDB Omni, צריך לבצע את השלבים הבאים:
- תכננו חלון זמן לתחזוקה או השבתה קצרה של השירות, כי החלפת הקונטיינר דורשת עצירה זמנית של שירות מסד הנתונים.
- לפני שמתחילים בשדרוג, חשוב לגבות את מסד הנתונים באופן מלא. מידע נוסף זמין במאמר סקירה כללית על גיבוי ושחזור.
- אם אתם משדרגים טופולוגיה עם כמה צמתים, זהו את הצומת הראשי הנוכחי ואת כל הצמתים במצב המתנה או הרפליקות, כדי שתוכלו לשדרג קודם את הצמתים במצב המתנה ואת הרפליקות.
בודקים את הקונטיינר שפועל כדי לתעד את קובץ האימג' הנוכחי שלו, את טעינת ספריית הנתונים של המארח, את מיפוי היציאות, את משתני הסביבה ואת דגלי זמן הריצה, כדי שתוכלו ליצור מחדש את הקונטיינר עם אותה הגדרה:
Docker
docker inspect CONTAINER_NAMEPodman
podman inspect CONTAINER_NAMEמחליפים את
CONTAINER_NAMEבשם של קונטיינר AlloyDB Omni, לדוגמהmy-omni.לפני השדרוג, בודקים את הגרסה הנוכחית של מסד הנתונים של 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_URIPodman
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 לגרסה משנית חדשה יותר, מבצעים את השלבים הבאים בכל צומת. בטופולוגיה עם כמה צמתים, צריך לבצע את השלבים הבאים בכל צומת המתנה או צומת רפליקה לפני שמשדרגים את הצומת הראשי:
עוצרים ומסירים את מאגר AlloyDB Omni הקיים:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEעצירה והסרה של הקונטיינר לא משפיעות על קובצי מסד הנתונים בספריית הנתונים של המארח שנטען.
יוצרים מחדש ומפעילים את מאגר 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_URIPodman
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 לסביבת ייצור.-
אימות השדרוג
אחרי שיוצרים מחדש את הקונטיינר ומפעילים אותו, מוודאים ששירות מסד הנתונים מריץ את גרסת המשנה המעודכנת:
בודקים את הסטטוס של מאגר AlloyDB Omni ומוודאים שהסטטוס הוא
Up:Docker
docker ps --filter "name=CONTAINER_NAME"Podman
podman ps --filter "name=CONTAINER_NAME"מתחברים למסד הנתונים ומוודאים שהגרסה המשודרגת פעילה:
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 לגרסה המשנית הקודמת, עצרו והסירו את הקונטיינר המשודרג והפעילו קונטיינר שמשתמש בקובץ האימג' של הגרסה המשנית הקודמת:
עוצרים ומסירים את הקונטיינר המשודרג של AlloyDB Omni:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEיוצרים מחדש את הקונטיינר ומפעילים אותו באמצעות קובץ האימג' של גרסת המשנה הקודמת, ומחברים את אותה ספריית נתונים של המארח:
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_URIPodman
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.
-
מוודאים שהקונטיינר פועל ושהגרסה הקודמת של מסד הנתונים פעילה:
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();"
המאמרים הבאים
- שדרוג AlloyDB Omni ב-VM
- הגדרת AlloyDB Omni לסביבת ייצור
- התאמה אישית של התקנת AlloyDB Omni
- ניהול ומעקב אחרי AlloyDB Omni
- סקירה כללית על גיבוי ושחזור