「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法

PostgreSQL DBMS は倚くの人に銎染みがあり、小芏暡なむンストヌルでその効果が実蚌されおいたす。 しかし、倧䌁業や゚ンタヌプラむズ芁件に関しおも、オヌプン゜ヌスぞの傟向がたすたす明らかになっおきおいたす。 この蚘事では、Postgres を䌁業環境に統合する方法を説明し、䟋ずしお Commvault バックアップ システムを䜿甚しおこのデヌタベヌスのバックアップ システム (BSS) を䜜成した経隓を共有したす。

「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法
PostgreSQL はすでにその䟡倀を蚌明しおいたす。DBMS は優れた機胜を持ち、Alibaba や TripAdvisor などの流行のデゞタル ビゞネスで䜿甚されおおり、ラむセンス料がかからないため、MS SQL や Oracle DB などのモンスタヌに代わる魅力的な代替品ずなっおいたす。 しかし、゚ンタヌプラむズ環境における PostgreSQL に぀いお考え始めるずすぐに、次のような厳しい芁件に盎面したす。 灜害耐性 包括的な監芖はどこにあるのでしょうか 自動バックアップに぀いおはどうですか? テヌプ ラむブラリを盎接ず二次ストレヌゞの䞡方で䜿甚するのはどうですか?」

「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法
䞀方で、PostgreSQL には、Oracle DB の RMAN や SAP デヌタベヌス バックアップなどの「アダルト」DBMS のようなバックアップ ツヌルが組み蟌たれおいたせん。 䞀方、䌁業バックアップ システムのサプラむダヌ (Veeam、Veritas、Commvault) は、PostgreSQL をサポヌトしおいたすが、実際には、特定の (通垞はスタンドアロン) 構成ず䞀連のさたざたな制限でのみ動䜜したす。

Barman、Wal-g、pg_probackup など、PostgreSQL 甚に特別に蚭蚈されたバックアップ システムは、PostgreSQL DBMS の小芏暡なむンストヌルや、IT 環境の他の芁玠の倧芏暡なバックアップが必芁ない堎合に非垞に人気がありたす。 たずえば、むンフラストラクチャには、PostgreSQL に加えお、物理サヌバヌおよび仮想サヌバヌ、OpenShift、Oracle、MariaDB、Cassandra などが含たれる堎合がありたす。 これらすべおを共通のツヌルでバックアップするこずをお勧めしたす。 PostgreSQL 専甚の別の゜リュヌションをむンストヌルするのは悪い考えです。デヌタはディスクのどこかにコピヌされ、その埌テヌプに削陀する必芁がありたす。 この二重バックアップにより、バックアップ時間が長くなり、さらに重芁なこずに、リカバリ時間も長くなりたす。

゚ンタヌプラむズ ゜リュヌションでは、むンストヌルのバックアップは、専甚クラスタヌ内の特定の数のノヌドで行われたす。 同時に、たずえば、Commvault は、プラむマリずセカンダリが特定のノヌドに厳密に割り圓おられおいる XNUMX ノヌド クラスタでのみ動䜜したす。 たた、セカンダリからのバックアップには制限があるため、プラむマリからバックアップするこずのみが意味がありたす。 DBMS の特性により、セカンダリではダンプが䜜成されないため、ファむル バックアップの可胜性のみが残りたす。

ダりンタむムのリスクを軜枛するために、フォヌルト トレラント システムを䜜成するずきに、「ラむブ」クラスタヌ構成が䜜成され、プラむマリは異なるサヌバヌ間で段階的に移行できたす。 たずえば、Patroni ゜フトりェア自䜓は、ランダムに遞択されたクラスタヌ ノヌドでプラむマリを起動したす。 IBS には、そのたたではこれを远跡する方法がなく、構成が倉曎されるずプロセスが䞭断したす。 ぀たり、倖郚制埡を導入するず、ISR が効率的に機胜しなくなりたす。これは、制埡サヌバヌが、どこからどのデヌタをコピヌする必芁があるのか​​を理解しおいないためです。

もう XNUMX ぀の問題は、Postgres でのバックアップの実装です。 これはダンプによっお可胜であり、小芏暡なデヌタベヌスで動䜜したす。 ただし、倧芏暡なデヌタベヌスでは、ダンプに時間がかかり、倚くのリ゜ヌスが必芁ずなり、デヌタベヌス むンスタンスの障害に぀ながる可胜性がありたす。

ファむル バックアップによっお状況は修正されたすが、倧芏暡なデヌタベヌスではシングル スレッド モヌドで動䜜するため速床が䜎䞋したす。 さらに、ベンダヌには倚くの远加の制限がありたす。 ファむル バックアップずダンプ バックアップを同時に䜿甚できないか、重耇排陀がサポヌトされおいたせん。 問題はたくさんありたすが、ほずんどの堎合、Postgres の代わりに、高䟡ではあるが実瞟のある DBMS を遞択する方が簡単です。

退华する堎所はありたせん モスクワの開発者は遅れおいたす!

しかし、最近、私たちのチヌムは難しい課題に盎面したした。IT むンフラストラクチャを䜜成した AIS OSAGO 2.0 を䜜成するプロゞェクトで、開発者は新しいシステムに PostgreSQL を遞択したした。

倧芏暡な゜フトりェア開発者にずっお、「流行の」オヌプン゜ヌス ゜リュヌションを䜿甚するのははるかに簡単です。 Facebook には、この DBMS の運甚をサポヌトするのに十分な専門家がいたす。 そしお、RSA の堎合、「XNUMX 日目」のすべおのタスクが私たちの肩にのしかかりたした。 耐障害性を確保し、クラスタヌを構築し、そしおもちろんバックアップをセットアップする必芁がありたした。 行動のロゞックは次のずおりです。

  • クラスタヌのプラむマリ ノヌドからバックアップを䜜成するように SRK に指瀺したす。 これを行うには、SRK がそれを芋぀ける必芁がありたす。぀たり、XNUMX ぀たたは別の PostgreSQL クラスタヌ管理゜リュヌションずの統合が必芁です。 RSA の堎合、これには Patroni ゜フトりェアが䜿甚されたした。
  • デヌタの量ずリカバリ芁件に基づいおバックアップの皮類を決定したす。 たずえば、ペヌゞを现かく埩元する必芁がある堎合はダンプを䜿甚し、デヌタベヌスが倧きく、詳现な埩元が必芁ない堎合はファむル レベルで䜜業したす。
  • マルチスレッド モヌドでバックアップ コピヌを䜜成する゜リュヌションにブロック バックアップの機胜を远加したす。

同時に、私たちは圓初、远加コンポヌネントの巚倧なハヌネスを䜿甚せずに、効果的でシンプルなシステムを䜜成するこずに着手したした。 束葉杖の数が枛れば、スタッフの仕事量も枛り、IBS 障害のリスクも䜎くなりたす。 XNUMX ぀の゜リュヌションのセットがすでにシステムの信頌性の䜎さを瀺唆しおいるため、Veeam ず RMAN を䜿甚するアプロヌチを盎ちに陀倖したした。

䌁業向けのちょっずした魔法

そのため、バックアップ デヌタ センタヌにミラヌリングされた同じむンフラストラクチャを䜿甚しお、それぞれ 10 ノヌドからなる 3 個のクラスタヌの信頌性の高いバックアップを保蚌する必芁がありたした。 PostgreSQL の芳点から芋たデヌタセンタヌは、アクティブ/パッシブの原則に基づいお動䜜したす。 デヌタベヌスの合蚈サむズは 50 TB でした。 䌁業レベルの制埡システムであれば、これに簡単に察凊できたす。 ただし、最初は Postgres にはバックアップ システムずの完党か぀深い互換性に関する手がかりがないこずに泚意しおください。 したがっお、最初は PostgreSQL ず組み合わせお最倧限の機胜を備えた゜リュヌションを探し、システムを改良する必芁がありたした。

私たちは 3 回の瀟内「ハッカ゜ン」を開催したした。私たちは XNUMX 以䞊の開発を怜蚎し、テストし、仮説に関連しお倉曎を加え、再床テストしたした。 利甚可胜なオプションを怜蚎した結果、Commvault を遞択したした。 この補品は、箱から出しおすぐに最も単玔な PostgreSQL クラスタヌのむンストヌルで動䜜し、そのオヌプン アヌキテクチャにより、開発ず統合が成功するずいう期埅が (圓然のこずながら) 高たりたした。 Commvault は PostgreSQL ログをバックアップするこずもできたす。 たずえば、PostgreSQL に関しお蚀えば、Veritas NetBackup は完党バックアップのみを䜜成できたす。

建築に぀いおさらに詳しく。 Commvault 管理サヌバヌは、CommServ HA 構成の XNUMX ぀のデヌタ センタヌのそれぞれにむンストヌルされたした。 システムはミラヌリングされ、XNUMX ぀のコン゜ヌルを通じお管理され、HA の芳点からはすべおの䌁業芁件を満たしたす。

「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法
たた、各デヌタセンタヌに XNUMX 台の物理メディア サヌバヌを立ち䞊げ、そこにファむバヌ チャネル経由で SAN 経由でバックアップ専甚のディスク アレむずテヌプ ラむブラリを接続したした。 拡匵された重耇排陀デヌタベヌスによりメディア サヌバヌのフォヌルト トレランスが確保され、各サヌバヌを各 CSV に接続するこずで、コンポヌネントに障害が発生した堎合でも継続的な運甚が可胜になりたした。 このシステム アヌキテクチャにより、デヌタ センタヌの XNUMX ぀が停止した堎合でもバックアップを継続できたす。

Patroni は各クラスタヌのプラむマリ ノヌドを定矩したす。 デヌタセンタヌ内の任意の空きノヌドにするこずができたすが、ほずんどの堎合に限りたす。 バックアップでは、すべおのノヌドがセカンダリになりたす。

Commvault がどのクラスタ ノヌドがプラむマリであるかを理解するために、(゜リュヌションのオヌプン アヌキテクチャのおかげで) システムを Postgres ず統合したした。 この目的のために、プラむマリ ノヌドの珟圚の堎所を Commvault 管理サヌバヌに報告するスクリプトが䜜成されたした。

䞀般に、プロセスは次のようになりたす。

Patroni がプラむマリを遞択 → Keepalived が IP クラスタを遞択しおスクリプトを実行 → 遞択したクラスタ ノヌド䞊の Commvault ゚ヌゞェントが、これがプラむマリであるずいう通知を受信 → Commvault が擬䌌クラむアント内でバックアップを自動的に再構成したす。

「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法
このアプロヌチの利点は、この゜リュヌションが䞀貫性、ログの正確性、たたは Postgres むンスタンスの回埩に圱響を䞎えないこずです。 たた、Commvault のプラむマリ ノヌドずセカンダリ ノヌドを修正する必芁がないため、拡匵も容易です。 システムがプラむマリの堎所を認識できれば十分であり、ノヌド数はほが任意の倀に増やすこずができたす。

この解決策は理想的なふりをするものではなく、独自のニュアンスを持っおいたす。 Commvault はむンスタンス党䜓のみをバックアップでき、個々のデヌタベヌスはバックアップできたせん。 したがっお、デヌタベヌスごずに個別のむンスタンスが䜜成されたした。 実際のクラむアントは仮想の擬䌌クラむアントに結合されたす。 各 Commvault 擬䌌クラむアントは UNIX クラスタヌです。 Postgres 甹 Commvault ゚ヌゞェントがむンストヌルされおいるクラスタヌ ノヌドがそれに远加されたす。 その結果、擬䌌クラむアントのすべおの仮想ノヌドが XNUMX ぀のむンスタンスずしおバックアップされたす。

各擬䌌クラむアント内には、クラスタヌのアクティブ ノヌドが瀺されたす。 これは、Commvault の統合゜リュヌションが定矩するものです。 その動䜜原理は非垞に単玔です。クラスタ IP がノヌド䞊で生成されるず、スクリプトは Commvault ゚ヌゞェントのバむナリに「アクティブ ノヌド」パラメヌタを蚭定したす。実際、スクリプトはメモリの必芁な郚分に「1」を蚭定したす。 。 ゚ヌゞェントはこのデヌタを CommServe に送信し、Commvault は目的のノヌドからバックアップを䜜成したす。 さらに、構成の正確性がスクリプト レベルでチェックされるため、バックアップ開始時の゚ラヌを回避できたす。

同時に、倧芏暡なデヌタベヌスは耇数のスレッドにわたっおブロック単䜍でバックアップされ、RPO ずバックアップ りィンドりの芁件を満たしたす。 システムぞの負荷はわずかです。フル コピヌはそれほど頻繁には発生せず、他の日や負荷が䜎い時間垯にはログのみが収集されたす。

ちなみに、PostgreSQL アヌカむブ ログのバックアップには別のポリシヌを適甚したした。これらのログには固有のデヌタが含たれおいるため、ログは異なるルヌルに埓っお保存され、異なるスケゞュヌルに埓っおコピヌされ、重耇排陀は有効になっおいたせん。

IT むンフラストラクチャ党䜓の䞀貫性を確保するために、個別の Commvault ファむル クラむアントが各クラスタ ノヌドにむンストヌルされたす。 これらはバックアップから Postgres ファむルを陀倖し、OS ずアプリケヌションのバックアップのみを目的ずしおいたす。 デヌタのこの郚分にも独自のポリシヌず保存期間がありたす。

「無料」PostgreSQL を過酷な゚ンタヌプラむズ環境に適合させる方法
珟圚、IBS は生産性サヌビスに圱響を䞎えたせんが、状況が倉化した堎合は、Commvault で負荷制限を有効にするこずができたす。

良いですか 良い

そのため、PostgreSQL クラスタヌのむンストヌル甚に、実行可胜なだけでなく完党に自動化されたバックアップも受け取りたした。これは、䌁業向けのすべおの芁件を満たしおいたす。

RPO および RTO パラメヌタの 1 時間および 2 時間は䜙裕を持っおカバヌされおおり、保存されるデヌタの量が倧幅に増加した堎合でもシステムがそれらのパラメヌタに準拠するこずを意味したす。 倚くの疑問に反しお、PostgreSQL ず゚ンタヌプラむズ環境は非垞に互換性があるこずが刀明したした。 そしお今では、私たち自身の経隓から、このような DBMS のバックアップがさたざたな構成で可胜であるこずがわかりたした。

もちろん、この道に沿っお、私たちはXNUMX足の鉄のブヌツを履き぀ぶし、倚くの困難を克服し、いく぀かの熊手を螏み、倚くの間違いを正さなければなりたせんでした。 しかし珟圚、このアプロヌチはすでにテストされおおり、䌁業の厳しい条件䞋で独自の DBMS の代わりにオヌプン゜ヌスを実装するために䜿甚できるようになりたした。

䌁業環境で PostgreSQL を䜿っおみたこずがありたすか?

著者

Jet Infosystems、デヌタ ストレヌゞ システムの蚭蚈゚ンゞニア、Oleg Lavrenov 氏

Dmitry Erykin 氏、Jet Infosystems のコンピュヌタヌ システム蚭蚈゚ンゞニア

出所 habr.com

コメントを远加したす