{"id":93878,"date":"2020-09-10T19:42:02","date_gmt":"2020-09-10T17:42:02","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie"},"modified":"2020-09-10T19:42:02","modified_gmt":"2020-09-10T17:42:02","slug":"kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie","title":{"rendered":"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wiele os\u00f3b zna system zarz\u0105dzania baz\u0105 danych PostgreSQL, kt\u00f3ry doskonale sprawdzi\u0142 si\u0119 w ma\u0142ych instalacjach. Jednak tendencja do przechodzenia na Open Source staje si\u0119 coraz bardziej oczywista, nawet w przypadku du\u017cych firm i wymaga\u0144 korporacyjnych. W tym artykule opowiemy, jak zintegrowa\u0107 Postgresa w \u015brodowisku korporacyjnym i podzielimy si\u0119 do\u015bwiadczeniem w tworzeniu systemu kopii zapasowej (BKP) dla tej bazy danych na przyk\u0142adzie systemu kopii zapasowej Commvault. <\/p>\n<p><img decoding=\"async\" alt=\"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise\" src=\"\/wp-content\/uploads\/2020\/09\/054cb60090c1b6df6da0010c5ba35f8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPostgreSQL ju\u017c udowodni\u0142a swoj\u0105 przydatno\u015b\u0107 \u2014 system zarz\u0105dzania baz\u0105 danych doskonale dzia\u0142a, korzystaj\u0105 z niej modne cyfrowe firmy takie jak Alibaba i TripAdvisor, a brak op\u0142at licencyjnych czyni j\u0105 kusz\u0105c\u0105 alternatyw\u0105 dla takich gigant\u00f3w jak MS SQL czy Oracle DB. Ale gdy tylko zaczynamy my\u015ble\u0107 o PostgreSQL w kontek\u015bcie przedsi\u0119biorstw, natychmiast napotykamy surowe wymagania: \u201eA co z odporno\u015bci\u0105 konfiguracji? Co z odporno\u015bci\u0105 na katastrofy? Gdzie jest kompleksowy monitoring? A zautomatyzowane kopie zapasowe? A u\u017cycie bibliotek ta\u015bmowych zar\u00f3wno jako magazyn\u00f3w g\u0142\u00f3wnych, jak i zapasowych?\u201d<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise\" src=\"\/wp-content\/uploads\/2020\/09\/9b7e3d88c6e5488e1684239b546deb1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZ jednej strony PostgreSQL nie ma wbudowanych narz\u0119dzi do tworzenia kopii zapasowych, jak \u201edojrza\u0142e\u201d systemy zarz\u0105dzania baz\u0105 danych takie jak RMAN w Oracle DB czy SAP Database Backup. Z drugiej strony dostawcy korporacyjnych system\u00f3w do tworzenia kopii zapasowych (Veeam, Veritas, Commvault) mimo wsparcia dla PostgreSQL, w rzeczywisto\u015bci dzia\u0142aj\u0105 tylko z okre\u015blon\u0105 (zwykle samodzieln\u0105) konfiguracj\u0105 i z szeregiem r\u00f3\u017cnych ogranicze\u0144. <\/p>\n<p>Specjalnie zaprojektowane dla PostgreSQL systemy tworzenia kopii zapasowych, takie jak Barman, Wal-g, pg_probackup, ciesz\u0105 si\u0119 du\u017c\u0105 popularno\u015bci\u0105 w ma\u0142ych instalacjach systemu PostgreSQL lub w sytuacjach, gdy nie s\u0105 potrzebne ci\u0119\u017ckie kopie zapasowe innych element\u00f3w IT. Na przyk\u0142ad, poza PostgreSQL w infrastrukturze mog\u0105 znajdowa\u0107 si\u0119 fizyczne i wirtualne <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/\"   title=\"serwery\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1900\">serwery<\/a>, OpenShift, Oracle, MariaDB, Cassandra itp. Wszystko to powinno by\u0107 kopiowane za pomoc\u0105 wsp\u00f3lnego narz\u0119dzia. Wdro\u017cenie osobnego rozwi\u0105zania wy\u0142\u0105cznie dla PostgreSQL to z\u0142a decyzja: dane b\u0119d\u0105 kopiowane gdzie\u015b na dysk, a potem trzeba je przenie\u015b\u0107 na ta\u015bm\u0119. Taki podzia\u0142 tworzenia kopii zapasowych zwi\u0119ksza czas tworzenia kopii, a co gorsza \u2014 czas ich przywracania.<\/p>\n<p>W rozwi\u0105zaniach enterprise tworzenie kopii zapasowych instalacji odbywa si\u0119 z wykorzystaniem okre\u015blonej liczby w\u0119z\u0142\u00f3w w dedykowanym klastrze. Na przyk\u0142ad Commvault potrafi obs\u0142ugiwa\u0107 tylko dwuw\u0119z\u0142owy klaster, w kt\u00f3rym Primary i Secondary s\u0105 \u015bci\u015ble przypisane do okre\u015blonych w\u0119z\u0142\u00f3w. Backup z Primary ma sens, poniewa\u017c tworzenie kopii zapasowych z Secondary ma swoje ograniczenia. Z powodu szczeg\u00f3lnych cech DBMS, dump na Secondary nie jest tworzony, co pozostawia tylko mo\u017cliwo\u015b\u0107 wykonania kopii zapasowej plik\u00f3w.<\/p>\n<p>Aby zredukowa\u0107 ryzyko przestoj\u00f3w, przy tworzeniu systemu odpornego na awarie powstaje \u201e\u017cywa\u201d konfiguracja klastra, a Primary mo\u017ce stopniowo migrowa\u0107 mi\u0119dzy r\u00f3\u017cnymi serwerami. Na przyk\u0142ad oprogramowanie Patroni automatycznie uruchamia Primary na losowo wybranym w\u0119\u017ale klastra. SRK nie ma mo\u017cliwo\u015bci \u015bledzenia tego \u201ez pude\u0142ka\u201d, a zmiana konfiguracji prowadzi do awarii proces\u00f3w. Oznacza to, \u017ce wprowadzenie zewn\u0119trznego zarz\u0105dzania utrudnia efektywne dzia\u0142anie SRK, poniewa\u017c serwer zarz\u0105dzaj\u0105cy po prostu nie rozumie, sk\u0105d i jakie dane powinny by\u0107 kopiowane.<\/p>\n<p>Kolejnym problemem jest realizacja kopii zapasowej w Postgresie. Jest to mo\u017cliwe za pomoc\u0105 dumpu i dzia\u0142a w przypadku ma\u0142ych baz danych. Jednak w du\u017cych bazach dump trwa d\u0142ugo, wymaga du\u017cych zasob\u00f3w i mo\u017ce prowadzi\u0107 do awarii instancji bazy danych.<\/p>\n<p>Kopia zapasowa plik\u00f3w poprawia sytuacj\u0119, ale w du\u017cych bazach dzia\u0142a wolno, poniewa\u017c operuje w trybie jednow\u0105tkowym. Ponadto dostawcy wprowadzaj\u0105 szereg dodatkowych ogranicze\u0144. Czasami nie mo\u017cna jednocze\u015bnie u\u017cywa\u0107 kopii zapasowej plik\u00f3w i dumpu, innym razem brak jest wsparcia dla deduplikacji. Pojawia si\u0119 wiele problem\u00f3w, a cz\u0119sto \u0142atwiej jest zamiast Postgresa wybra\u0107 dro\u017csz\u0105, ale sprawdzon\u0105 baz\u0119 danych.<\/p>\n<h2>Nie ma odwrotu! Za nami Moskwa, programi\u015bci!<\/h2>\n<p>\nJednak niedawno nasza dru\u017cyna stan\u0119\u0142a przed trudnym wyzwaniem: w projekcie tworzenia Aplikacji Informatycznej dla OSAGO 2.0, w kt\u00f3rym budowali\u015bmy infrastruktur\u0119 IT, programi\u015bci dla nowego systemu wybrali PostgreSQL. <\/p>\n<p>Du\u017cym deweloperom oprogramowania znacznie \u0142atwiej jest korzysta\u0107 z \u201emodnych\u201d rozwi\u0105za\u0144 open-source. W zespole Facebooka wystarczaj\u0105co wielu specjalist\u00f3w wspiera dzia\u0142anie tej bazy danych. W przypadku RS\u0410 wszystkie zadania \u201edrugiego dnia\u201d spada\u0142y na nasze barki. Musieli\u015bmy zapewni\u0107 odporno\u015b\u0107 na awarie, zbudowa\u0107 klaster i oczywi\u015bcie zorganizowa\u0107 tworzenie kopii zapasowych. Logika dzia\u0142a\u0144 by\u0142a nast\u0119puj\u0105ca: <\/p>\n<ul>\n<li>Nauczy\u0107 SRK wykonywa\u0107 kopi\u0119 zapasow\u0105 z g\u0142\u00f3wnego w\u0119z\u0142a klastra. W tym celu SRK musi go zlokalizowa\u0107 \u2014 oznacza to, \u017ce potrzebna jest integracja z odpowiednim rozwi\u0105zaniem do zarz\u0105dzania klastrem PostgreSQL. W przypadku RSC u\u017cyto oprogramowania Patroni.<\/li>\n<li>Okre\u015bli\u0107 typ kopii zapasowej, w zale\u017cno\u015bci od obj\u0119to\u015bci danych i wymaga\u0144 dotycz\u0105cych przywracania. Na przyk\u0142ad, gdy konieczne jest przywracanie stron granularnie, nale\u017cy u\u017cy\u0107 zrzutu, a je\u015bli bazy s\u0105 du\u017ce i granularne przywracanie nie jest potrzebne \u2014 pracowa\u0107 na poziomie plik\u00f3w.<\/li>\n<li>Doda\u0107 do rozwi\u0105zania mo\u017cliwo\u015b\u0107 blokowej kopii zapasowej, aby tworzy\u0107 kopi\u0119 zapasow\u0105 w trybie wielow\u0105tkowym.<\/li>\n<\/ul>\n<p>\nJednocze\u015bnie na samym pocz\u0105tku postawili\u015bmy sobie za cel stworzenie efektywnego i prostego systemu bez monsterowych zwi\u0105zk\u00f3w dodatkowych komponent\u00f3w. Im mniej podp\u00f3rek, tym mniejsze obci\u0105\u017cenie dla personelu i mniejsze ryzyko awarii SRK. Podej\u015bcia, w kt\u00f3rych wykorzystywano Veeam i RMAN, od razu wyeliminowali\u015bmy, poniewa\u017c zestaw dw\u00f3ch rozwi\u0105za\u0144 ju\u017c sugeruje niepewno\u015b\u0107 systemu.<\/p>\n<h2>Troch\u0119 magii dla przedsi\u0119biorstw<\/h2>\n<p>\nZatem musieli\u015bmy zapewni\u0107 niezawodne tworzenie kopii zapasowych dla 10 klastr\u00f3w po 3 w\u0119z\u0142y ka\u017cdy, przy czym w zapasowym centrum danych znajduje si\u0119 taka sama infrastruktura. Centrum danych w kontek\u015bcie PostgreSQL dzia\u0142a zgodnie z zasad\u0105 active-passive. Ca\u0142kowita obj\u0119to\u015b\u0107 baz danych wynosi\u0142a 50 TB. Z tym \u0142atwo sobie poradzi ka\u017cdy system SRK klasy korporacyjnej. Ale problem polega\u0142 na tym, \u017ce pierwotnie w Postgres nie ma nawet zaczepu do pe\u0142nej i g\u0142\u0119bokiej kompatybilno\u015bci z systemami tworzenia kopii zapasowych. Dlatego musieli\u015bmy szuka\u0107 rozwi\u0105zania, kt\u00f3re od samego pocz\u0105tku ma maksymaln\u0105 funkcjonalno\u015b\u0107 w po\u0142\u0105czeniu z PostgreSQL i dopracowa\u0107 system. <\/p>\n<p>Przeprowadzili\u015bmy 3 wewn\u0119trzne \u201ehackathony\u201d \u2014 przestudiowali\u015bmy ponad pi\u0119\u0107dziesi\u0105t opracowa\u0144, testowali\u015bmy je, wprowadzali\u015bmy zmiany w zwi\u0105zku z naszymi hipotezami, a nast\u0119pnie ponownie testowali\u015bmy. Analizuj\u0105c dost\u0119pne opcje, wybrali\u015bmy Commvault. Ten produkt ju\u017c \u201ez pude\u0142ka\u201d m\u00f3g\u0142 wsp\u00f3\u0142pracowa\u0107 z najprostsz\u0105 klastrow\u0105 instalacj\u0105 PostgreSQL, a jego otwarta architektura budzi\u0142a nadziej\u0119 (kt\u00f3ra si\u0119 spe\u0142ni\u0142a) na udane dopracowanie i integracj\u0119. Commvault potrafi r\u00f3wnie\u017c wykonywa\u0107 kopie zapasowe dziennik\u00f3w PostgreSQL. Na przyk\u0142ad, Veritas NetBackup w kontek\u015bcie PostgreSQL potrafi robi\u0107 tylko pe\u0142ne kopie zapasowe.<\/p>\n<p>Wi\u0119cej o architekturze. Serwery zarz\u0105dzaj\u0105ce Commvault zosta\u0142y zainstalowane w ka\u017cdym z dw\u00f3ch centr\u00f3w danych w konfiguracji CommServ HA. System jest lustrzany, zarz\u0105dzany przez jedn\u0105 konsol\u0119 i pod wzgl\u0119dem HA spe\u0142nia wszystkie wymagania przedsi\u0119biorstwa.<\/p>\n<p><img decoding=\"async\" alt=\"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise\" src=\"\/wp-content\/uploads\/2020\/09\/461b05425385435fee233846516e328d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nW ka\u017cdym centrum danych uruchomili\u015bmy r\u00f3wnie\u017c po dwa fizyczne serwery medi\u00f3w, do kt\u00f3rych przez SAN za pomoc\u0105 Fibre Channel pod\u0142\u0105czono specjalnie przystosowane macierze dyskowe i biblioteki ta\u015bmowe do backup\u00f3w. Rozci\u0105gni\u0119te bazy deduplikacji zapewni\u0142y odporno\u015b\u0107 na awarie dla serwer\u00f3w medi\u00f3w, a po\u0142\u0105czenie ka\u017cdego serwera z ka\u017cdym CSV umo\u017cliwia ci\u0105g\u0142\u0105 prac\u0119 w przypadku awarii kt\u00f3rejkolwiek z komponent\u00f3w. Architektura systemu pozwala na kontynuowanie backupu, nawet je\u015bli jedno z centr\u00f3w danych ulegnie awarii.<\/p>\n<p>Patroni okre\u015bla Primary-nod\u0119 dla ka\u017cdego klastra. Mo\u017ce to by\u0107 dowolna wolna nod w centrum danych \u2014 ale tylko w g\u0142\u00f3wnym. W zapasowym wszystkie nod s\u0105 Secondary. <\/p>\n<p>Aby Commvault rozumia\u0142, kt\u00f3ra nod klastra jest Primary, zintegrowali\u015bmy system (dzi\u0119ki otwartej architekturze rozwi\u0105zania) z Postgres. Stworzono do tego skrypt, kt\u00f3ry informuje o bie\u017c\u0105cej lokalizacji Primary-nody zarz\u0105dzaj\u0105cego. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/dts-shicago\/\"   title=\"serwera\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2881\">serwera<\/a> Commvault.<\/p>\n<p>Og\u00f3lnie rzecz bior\u0105c, proces wygl\u0105da tak:<\/p>\n<p>Patroni wybiera Primary \u2192 Keepalived uruchamia IP klastra i uruchamia skrypt \u2192 agent Commvault na wybranej nodzie klastra otrzymuje powiadomienie, \u017ce to Primary \u2192 Commvault automatycznie rekonfiguruje backup w ramach pseudoklienta.<\/p>\n<p><img decoding=\"async\" alt=\"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise\" src=\"\/wp-content\/uploads\/2020\/09\/a3d909bdff1c219fd98cc49cf3054a23.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZalet\u0105 takiego podej\u015bcia jest to, \u017ce rozwi\u0105zanie nie wp\u0142ywa ani na sp\u00f3jno\u015b\u0107, ani na poprawno\u015b\u0107 log\u00f3w, ani na przywracanie instancji Postgres. Jest r\u00f3wnie\u017c \u0142atwe do skalowania, poniewa\u017c nie ma ju\u017c potrzeby ustalania dla Commvault, kt\u00f3re nod s\u0105 Primary, a kt\u00f3re Secondary. Wystarczy, \u017ce system rozumie, gdzie jest Primary, a liczba w\u0119z\u0142\u00f3w mo\u017ce by\u0107 zwi\u0119kszona praktycznie do dowolnej warto\u015bci.<\/p>\n<p>Rozwi\u0105zanie nie aspiruje do doskona\u0142o\u015bci i ma swoje niuanse. Commvault potrafi robi\u0107 backup tylko ca\u0142ej instancji, a nie pojedynczych baz. Dlatego dla ka\u017cdej bazy danych utworzono oddzieln\u0105 instancj\u0119. Rzeczywi\u015bci klienci s\u0105 po\u0142\u0105czeni w wirtualne pseudoklienty. Ka\u017cdy pseudoklient Commvault reprezentuje klaster UNIX. Dodaje si\u0119 do niego te nod-y klastra, na kt\u00f3rych zainstalowano agenta Commvault dla Postgres. W rezultacie wszystkie wirtualne nod-y pseudoklienta s\u0105 backupowane jako jedna instancja. <\/p>\n<p>Wewn\u0105trz ka\u017cdego pseudo-klienta znajduje si\u0119 aktywna noda klastra. To w\u0142a\u015bnie j\u0105 okre\u015bla nasze rozwi\u0105zanie integracyjne dla Commvault. Zasada jego dzia\u0142ania jest do\u015b\u0107 prosta: je\u015bli na nodzie uruchamia si\u0119 klastrowy IP, skrypt ustawia w binarnej wersji agenta Commvault parametr \"aktywny w\u0119ze\u0142\" \u2014 praktycznie skrypt ustawia \"1\" w odpowiedniej cz\u0119\u015bci pami\u0119ci. Agent przesy\u0142a te dane do CommServe, a Commvault wykonuje kopi\u0119 zapasow\u0105 z odpowiedniego w\u0119z\u0142a. Ponadto, na poziomie skryptu sprawdzana jest poprawno\u015b\u0107 konfiguracji, co pomaga unikn\u0105\u0107 b\u0142\u0119d\u00f3w podczas uruchamiania kopii zapasowej.<\/p>\n<p>Przy tym du\u017cej bazy danych s\u0105 kopii zapasowych blokowo w kilku strumieniach, spe\u0142niaj\u0105c wymagania RPO i okna kopii zapasowej. Obci\u0105\u017cenie systemu jest niewielkie: pe\u0142ne kopie nie zdarzaj\u0105 si\u0119 tak cz\u0119sto, w pozosta\u0142e dni zbierane s\u0105 tylko logi, zw\u0142aszcza w okresach niskiego obci\u0105\u017cenia. <\/p>\n<p>Zreszt\u0105 wprowadzili\u015bmy osobne polityki dla kopii zapasowych archiwalnych dziennik\u00f3w PostgreSQL \u2014 s\u0105 one przechowywane wed\u0142ug innych zasad, kopiowane wed\u0142ug innego harmonogramu, a dla nich nie w\u0142\u0105czana jest deduplikacja, poniewa\u017c te dzienniki zawieraj\u0105 unikalne dane.<\/p>\n<p>Aby zapewni\u0107 sp\u00f3jno\u015b\u0107 ca\u0142ej infrastruktury IT, na ka\u017cdej z nod klastra zainstalowano oddzielnych klient\u00f3w plik\u00f3w Commvault. Wykluczaj\u0105 one z kopii zapasowych pliki Postgres i s\u0105 przeznaczone tylko do tworzenia kopii zapasowej systemu operacyjnego oraz aplikacji. Dla tej cz\u0119\u015bci danych r\u00f3wnie\u017c przewidziano swoj\u0105 polityk\u0119 i w\u0142asny czas przechowywania. <\/p>\n<p><img decoding=\"async\" alt=\"Jak wprowadzi\u0107 \u00abwolne\u00bb PostgreSQL w surowe \u015brodowisko enterprise\" src=\"\/wp-content\/uploads\/2020\/09\/80c74ee17f441308bd8c3b154c1acafc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nObecnie SRK nie wp\u0142ywa na produktywne us\u0142ugi, ale je\u015bli sytuacja si\u0119 zmieni, w Commvault mo\u017cna aktywowa\u0107 system ogranicze\u0144 obci\u0105\u017cenia. <\/p>\n<p><strong>Nadaje si\u0119? Nadaje si\u0119!<\/strong><\/p>\n<p>Zatem uzyskali\u015bmy nie tylko dzia\u0142aj\u0105cy, ale i w pe\u0142ni zautomatyzowany backup dla klastrowej instalacji PostgreSQL, kt\u00f3ry spe\u0142nia wszystkie wymagania wyzwa\u0144 przedsi\u0119biorstw.<\/p>\n<p>Parametry RPO i RTO w 1 godzin\u0119 i 2 godziny s\u0105 przekroczone z zapasem, co oznacza, \u017ce system b\u0119dzie je spe\u0142nia\u0142 tak\u017ce przy znacznym wzro\u015bcie obj\u0119to\u015bci przechowywanych danych. Wbrew wielu w\u0105tpliwo\u015bciom, PostgreSQL i \u015brodowisko przedsi\u0119biorstw okaza\u0142y si\u0119 ca\u0142kowicie kompatybilne. I teraz z w\u0142asnego do\u015bwiadczenia wiemy, \u017ce backup dla takich DBMS jest mo\u017cliwy w najr\u00f3\u017cniejszych konfiguracjach. <\/p>\n<p>Oczywi\u015bcie, na tej drodze musieli\u015bmy zetrze\u0107 siedem par \u017celaznych but\u00f3w, pokona\u0107 szereg trudno\u015bci, natkn\u0105\u0107 si\u0119 na kilka pu\u0142apek oraz naprawi\u0107 pewn\u0105 ilo\u015b\u0107 b\u0142\u0119d\u00f3w. Ale teraz podej\u015bcie zosta\u0142o ju\u017c przetestowane i mo\u017ce by\u0107 stosowane do wdra\u017cania Open Source zamiast proprietary RDBMS w trudnych warunkach enterprise.<\/p>\n<p>Czy pr\u00f3bowali\u015bcie pracowa\u0107 z PostgreSQL w \u015brodowisku korporacyjnym?<\/p>\n<p><i>Autorzy: <\/i><\/p>\n<p><i>Oleg Lawrenow, in\u017cynier-projektant system\u00f3w przechowywania danych w \"Infosytemy Jet\"<\/i><\/p>\n<p><i>Dmitrij Jerykin, in\u017cynier-projektant system\u00f3w obliczeniowych w \"Infosytemy Jet\"<\/i><br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/518384\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0421\u0423\u0411\u0414 PostgreSQL, \u0438 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443 \u043d\u0430 Open Source \u0441\u0442\u0430\u043b\u0430 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u043e\u0439, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0438 enterprise \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c Postgres \u0432 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443, \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0421\u0420\u041a) \u0434\u043b\u044f \u044d\u0442\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":93879,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-93878","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0421\u0423\u0411\u0414 PostgreSQL, \u0438 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u00ab\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e\u00bb PostgreSQL \u0432 \u0441\u0443\u0440\u043e\u0432\u043e\u0435 enterprise \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0421\u0423\u0411\u0414 PostgreSQL, \u0438 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-10T17:42:02+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-10T17:42:02+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jak wprowadzi\u0107 \u201ewoln\u0105\u201d PostgreSQL w trudne \u015brodowisko enterprise | ProHoster","description":"Wielu zna system baz danych PostgreSQL, i sprawdzi\u0142 si\u0119 doskonale w ma\u0142ych instalacjach.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u00ab\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e\u00bb PostgreSQL \u0432 \u0441\u0443\u0440\u043e\u0432\u043e\u0435 enterprise \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 | ProHoster","og:description":"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0421\u0423\u0411\u0414 PostgreSQL, \u0438 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0430 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-vpisat-svobodnuyu-postgresql-v-surovoe-enterprise-okruzhenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-10T17:42:02+00:00","article:modified_time":"2020-09-10T17:42:02+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"93878","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:38:42","updated":"2026-02-09 21:41:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/93878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=93878"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/93878\/revisions"}],"predecessor-version":[{"id":160161,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/93878\/revisions\/160161"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/93879"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=93878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=93878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=93878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}