BriefCamPostgreSQL Veritabanını Çoğaltma
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.
Birincil sunucu alanı yeterliyse, yineleme oluşturmaya çalışmadan önce (pg_dump aracını kullanarak) veritabanının tam yedeğini alın.
Birincil sunucunun IP adresini not edin. Bu belgenin ilerleyen bölümlerinde <primaryIP> olarak anılacaktır.
İkincil sunucunun IP adresini not edin. Bu belgenin ilerleyen kısımlarında <secondaryIP> olarak anılacaktır.
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.configWeb Hizmetleri:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): ODBC 64-bit girişleri ( Sunucu alanı)

İ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.
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.
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.
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.
PostgreSQL_DataBriefCamDizinin asıl yolunu kullanın. Varsayılan değerC:\PostgreSQL_Data. Ancak, bu farklı ayarlarda değişiklik gösterebilir (bu belgenin ilerleyen saatlerinde varsayılan BriefCamyol kullanılacaktır).BriefCamGerçek
pgsql.exeyolu kullanın. Varsayılan yolC:\PostgreSQL\bin\psql.exe(bu konunun ilerleyen kısımlarında, varsayılan BriefCamyol kullanılacaktır).
Ana Sunucudaki Adımlar
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.confPowerShell'de aşağıdaki komutları yürüterek orijinal
configvehbadosyaları 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"))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
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Çoğaltma için bir rol/kullanıcı oluşturun ve parolasını ayarlayın (örnek komutlarda belirtilen parolayı kullanmayın).
Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresAşağıdaki komutu yürütün (önceki adımda açılan SQL kabuğunda):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
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 md5PowerShell '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"Yapılandırma dosyalarının dosyada yaptığınız değişiklikleri aşağıdaki
postgres.confgibi içerdiğini doğrulayın:Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresAş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');Çıktının altında artık
postgresql.confdosyaya eklenen satırları görebildiğinizi doğrulayın.
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: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;
Çıktının altında artık
pg_hba.confdosyaya eklenen satırları görebildiğinizi doğrulayın.
İkinci Sunucudaki Adımlar
BriefCamPostgreSQL uygulamasını yükleyin.
İkincil PostgreSQL sunucusunda, PowerShell'de yönetici olarak aşağıdakileri çalıştırarak BriefCamPostgreSQL hizmetini durdurun:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Veri dizinini aşağıdaki şekilde temizleyin:
PostgreSQL_DataKlasörü yeniden adlandırın.Create a new folder named
PostgreSQL_Dataand in the folder’s Permissions tab, add Full control to Everyone.
Birincil sunucudan ikincil sunucuya bir PostgreSQL temel yedeğini aşağıdaki şekilde gerçekleştirin:
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=standby1Potansiyel 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.
İ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
Birincil PostgreSQL sunucusunun SQL kabuğuna PowerShell konsolundan şu komutu kullanarak bağlanın:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresKabukta 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.
Tüm BC sunucularındaki ana bilgisayar dosyasını <birincilIP> yerine <ikincilIP>'yi yansıtacak şekilde değiştirin.
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
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")).tarYedekleme dosyaları için bir klasör oluşturun, örneğin: .
E:\PostgresBackups\Yedekleme betik dosyaları için bir klasör oluşturun, örneğin: .
E:\PostgresBackupScripts\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.
-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
Bu, oluşturulan tüm dosyaları kaldıracaktır.
Yukarıdaki 4. adımın altında belirtildiği gibi yedeklemelerin tutma dönemini ayarlayın.
Windows görev zamanlayıcısına aşağıdaki gibi yedekleme betiğini ekleyin:
Program/komut dosyası alanını aşağıdaki yola ayarlayın:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argüman ekle alanında aşağıdakileri ayarlayın:
E:\PostgresBackupScripts\backup.ps1
Tetikleyicileri ve zamanlamayı buna göre ayarlayın.

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

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.
İşletim sistemini sıfırdan kurun.
Geçerli birincil sunucudaki Birincil Sunucu bölümündeki Adımlar 'daki adımları gerçekleştirin.
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:
Birincil sunucu olarak kullanılan sunucudaki PostgreSQL hizmetini durdurun.
BriefCamSistemin düzgün çalıştığını doğrulayın.
Sunucuda birincil sunucu olarak kullanılan bir çoğaltma oluşturma adımlarını gerçekleştirin.