לפני שמתחילים
מוודאים שגרסת האופרטור של AlloyDB Omni Kubernetes היא
1.6.3. כדי לשדרג את גרסת האופרטור של AlloyDB Omni, אפשר לעיין במאמר מעבר לגרסה העדכנית ביותר של אופרטור AlloyDB Omni Kubernetes.מוודאים שיש לכם לפחות 5GB של שטח פנוי בדיסק.
אם אתם מפעילים מערכות גיבוי חיצוניות או מרחוק, צריך לבצע גיבוי מלא ולהשהות את כל הגיבויים המתוזמנים כדי למנוע גיבוי במהלך תהליך השדרוג.
בסביבות של זמינות גבוהה (HA) ועמידות נתונים (DR), צריך לבטל את ההתאמה בין אשכולות מסדי הנתונים לפני שמשדרגים אותם.
שדרוג הגרסה של AlloyDB Omni
כדי לשדרג את הגרסה של AlloyDB Omni באמצעות pg_upgrade, מבצעים אחת מהפעולות הבאות:
מריצים את סקריפט Bash שמבצע את השדרוג בשבילכם.
ביצוע שדרוג באמצעות סקריפט
אפשר למצוא סקריפט שמבצע את שלבי השדרוג הידני בדוגמאות של AlloyDB Omni ב-GitHub.
כדי להשתמש בסקריפט השדרוג, מורידים את הסקריפט ומריצים את הפקודה הבאה:
./MVU.sh TO_VERSION OPERATOR_VERSION NAME NAMESPACE
מחליפים את המשתנים הבאים:
- TO_VERSION: הגרסה שאליה משדרגים. לדוגמה:
16.8.0או17.5.0. - OPERATOR_VERSION: הגרסה של אופרטור AlloyDB Omni, לדוגמה
1.5.0או1.6.0. - NAME: השם של אשכול מסד הנתונים.
- NAMESPACE: מרחב השמות של אשכול מסד הנתונים.
ביצוע שלבי שדרוג ידניים
פועלים לפי ההוראות שמתאימות לגרסה הראשית שאליה משדרגים.
שדרוג מגרסה 15.x.x לגרסה 16.x.x
כדאי לגבות את הנתונים כדי למנוע אובדן נתונים.
צריך להפסיק את כל תהליכי השכפול. זה כולל שכפול פיזי שמשמש לזמינות גבוהה (HA) ולעמידות נתונים (DR), וגם את כל הזרמים של שכפול לוגי.
מוסיפים הערה לאשכול מסד הנתונים כדי לציין שדרוג גרסה ידני.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=trueמחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
מפסיקים את התהליך של PostgreSQL כדי שאפשר יהיה להעביר את הנתונים לצורך השדרוג.
k exec -ti POD_NAME -- /bin/Bash # Shut down postgres postgres@POD_NAME:~$ supervisorctl.par stop postgres postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/dataמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
צריך להחיל תיקון על אשכול מסד הנתונים לגרסה
16.8.0ועל סוכני מישור הבקרה (CPA) לגרסה1.5.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"1.5.0"}}'מחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
יוצרים אשכול מסדי נתונים ריק לגרסה המשודרגת של AlloyDB Omni.
kubectl exec -ti POD_NAME -- /bin/Bash postgres@POD_NAME:~$ supervisorctl.par stop postgres # Initialize a new, empty database cluster for the new version. postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~מחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
משנים את
pg_hba.confבאשכול מסדי הנתונים הקיים כדי לתת לתהליך השדרוג את ההרשאות והחיבורים שהוא צריך.# Backup pg_hba.conf of the pg15 cluster postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak # Update pg15 configurations postgres@POD_NAME:~$ echo "local all all trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/15/data/pg_hba.confמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
משנים את
pg_hba.confבאשכול מסד הנתונים החדש כדי לתת לתהליך השדרוג את ההרשאות והחיבורים שהוא צריך.postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local all all trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/dataמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
שדרוג אשכול מסד הנתונים.
# (optional) Make sure postgres is stopped postgres@POD_NAME:~$ supervisorctl.par stop postgres # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql # (optional) Check to verify that data can be upgraded. postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v # Recover pg15 configurations postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/. # Start postgres postgres@POD_NAME:~$ supervisorctl.par start postgres # Clean up backup data postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/מחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
אחרי שדרוג מוצלח, מסירים את הערת השדרוג הידני מאשכול מסד הנתונים.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-מחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
ממשיכים בפעולות הרגילות ומפעילים מחדש את הגיבויים, תוכניות הגיבוי או תהליכי השכפול שהשבתתם בשלבים אחד עד שלוש.
שדרוג מגרסה 15.x.x לגרסה 17.x.x
כדאי לגבות את הנתונים כדי למנוע אובדן נתונים.
צריך להפסיק את כל תהליכי השכפול. זה כולל שכפול פיזי שמשמש לזמינות גבוהה (HA) ולעמידות נתונים (DR), וגם את כל הזרמים של שכפול לוגי.
מוסיפים הערה לאשכול מסד הנתונים כדי לציין שדרוג גרסה ידני.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=trueמחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
מפסיקים את התהליך של PostgreSQL כדי שאפשר יהיה להעביר את הנתונים לצורך השדרוג.
k exec -ti POD_NAME -- /bin/Bash # Shut down postgres postgres@POD_NAME:~$ supervisorctl.par stop postgres postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/dataמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
צריך להחיל תיקון על אשכול מסד הנתונים לגרסה
17.5.0ועל סוכני מישור הבקרה (CPA) לגרסה1.6.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0"}}'מחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
יוצרים אשכול מסדי נתונים ריק לגרסה המשודרגת של AlloyDB Omni.
kubectl exec -ti POD_NAME -- /bin/Bash postgres@POD_NAME:~$ supervisorctl.par stop postgres # Initialize a new, empty database cluster for the new version. postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~מחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
משנים את
pg_hba.confבאשכול מסדי הנתונים הקיים כדי לתת לתהליך השדרוג את ההרשאות והחיבורים שהוא צריך.# Backup pg_hba.conf of the pg15 cluster postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak # Update pg15 configurations postgres@POD_NAME:~$ echo "local all all trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/15/data/pg_hba.confמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
משנים את
pg_hba.confבאשכול מסד הנתונים החדש כדי לתת לתהליך השדרוג את ההרשאות והחיבורים שהוא צריך.postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local all all trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/dataמחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
שדרוג אשכול מסד הנתונים.
# (optional) Make sure postgres is stopped postgres@POD_NAME:~$ supervisorctl.par stop postgres # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql # (optional) Check to verify that data can be upgraded. postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v # Recover pg15 configurations postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/. # Start postgres postgres@POD_NAME:~$ supervisorctl.par start postgres # Clean up backup data postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/מחליפים את המשתנה הבא:
- POD_NAME: השם של ה-Pod.
אחרי שדרוג מוצלח, מסירים את הערת השדרוג הידני מאשכול מסד הנתונים.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-מחליפים את המשתנה הבא:
- NAME: השם של אשכול מסד הנתונים.
ממשיכים בפעולות הרגילות ומפעילים מחדש את הגיבויים, תוכניות הגיבוי או תהליכי השכפול שהשבתתם בשלבים אחד עד שלוש.