Skip to main content

BriefCam Kurulum Kılavuzu

BriefCamPostgreSQL Veritabanını Çoğaltma

Son güncelleme: 6 dakikalık okuma
Sürüm2025r1
DilTürkçe

Bu bölüm, PostgreSQL veritabanının replikasyonunun nasıl kolaylaştırılacağını detaylandırır.

Ön Koşullar, Notlar ve Sözleşmeler

Not

Bu belgedeki örneklerden komutları yapıştırırken Komut İstemi (cmd) değil, Windows PowerShell kullanın.

  1. Birincil sunucu alanı yeterliyse, yineleme oluşturmaya çalışmadan önce (pg_dump aracını kullanarak) veritabanının tam yedeğini alın.

  2. Birincil sunucunun IP adresini not edin. Bu belgenin ilerleyen bölümlerinde <primaryIP> olarak anılacaktır.

  3. İkincil sunucunun IP adresini not edin. Bu belgenin ilerleyen kısımlarında <secondaryIP> olarak anılacaktır.

  4. PGSQL sunucusunda, aşağıdaki üç BriefCamkurulum bileşeninin tümünün ana bilgisayar adına veya IP adresine ayarlanması gerekir. Hepsinin aynı yöntemi kullandığından emin olun (tutarlılığı sağlamak için). Bunu yapmak için, aşağıdaki dosyalarda veya ayarlarda connectionStringPostgreSQL'i ararsınız:

    • VS Sunucusu: C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.config

    • Web Hizmetleri: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): ODBC 64-bit girişleri ( Sunucu alanı)

      ODBC Driver Setup.png
  5. İkincil sunucuyu oluşturmadan önce sistemlerin tam işlevselliğini test etmeniz önerilir. Değiştirdiğiniz parametrelerin tüm orijinal değerlerini not aldığınızdan emin olun.

  6. BriefCam Server bileşenlerinin dağıtıldığı tüm sunucularda, ana bilgisayar dosyasını birincil PostgreSQL veritabanı sunucusunu işaret edecek şekilde ayarlayın - bu, DNS'yi geçersiz kılacaktır.

  7. IP adreslerini değil ana bilgisayar adlarını kullanmak için Ortam AyarlarıBriefCam Administrator Consolebölümünü açın ve DB. LocalStorageAddress ve VideoProductsPath ayarlarını ayarlayın.

  8. PostgreSQL base_backup'ın hızı, ortamın ayarına (SSD/HDD/NIC hızı) bağlı olarak önemli ölçüde farklılık gösterir. Genel bir kural olarak, bir sanal ortamda İSCSI depolamasında (10 Gb/sn HDD dizisine bağlanır) ve 1 Gb/sn ağ NIC'inde (vmxnet3), 90 GB BriefCamveri içeren PostgreSQL veritabanının temel yedeğini gerçekleştirmek yaklaşık 40 dakika sürer.

    Temel yedeklemenin yineleme oluşturma işlemi için zaman aralığını düzgün bir şekilde ayarlayabilmesi için ne kadar zaman alacağını tahmin edebilmek amacıyla gerçek ortamda hızı test etmeyi düşünün.

  9. PostgreSQL_DataBriefCamDizinin asıl yolunu kullanın. Varsayılan değer C:\PostgreSQL_Data. Ancak, bu farklı ayarlarda değişiklik gösterebilir (bu belgenin ilerleyen saatlerinde varsayılan BriefCamyol kullanılacaktır).

  10. BriefCamGerçek pgsql.exeyolu kullanın. Varsayılan yol C:\PostgreSQL\bin\psql.exe(bu konunun ilerleyen kısımlarında, varsayılan BriefCamyol kullanılacaktır).

Ana Sunucudaki Adımlar

  1. Birincil PostgreSQL sunucusu sql shell'ine bağlanın ve aşağıdaki komutları yürüterek yapılandırma ve hba dosyalarının konumunu doğrulayın:

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;

    Burada beklenen çıktının bir örneği verilmiştir ( PostgreSQL_Dataklasörün konumuna bağlı olarak):

    C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.conf

  2. PowerShell'de aşağıdaki komutları yürüterek orijinal configve hbadosyaları yedekleyin:

    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. Yedek dosyalarının aşağıdaki komut yürütülerek oluşturulduğunu doğrulayın:

    dir C:/PostgreSQL_Data/*.conf.*

    Beklenen çıkış:

    PS C:\Users\Administrator> dizini: C/PostgreSQL_Data/*.conf.*

    Dizin: C:\PostgreSQL_Data

    Mod LastWriteTime Uzunluk Adı

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

    -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.confDosyaya parametreleri ekleyin. Bunu, dosyayı bir metin düzenleyicisinde açarak ve dosyanın sonuna aşağıdaki satırları ekleyerek ( Customized Optionsbölümün hemen altında) yaparsınız:

    wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6

  5. Çoğaltma için bir rol/kullanıcı oluşturun ve parolasını ayarlayın (örnek komutlarda belirtilen parolayı kullanmayın).

    1. Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:

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

    2. Aşağıdaki komutu yürütün (önceki adımda açılan SQL kabuğunda):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. pg_hba.confDosyaya parametreleri ekleyin. Bunu, dosyayı bir metin düzenleyicisinde açarak ve dosyaya aşağıdaki satırları ekleyerek ( satırın #replication privilegealtında) yaparsınız:

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

  7. PowerShell 'i yönetici olarak açıp aşağıdaki komutları çalıştırarak birincil PostgreSQL sunucusunda BriefCamPostgreSQL hizmetini yeniden başlatın:

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

  8. Yapılandırma dosyalarının dosyada yaptığınız değişiklikleri aşağıdaki postgres.confgibi içerdiğini doğrulayın:

    1. Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:

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

    2. Aşağıdaki komutları kullanarak PostgreSQL conf dosyasına eklenen özel yapılandırmaları SQL kabuk yoluyla yazdırın:

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

    3. Çıktının altında artık postgresql.confdosyaya eklenen satırları görebildiğinizi doğrulayın.

      Replicating postgresql conf.png
  9. Yapılandırma dosyalarının dosyada yaptığınız değişiklikleri aşağıdaki pg_hba.confgibi içerdiğini doğrulayın:

    1. Aşağıdaki komutları yürüterek birincil PostgreSQL sunucusunun SQL Shell'ine bağlanın:

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

      \pset sayfalayıcı kapalı

      pg_read_file('pg_hba.conf') öğesini seçin;

    2. Çıktının altında artık pg_hba.confdosyaya eklenen satırları görebildiğinizi doğrulayın.

      Replicating pg_hba conf.png

İkinci Sunucudaki Adımlar

  1. BriefCamPostgreSQL uygulamasını yükleyin.

  2. İkincil PostgreSQL sunucusunda, PowerShell'de yönetici olarak aşağıdakileri çalıştırarak BriefCamPostgreSQL hizmetini durdurun:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Veri dizinini aşağıdaki şekilde temizleyin:

    1. PostgreSQL_DataKlasörü yeniden adlandırın.

    2. Create a new folder named PostgreSQL_Data and in the folder’s Permissions tab, add Full control to Everyone.

      Replicating PostgreSQL properties.png
  4. Birincil sunucudan ikincil sunucuya bir PostgreSQL temel yedeğini aşağıdaki şekilde gerçekleştirin:

    1. PowerShell'de yönetici olarak aşağıdaki komutu gerçekleştirin:

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

    2. Potansiyel olarak uzun veritabanı yedeklemesi sırasında tüm sunuculardaki tüm BriefCamhizmetlerin durdurulması önerilir. Veri kümesi boyutuna bağlı olarak bu adımı tüm hizmetleri durdurmadan gerçekleştirmek mümkündür.

  5. İkincil PostgreSQL sunucusunda, bir yönetici olarak PowerShell'de aşağıdaki komutları yürüterek BriefCamPostgreSQL hizmetini başlatın:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Çoğaltma İşlemini Doğrula

  1. Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:

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

  2. Kabukta aşağıdaki komutu çalıştırarak gecikme SQL kontrol edin ( write_lagdeğer 00:00:00 ile başlamalıdır):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Bu, beklenen çıktının bir örneğidir:

    postgres=# SEÇ write_lag,client_addr FROM pg_stat_replication ;

    write_lag | client_addr

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

    00:00:00.003972 | 10.30.30.30

    (1 satır)

    postgres=#

Not

Bu kontrol günde en az bir kez yapılmalıdır.

Birincil Sunucu olarak hareket etmek için İkincil Sunucuyu etkinleştirin

Bu bölüm, birincil hatanın olduğu ve kurtarma/geçiş işleminin gerekli olduğu durumlarda ikincil sunucuyu etkinleştirme prosedürünü PostgreSQL veritabanının birincil örneği olarak açıklar.

  1. Tüm BC sunucularındaki ana bilgisayar dosyasını <birincilIP> yerine <ikincilIP>'yi yansıtacak şekilde değiştirin.

  2. Durumu kontrol edin ve PowerShell konsolunda aşağıdaki komutları çalıştırarak birincil sunucu PGSQL olmak için ikincil sunucu PGSQL'i yükseltin (PowerShell'i yönetici içinde çalıştırdığınızdan ve pg_ctl.exe dosyasının ve PostgreSQL_Data klasörünün yollarını buna göre düzenlediğinizden emin olun):

    • c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”

    Örnek çıkış:

    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”

    Örnek çıkış:

    waiting for server to promote.... done server promoted

İkincil Sunucuda Periyodik Yedekleme Oluşturun

Windows Görev Zamanlayıcısında PG_DUMP Betikleri
  1. Veritabanı kimlik bilgilerini içeren %APPDATA%\postgresql\pgpass.confdosyayı oluşturun (yani: *:5432:*:dbadmin:Qwerty123). Ayrıntılar için bkz. https://www.postgresql.org/docs/10/libpq-pgpass. html ve https://www.postgresql.org/docs/10/libpq-envars. html (harici bağlantılar).

    Yukarıdakiler çalışmazsa, betiklerin parolası yürütme hattında belirtilebilir:

    $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. Yedekleme dosyaları için bir klasör oluşturun, örneğin: .E:\PostgresBackups\

  3. Yedekleme betik dosyaları için bir klasör oluşturun, örneğin: .E:\PostgresBackupScripts\

  4. Aşağıda gösterilen üç komutla E:\PostgresBackupScripts\backup.ps1şu konumda yedekleme komut dosyası oluşturun:

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tar

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

    • #ls -file E:\PostgresBackups\db*.tar | where {(get-date) - $_.creationtime -gt 15.} | Remove-Item -Verbose

    *Yukarıdaki 3. komut satırın başındaki "#" işareti kaldırılarak ve geriye doğru gün sayısını gösterdiği için 15 sayısını değiştirerek gerekli yedek tutma dönemine göre ayarlanmalıdır. Örneğin, betiği 7 günden eski tüm dosyaları silecek şekilde yapılandırmak isterseniz, 15 ila 7 sayısını değiştirmeniz gerekir.

  5. -gt'yi 0'a ayarlayarak yedek oluşturmayı ve eski dosyaların kaldırılmasını test edin ve Windows cmd'de aşağıdaki komutu çalıştırın:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Bu, oluşturulan tüm dosyaları kaldıracaktır.

  6. Yukarıdaki 4. adımın altında belirtildiği gibi yedeklemelerin tutma dönemini ayarlayın.

  7. Windows görev zamanlayıcısına aşağıdaki gibi yedekleme betiğini ekleyin:

    1. Program/komut dosyası alanını aşağıdaki yola ayarlayın:

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

    2. Argüman ekle alanında aşağıdakileri ayarlayın: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Tetikleyicileri ve zamanlamayı buna göre ayarlayın.

    Replicating set triggers.png
  9. Kullanıcının oturum açmış olmasına bakılmaksızın görevin çalışmasını ayarlayın ve parolayı kaydedin.

    Replicating task scheduler.png
  10. Bir test sunucusunda, dosyaların geri yüklenebilir olup olmadığını kontrol edin. Bu test devam eden rutininizin bir parçası olmalıdır.

İşte geri yükleme komutunun bir örneği:

C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar

Parametre, bırakma ve oluşturma -cişlemini gerçekleştirir. Ek seçenekler için bkz.

“C:\PostgreSQL\bin\pg_restore.exe --help” 

Düzeltildikten Sonra Birincil Sunucuya Geri Dönün

Birincil sunucuyla ilgili bir sorun olduğundan ikincil bir sunucu kullanıyorsanız, bu bölüm, sorun düzeltildikten sonra birincil sunucuya nasıl geri döneceğinizi açıklar.

Not

Aşağıdaki işlemin ayrıntıları, birincil sunucunun ne tür bir arıza yaşadığına bağlı olarak değişebilir. En ciddi vakayı (birincil sunucunun mutlak bir çökmesi) göz önünde bulundurmak için, aşağıdaki adımlar yeni bir kurulumu içerir.

  1. İşletim sistemini sıfırdan kurun.

  2. Geçerli birincil sunucudaki Birincil Sunucu bölümündeki Adımlar 'daki adımları gerçekleştirin.

  3. Yeniden kurulan sunucunun şimdi teknik olarak "ikincil" örnek olduğunu göz önünde bulundurarak, sunucular üzerinde aşağıdaki bölümlerde açıklanan tüm eylemleri gerçekleştirin:

  4. Birincil sunucu olarak kullanılan sunucudaki PostgreSQL hizmetini durdurun.

  5. BriefCamSistemin düzgün çalıştığını doğrulayın.

  6. Sunucuda birincil sunucu olarak kullanılan bir çoğaltma oluşturma adımlarını gerçekleştirin.