שכפול מסד הנתונים של BriefCam PostgreSQL
סעיף זה מפרט כיצד לייעל את השכפול של מסד הנתונים PostgreSQL.
דרישות קדם, הערות ומוסכמות
שים לב
השתמש ב- Windows PowerShell ולא בשורת הפקודה (cmd) בעת הדבקת פקודות מהדוגמאות במסמך זה.
אם שטח השרת הראשי מספיק, בצע גיבוי מלא של מסד הנתונים (באמצעות הכלי pg_dump) לפני שתנסה ליצור את העותק המשוכפל.
רשום לעצמך את כתובת ה-IP של השרת הראשי. בהמשך מסמך זה הוא יכונה <primaryIP>.
רשום לעצמך את כתובת ה-IP של השרת המשני. בהמשך מסמך זה הוא יכונה <secondaryIP>.
בשרת PGSQL, יש להגדיר את שלושת רכיבי ההתקנה הבאים BriefCam לשם המארח או לכתובת ה- IP. ודא שכולם משתמשים באותה שיטה (כדי להבטיח עקביות). אתה עושה זאת על ידי חיפוש PostgreSQL
connectionStringבקבצים או בהגדרות הבאים:שרת VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configשירותי אינטרנט:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): ערכי ODBC 64-סיביות (שדה שרת)

מומלץ לבדוק את הפונקציונליות המלאה של המערכות לפני יצירת השרת המשני. הקפד לשים לב לכל הערכים המקוריים של הפרמטרים שאתה משנה.
בכל השרתים שבהם פרוסים רכיבי שרת BriefCam, הגדר את קובץ המחשבים המארחים כך שיצביע על שרת מסד הנתונים הראשי של PostgreSQL - פעולה זו תעקוף את ה-DNS.
פתח את המקטע הגדרות BriefCam Administrator Consoleסביבה והגדר את ההגדרות DB.LocalStorageAddress ו- VideoProductsPath כך שישתמשו בשמות מארחים ולא בכתובות IP.
המהירות של PostgreSQL_base משתנה באופן משמעותי בהתאם להגדרת הסביבה (מהירות SSD/HDD/NIC). ככלל אצבע, על אחסון ISCSI (10 Gbps קישורים מערך HDD) ו 1 Gbps רשת NIC (vmxnet3) בסביבה וירטואלית, זה לוקח בערך 40 דקות לבצע גיבוי בסיס של מסד הנתונים PostgreSQL המכיל 90 GB של BriefCam נתונים.
שקול לבדוק את המהירות בסביבה בפועל כדי שתוכל להעריך כמה זמן ייקח לגיבוי הבסיס כדי שתוכל להגדיר כראוי את משבצת הזמן לתהליך יצירת העותק המשוכפל.
השתמש בנתיב הממשי של
PostgreSQL_Dataהספרייה. ברירת BriefCam המחדל היאC:\PostgreSQL_Data. עם זאת, הדבר עשוי להשתנות בהגדרות שונות (בהמשך מסמך זה ייעשה שימוש בנתיב ברירת BriefCam המחדל).השתמש
pgsql.exeבנתיב הממשי. ברירת BriefCam המחדל היאC:\PostgreSQL\bin\psql.exe(בהמשך נושא זה ייעשה שימוש BriefCam בנתיב ברירת המחדל).
שלבים בשרת הראשי
התחבר למעטפת שרת PostgreSQL הראשית ואמת את המיקום של קובצי התצורה וה-hba על ידי ביצוע הפקודות הבאות:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;להלן דוגמה לפלט הצפוי (בהתבסס על מיקום
PostgreSQL_Dataהתיקייה):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confגבה את
configהקבצים המקוריים ואתhbaהקבצים על-ידי ביצוע הפקודות הבאות ב- PowerShell:copy C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/postgresql.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))copy C:/PostgreSQL_Data/pg_hba.conf C:/PostgreSQL_Data/pg_hba.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))ודא שקבצי הגיבוי נוצרו על-ידי ביצוע הפקודה הבאה:
dir C:/PostgreSQL_Data/*.conf.*הפלט הצפוי הוא:
PS C:\Users\Administrator> דיר C:/PostgreSQL_Data/*.conf.*
ספרייה: C:\PostgreSQL_Data
שם אורך LastWriteTime של מצב
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
הוסף פרמטרים
postgres.confלקובץ. ניתן לעשות זאת על ידי פתיחת הקובץ בעורך טקסט והוספת השורות הבאות לסוף הקובץ (ממש מתחתCustomized Optionsלסעיף):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6צור תפקיד/משתמש לשכפול והגדר את סיסמתו (אל תשתמש בסיסמה שצוינה בפקודות לדוגמה).
התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresבצע את הפקודה הבאה (במעטפת SQL שנפתחה בשלב הקודם):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
הוסף פרמטרים
pg_hba.confלקובץ. ניתן לעשות זאת על ידי פתיחת הקובץ בעורך טקסט והוספת השורות הבאות לקובץ (מתחת#replication privilegeלשורה):# replication privilege. host replication repl_user <secondaryIP>/32 md5הפעל מחדש את שירות BriefCamPostgreSQL בשרת PostgreSQL הראשי על-ידי פתיחת PowerShell כמנהל מערכת והפעלת הפקודות הבאות:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"ודא שקובצי התצורה מכילים את השינויים שערכת בקובץ
postgres.confבאופן הבא:התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresהדפס את התצורות המותאמות אישית שנוספו לקובץ התצורה של PostgreSQL באמצעות הפקודות שלהלן באמצעות מעטפת SQL:
\pset pager off SELECT pg_read_file('postgresql.conf');ודאו שעכשיו אתם יכולים לראות את השורות שנוספו
postgresql.confלקובץ בתחתית הפלט.
ודא שקובצי התצורה מכילים את השינויים שערכת בקובץ
pg_hba.confבאופן הבא:התחבר למעטפת SQL של שרת PostgreSQL הראשי על ידי ביצוע הפקודות הבאות:
C:\PostgreSQL\bin\psql.exe - פוסטים בדבדבדמין
\pset pager כבוי
בחר pg_read_file('pg_hba.conf');
ודאו שעכשיו אתם יכולים לראות את השורות שנוספו
pg_hba.confלקובץ בתחתית הפלט.
שלבים בשרת המשני
התקן את BriefCamPostgreSQL.
בשרת PostgreSQL המשני, עצור את שירות BriefCamPostgreSQL על-ידי הפעלת הפעולות הבאות ב- PowerShell כמנהל מערכת:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"נקה את ספריית הנתונים באופן הבא:
תן שם חדש
PostgreSQL_Dataלתיקייה.צור תיקיה חדשה בשם
PostgreSQL_Dataובכרטיסיית ההרשאות של התיקיה, הוסף שליטה מלאה ל Everyone.
בצע גיבוי בסיס PostgreSQL מהשרת הראשי לשרת המשני באופן הבא:
בצע את הפקודה הבאה ב- PowerShell כמנהל מערכת:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1מומלץ להפסיק את כל BriefCam השירותים בכל השרתים במהלך גיבוי פוטנציאלי ארוך של מסד הנתונים. ניתן לבצע שלב זה מבלי להפסיק את כל השירותים, בהתאם לגודל מערך הנתונים.
בשרת PostgreSQL המשני, הפעל את שירות BriefCamPostgreSQL על-ידי ביצוע הפקודות הבאות ב- PowerShell כמנהל מערכת:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
אמת את פעולת השכפול
התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresבדוק את ערך ההשהיה על-ידי הפעלת הפקודה הבאה במעטפת SQL (
write_lagהערך חייב להתחיל ב- 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;זוהי דוגמה לפלט הצפוי:
postgres=# SELECT_write_lag,client_addr מ-pg_stat_replication;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(שורה 1)
postgres=#
שים לב
בדיקה זו צריכה להתבצע לפחות פעם ביום.
הפעל את השרת המשני כדי שיפעל כשרת ראשי
סעיף זה מתאר את הליך הפעלת השרת המשני כמופע העיקרי של מסד הנתונים PostgreSQL, במקרים שבהם השרת הראשי נמצא בתקלה ויש צורך בשחזור/העברה.
שנה את קובץ המחשבים המארחים בכל שרתי BC כך שישקף את ה-<secondaryIP> במקום את <primaryIP>.
בדוק את הסטטוס וקדם את PGSQL השרת המשני להפוך לשרת הראשי על ידי הפעלת הפקודות הבאות במסוף PowerShell (הקפד להפעיל את PowerShell במנהל מערכת, וכדי לערוך את הנתיבים לקובץ pg_ctl.exe ולתיקייה PostgreSQL_Data בהתאם):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
דוגמת יציאה:
pg_ctl: server is running (PID: 5672) C:\PostgreSQL\bin\postgres.exe "-D" "C:\PostgreSQL_Data"c:\PostgreSQL\bin\pg_ctl.exe promote -D ”C:\PostgreSQL_Data”
דוגמת יציאה:
waiting for server to promote.... done server promoted
צור גיבוי תקופתי בשרת המשני
PG_DUMP סקריפטים במתזמן המשימות של Windows
צור את
%APPDATA%\postgresql\pgpass.confהקובץ המכיל את אישורי מסד הנתונים (כלומר:*:5432:*:dbadmin:Qwerty123). לפרטים, עיין ב: https://www.postgresql.org/docs/10/libpq-pgpass.html ו https://www.postgresql.org/docs/10/libpq-envars.html (קישורים חיצוניים).אם האמור לעיל אינו פועל, ניתן לציין את סיסמת הסקריפטים בשורת הביצוע:
$env:PGPASSWORD='Qwerty123' ;& c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tarצור תיקיה לגיבוי קבצים, לדוגמה:
E:\PostgresBackups\.צור תיקייה לגיבוי קובצי סקריפט, לדוגמה:
E:\PostgresBackupScripts\.צור את סקריפט הגיבוי ב:
E:\PostgresBackupScripts\backup.ps1עם שלוש הפקודות כפי שמוצג להלן:c:\PostgreSQL\bin\pg_dump.exe -Ft -Udbadmin -d postgres -f:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("yyyyyMddTHmssZ").tar
c:\PostgreSQL\bin\pg_dump.exe -Ft -Udbadmin -d briefcam -f:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyyMddTHmmssZ").tar
#ls -file E:\PostgresBackups\db*.tar | איפה {(get-date) - $_.cretiontime -gt 15.} | Remove-Item -Verbose
* פקודת 3rd לעיל צריכה להיות מותאמת על פי תקופת שמירת הגיבוי הנדרשת על ידי הסרת ” #” סימן בתחילת הקו ושינוי מספר 15 כפי שהוא מייצג את מספר הימים לאחור. לדוגמה, אם ברצונך להגדיר את הסקריפט למחיקת כל הקבצים שגילם עולה על 7 ימים, יהיה עליך לשנות את המספר 15 ל-7.
בדוק את יצירת הגיבוי ואת הסרת הקבצים הישנים על ידי הגדרת -gt ל- 0 והפעל את הפקודה הבאה ב- Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
פעולה זו תסיר את כל הקבצים שנוצרו.
התאם את תקופת השמירה של הגיבויים כאמור בתחתית שלב 4 לעיל.
הוסף את סקריפט הגיבוי למתזמן המשימות של Windows באופן הבא:
הגדר את שדה התוכנית/סקריפט לנתיב הבא:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
בשדה הוספת ארגומנטים הגדר את האפשרויות הבאות:
E:\PostgresBackupScripts\backup.ps1
קבעו את הטריגרים והתזמון בהתאם.

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

בשרת בדיקה, בדוק אם ניתן לשחזר את הקבצים. בדיקה זו צריכה להיות חלק מהשגרה המתמשכת שלך.
להלן דוגמה לפקודת השחזור:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
הפרמטר -c מבצע שחרור ויצירה. לאפשרויות נוספות, ראה:
“C:\PostgreSQL\bin\pg_restore.exe --help”
חזור לשרת הראשי לאחר התיקון
אם השתמשת בשרת משני עקב בעיה בשרת הראשי, סעיף זה מתאר כיצד לחזור לשרת הראשי לאחר תיקון הבעיה.
שים לב
פרטי התהליך להלן עשויים להשתנות בהתאם לסוג הכשל ממנו סבל השרת הראשי. כדי לשקול את המקרה החמור ביותר (התרסקות מוחלטת של השרת הראשי), השלבים שלהלן כוללים התקנה חדשה.
התקן את מערכת ההפעלה מאפס.
בצע את השלבים בקטע ' שלבים בשרת הראשי הנוכחי.
בצע את כל הפעולות המתוארות בסעיפים שלהלן בשרתים, בהתחשב בכך שהשרת שהותקן מחדש הוא כעת מבחינה טכנית המופע "המשני":
עצור את שירות PostgreSQL בשרת ששימש כשרת הראשי.
ודא BriefCam שהמערכת פועלת כהלכה.
בצע שלבים ליצירת עותק משוכפל בשרת ששימש כשרת הראשי.