Skip to main content

دليل تثبيت BriefCam

نسخ قاعدة بيانات PostgreSQLBriefCam

Last Updated: 7 minute read
إصدار2025r1
اللغةالعربية

يوضح هذا القسم بالتفصيل كيفية تبسيط النسخ المتماثل لقاعدة بيانات 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 ٦٤ بت (حقل الخادم)

      ODBC Driver Setup.png
  5. يوصى باختبار الوظائف الكاملة للأنظمة قبل إنشاء الخادم الثانوي. تأكد من تدوين جميع القيم الأصلية للمعلمات التي تقوم بتغييرها.

  6. على جميع الخوادم التي يتم فيها نشر مكونات BriefCam Server، اضبط ملف المضيفين للإشارة إلى خادم قاعدة بيانات PostgreSQL الأساسي - وهذا سيتجاوز DNS.

  7. في BriefCam Administrator Console، افتح قسم إعدادات البيئة واضبط إعدادات DB.LocalStorageAddressوVideoProductsPath لاستخدام أسماء المضيفين وليس عناوين IP.

  8. تختلف سرعة PostgreSQL_base_backup بشكل كبير اعتمادا على إعداد البيئة (سرعة SSD / HDD / NIC). كقاعدة عامة، على وحدة تخزين ISCSI (١٠ روابط جيجابت في الثانية لمجموعة HDD) وشبكة ١ جيجابت في الثانية (NIC vmxnet٣) في بيئة افتراضية، يستغرق الأمر حوالي ٤٠ دقيقة لإجراء نسخة احتياطية أساسية من قاعدة بيانات PostgreSQL التي تحتوي على ٩٠ جيجابايت من BriefCamبيانات .

    ضع في اعتبارك اختبار السرعة على البيئة الفعلية لتتمكن من تقدير الوقت الذي ستستغرقه النسخة الاحتياطية الأساسية لتتمكن من ضبط الفترة الزمنية لعملية إنشاء النسخة المتماثلة بشكل صحيح.

  9. استخدم المسار الفعلي PostgreSQL_Dataللدليل . الإعداد BriefCamالافتراضي هو .C:\PostgreSQL_Data ومع ذلك، قد يختلف هذا في إعدادات مختلفة (سيتم استخدام BriefCamمسار الافتراضي لاحقا في هذا المستند).

  10. استخدم pgsql.exeمسار الفعلي. يتم المسار BriefCamالافتراضي C:\PostgreSQL\bin\psql.exe(سيتم استخدام BriefCamالمسار الافتراضي لاحقا في هذا الموضوع).

الخطوات على الخادم الأساسي

  1. اتصل بخادم PostgreSQL الأساسي sql shell وتحقق من موقع ملفات التكوين و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>:/PostgreSQL_Data/*.conf.*

    الدليل: C:\PostgreSQL_Data

    وضع اسم آخر كتابة للطول الزمني

    ---- ------------- ------ ----

    -a---- ١١/١٠/٢٠٢١ ١١:٢٢ صباحا ٤٣٧٤ pg_hba.conf.٢٠٢١١١١٧T١٠٠١٠٩Z

    -a---- ١١/١٠/٢٠٢١ ١١:٢٥ صباحا ٢٣٧٩٨ postgresql.conf.٢٠٢١١١١٧T١٠٠٣٤٤Z

  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 shell الذي تم فتحه في الخطوة السابقة):

      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 shell:

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

    3. تحقق من أنه يمكنك الآن رؤية الخطوط المضافة إلى postgresql.confملف في أسفل الإخراج.

      Replicating postgresql conf.png
  9. تحقق من أن ملفات التكوين تحتوي على التغييرات التي أجريتها على pg_hba.confملف كما يلي:

    1. اتصل ب SQL Shell الخاص بخادم PostgreSQL الأساسي عن طريق تنفيذ الأوامر التالية:

      C:\PostgreSQL\bin\psql.exe - ملصقات يو دبادمين

      \تعيين المستعرض على إيقاف التشغيل

      حدد 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وفي علامة التبويب أذونات المجلد، أضف التحكم الكامل في الجميع.

      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 shell (يجب أن تبدأ write_lagقيمة ب ٠٠:٠٠:٠٠):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    هذا مثال على الإخراج المتوقع:

    postgres=# SELECT write_lag,client_address FROM_pg_stat_replication؛

    write_lag | client_address

    -----------------+-------------

    00:00:00.003972 | 10.30.30.30

    (١ صف)

    الملصقات=#

ملاحظة

يجب إجراء هذا الفحص مرة واحدة على الأقل يوميا.

قم بتنشيط الخادم الثانوي ليكون بمثابة الخادم الأساسي

يصف هذا القسم إجراء تنشيط الخادم الثانوي باعتباره المثيل الأساسي لقاعدة بيانات 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 Script في Windows Task Scheduler
  1. قم بإنشاء %APPDATA%\postgresql\pgpass.confملف الذي يحتوي على بيانات اعتماد db (أي: *:5432:*:dbadmin:Qwerty123). لمزيد من التفاصيل، يرجى الرجوع إلى: https://www.postgresql.org/docs/١٠/libpq-pgpass.html وhttps://www.postgresql.org/docs/١٠/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باستخدام الأوامر الثلاثة كما هو موضح أدناه:

    • ج: \PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$((get-date).ToUniversalTime().ToString("yyyyMMdThmmsZ").tar

    • c:\PostgreSQL\bin\pg_dump.exe -f t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$((get-date).ToUniversalTime().ToString("yyyyMMdThmssz").tar

    • #ls -file E:\PostgresBackups\db*.tar | حيث {get-date) - $_.creationtime -gt ١٥.} | إزالة-العنصر -مطول

    *يجب ضبط الأمر الثالث أعلاه وفقا لفترة الاحتفاظ بالنسخة الاحتياطية المطلوبة عن طريق إزالة علامة "#" في بداية الخط وتعديل الرقم ١٥ لأنه يمثل عدد الأيام للخلف. على سبيل المثال، إذا كنت ترغب في تكوين البرنامج النصي لحذف جميع الملفات التي مر عليها أكثر من ٧ أيام، فسيتعين عليك تغيير الرقم من ١٥ إلى ٧.

  5. اختبر إنشاء النسخة الاحتياطية وإزالة الملفات القديمة عن طريق ضبط -gt على ٠ وتشغيل الأمر التالي في Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    سيؤدي هذا إلى إزالة جميع الملفات التي تم إنشاؤها.

  6. اضبط فترة الاحتفاظ بالنسخ الاحتياطية كما هو مذكور في أسفل الخطوة ٤ أعلاه.

  7. أضف البرنامج النصي للنسخ الاحتياطي إلى جدولة مهام Windows على النحو التالي:

    1. تعيين حقل البرنامج/البرنامج النصي إلى المسار التالي:

      C:\Windows\System٣٢\WindowsPowerShell\v١.٠\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. تنفيذ خطوات إنشاء نسخة متماثلة على الخادم الذي تم استخدامه كخادم أساسي.