Skip to main content

מדריך ההתקנה של BriefCam

שכפול מסד הנתונים של BriefCam PostgreSQL

עדכון אחרון: 7 דקה לקריאה
גרסה2024r2
שפהעברית

סעיף זה מפרט כיצד לייעל את השכפול של מסד הנתונים PostgreSQL.

דרישות קדם, הערות ומוסכמות

שים לב

השתמש ב- Windows PowerShell ולא בשורת הפקודה (cmd) בעת הדבקת פקודות מהדוגמאות במסמך זה.

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

  2. רשום לעצמך את כתובת ה-IP של השרת הראשי. בהמשך מסמך זה הוא יכונה <primaryIP>.

  3. רשום לעצמך את כתובת ה-IP של השרת המשני. בהמשך מסמך זה הוא יכונה <secondaryIP>.

  4. בשרת PGSQL, יש להגדיר את שלושת רכיבי ההתקנה הבאים BriefCam לשם המארח או לכתובת ה- IP. ודא שכולם משתמשים באותה שיטה (כדי להבטיח עקביות). אתה עושה זאת על ידי חיפוש PostgreSQL connectionString בקבצים או בהגדרות הבאים:

    • שרת VS: C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.config

    • שירותי אינטרנט: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): ערכי ODBC 64-סיביות (שדה שרת)

      ODBC Driver Setup.png
  5. מומלץ לבדוק את הפונקציונליות המלאה של המערכות לפני יצירת השרת המשני. הקפד לשים לב לכל הערכים המקוריים של הפרמטרים שאתה משנה.

  6. בכל השרתים שבהם פרוסים רכיבי שרת BriefCam, הגדר את קובץ המחשבים המארחים כך שיצביע על שרת מסד הנתונים הראשי של PostgreSQL - פעולה זו תעקוף את ה-DNS.

  7. פתח את המקטע הגדרות BriefCam Administrator Consoleסביבה והגדר את ההגדרות DB.LocalStorageAddress ו- VideoProductsPath כך שישתמשו בשמות מארחים ולא בכתובות IP.

  8. המהירות של PostgreSQL_base משתנה באופן משמעותי בהתאם להגדרת הסביבה (מהירות SSD/HDD/NIC). ככלל אצבע, על אחסון ISCSI (10 Gbps קישורים מערך HDD) ו 1 Gbps רשת NIC (vmxnet3) בסביבה וירטואלית, זה לוקח בערך 40 דקות לבצע גיבוי בסיס של מסד הנתונים PostgreSQL המכיל 90 GB של BriefCam נתונים.

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

  9. השתמש בנתיב הממשי של PostgreSQL_Data הספרייה. ברירת BriefCam המחדל היא C:\PostgreSQL_Data. עם זאת, הדבר עשוי להשתנות בהגדרות שונות (בהמשך מסמך זה ייעשה שימוש בנתיב ברירת BriefCam המחדל).

  10. השתמש pgsql.exe בנתיב הממשי. ברירת BriefCam המחדל היא C:\PostgreSQL\bin\psql.exe (בהמשך נושא זה ייעשה שימוש BriefCam בנתיב ברירת המחדל).

שלבים בשרת הראשי

  1. התחבר למעטפת שרת 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

  2. גבה את 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"))

  3. ודא שקבצי הגיבוי נוצרו על-ידי ביצוע הפקודה הבאה:

    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

  4. הוסף פרמטרים 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

  5. צור תפקיד/משתמש לשכפול והגדר את סיסמתו (אל תשתמש בסיסמה שצוינה בפקודות לדוגמה).

    1. התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. בצע את הפקודה הבאה (במעטפת SQL שנפתחה בשלב הקודם):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. הוסף פרמטרים pg_hba.conf לקובץ. ניתן לעשות זאת על ידי פתיחת הקובץ בעורך טקסט והוספת השורות הבאות לקובץ (מתחת #replication privilege לשורה):

    # replication privilege. host replication repl_user <secondaryIP>/32 md5

  7. הפעל מחדש את שירות BriefCamPostgreSQL בשרת PostgreSQL הראשי על-ידי פתיחת PowerShell כמנהל מערכת והפעלת הפקודות הבאות:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"

  8. ודא שקובצי התצורה מכילים את השינויים שערכת בקובץ postgres.conf באופן הבא:

    1. התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. הדפס את התצורות המותאמות אישית שנוספו לקובץ התצורה של PostgreSQL באמצעות הפקודות שלהלן באמצעות מעטפת SQL:

      \pset pager off SELECT pg_read_file('postgresql.conf');

    3. ודאו שעכשיו אתם יכולים לראות את השורות שנוספו postgresql.conf לקובץ בתחתית הפלט.

      Replicating postgresql conf.png
  9. ודא שקובצי התצורה מכילים את השינויים שערכת בקובץ pg_hba.conf באופן הבא:

    1. התחבר למעטפת SQL של שרת PostgreSQL הראשי על ידי ביצוע הפקודות הבאות:

      C:\PostgreSQL\bin\psql.exe - פוסטים בדבדבדמין

      \pset pager כבוי

      בחר pg_read_file('pg_hba.conf');

    2. ודאו שעכשיו אתם יכולים לראות את השורות שנוספו pg_hba.conf לקובץ בתחתית הפלט.

      Replicating pg_hba conf.png

שלבים בשרת המשני

  1. התקן את BriefCamPostgreSQL.

  2. בשרת PostgreSQL המשני, עצור את שירות BriefCamPostgreSQL על-ידי הפעלת הפעולות הבאות ב- PowerShell כמנהל מערכת:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. נקה את ספריית הנתונים באופן הבא:

    1. תן שם חדש PostgreSQL_Data לתיקייה.

    2. צור תיקיה חדשה בשם PostgreSQL_Dataובכרטיסיית ההרשאות של התיקיה, הוסף שליטה מלאה ל Everyone.

      Replicating PostgreSQL properties.png
  4. בצע גיבוי בסיס PostgreSQL מהשרת הראשי לשרת המשני באופן הבא:

    1. בצע את הפקודה הבאה ב- PowerShell כמנהל מערכת:

      c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1

    2. מומלץ להפסיק את כל BriefCam השירותים בכל השרתים במהלך גיבוי פוטנציאלי ארוך של מסד הנתונים. ניתן לבצע שלב זה מבלי להפסיק את כל השירותים, בהתאם לגודל מערך הנתונים.

  5. בשרת PostgreSQL המשני, הפעל את שירות BriefCamPostgreSQL על-ידי ביצוע הפקודות הבאות ב- PowerShell כמנהל מערכת:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

אמת את פעולת השכפול

  1. התחבר למעטפת SQL של שרת PostgreSQL הראשי באמצעות מסוף PowerShell באמצעות הפקודה:

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

  2. בדוק את ערך ההשהיה על-ידי הפעלת הפקודה הבאה במעטפת 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, במקרים שבהם השרת הראשי נמצא בתקלה ויש צורך בשחזור/העברה.

  1. שנה את קובץ המחשבים המארחים בכל שרתי BC כך שישקף את ה-<secondaryIP> במקום את <primaryIP>.

  2. בדוק את הסטטוס וקדם את 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
  1. צור את %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

  2. צור תיקיה לגיבוי קבצים, לדוגמה: E:\PostgresBackups\.

  3. צור תיקייה לגיבוי קובצי סקריפט, לדוגמה: E:\PostgresBackupScripts\.

  4. צור את סקריפט הגיבוי ב: 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.

  5. בדוק את יצירת הגיבוי ואת הסרת הקבצים הישנים על ידי הגדרת -gt ל- 0 והפעל את הפקודה הבאה ב- Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    פעולה זו תסיר את כל הקבצים שנוצרו.

  6. התאם את תקופת השמירה של הגיבויים כאמור בתחתית שלב 4 לעיל.

  7. הוסף את סקריפט הגיבוי למתזמן המשימות של Windows באופן הבא:

    1. הגדר את שדה התוכנית/סקריפט לנתיב הבא:

      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    2. בשדה הוספת ארגומנטים הגדר את האפשרויות הבאות: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. קבעו את הטריגרים והתזמון בהתאם.

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

    Replicating task scheduler.png
  10. בשרת בדיקה, בדוק אם ניתן לשחזר את הקבצים. בדיקה זו צריכה להיות חלק מהשגרה המתמשכת שלך.

להלן דוגמה לפקודת השחזור:

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” 

חזור לשרת הראשי לאחר התיקון

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

שים לב

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

  1. התקן את מערכת ההפעלה מאפס.

  2. בצע את השלבים בקטע ' שלבים בשרת הראשי הנוכחי.

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

  4. עצור את שירות PostgreSQL בשרת ששימש כשרת הראשי.

  5. ודא BriefCam שהמערכת פועלת כהלכה.

  6. בצע שלבים ליצירת עותק משוכפל בשרת ששימש כשרת הראשי.