sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLのフォールトトレランスの進化

    「私たちが自分の限界を意識するのは悟りを通してのみであるため、私たちが知るほど、絶対的な意味で無知になるというのは逆説的ですが、真実です。知的進化の最も満足のいく結果の1つは、新しい、より大きな展望の継続的な開放です。」 ニコラテスラ

    PostgreSQLは素晴らしいプロジェクトであり、驚くべき速度で進化しています。一連のブログ投稿を使用して、バージョン全体でPostgreSQLのフォールトトレランス機能の進化に焦点を当てます。

    一言で言えばPostgreSQL

    PostgreSQLはその性質上フォールトトレラントです。まず、これは高度なオープンソースデータベース管理システムであり、今年で20周年を迎えます。したがって、これは実証済みのテクノロジーであり、活発なコミュニティがあり、そのおかげで開発が急速に進んでいます。

    PostgreSQLはSQL準拠です (SQL:2011)および完全にACID準拠 (原子性、一貫性、分離、耐久性)

    PostgreSQLは物理的および論理的なレプリケーションを可能にし、物理的および論理的なレプリケーションソリューションを組み込んでいます。フォールトトレランスに関するPostgreSQLのレプリケーション方法(次のブログ投稿で)について説明します。

    PostgreSQLでは、同期および非同期トランザクション、PITR(ポイントインタイムリカバリ)およびMVCC(マルチバージョン同時実行制御)が可能です。これらの概念はすべて、あるレベルでのフォールトトレランスに関連しているため、PostgreSQLで必要な用語とそのアプリケーションを説明しながら、その効果を説明しようと思います。

    PostgreSQLは堅牢です!

    データベース上のすべてのアクションは、トランザクション内で実行されます 、トランザクションログで保護されています ソフトウェアに障害が発生した場合に自動クラッシュリカバリを実行します。

    データベースは、オプションでデータブロックチェックサムを使用して作成できます。 ハードウェア障害の診断に役立ちます。詳細なリカバリが必要な場合に備えて、完全かつ詳細なPITRを備えた複数のバックアップメカニズムが存在します。さまざまな診断ツールを利用できます。

    データベースレプリケーションはネイティブでサポートされています。 同期レプリケーション 「5ナイン」(99.999パーセント)より多くを提供できます 適切に構成および管理されている場合、可用性とデータ保護。

    上記の事実を考慮すると、PostgreSQLは堅牢であると簡単に主張できます!

    PostgreSQLフォールトトレランス:WAL

    ログ先行書き込みは、PostgreSQLの主要なフォールトトレランスシステムです。

    WAL PostgreSQLデータディレクトリのpg_xlogサブディレクトリに書き込まれる一連のバイナリファイルで構成されます。データベースに加えられた各変更は、最初にWALに記録されるため、「トランザクションログ」の同義語として「先行書き込み」ログという名前が付けられます。トランザクションがコミットされると、デフォルトの(そして安全な)動作は、WALレコードをディスクに強制することです。

    PostgreSQLがクラッシュした場合、WALが再生され、データベースが最後にコミットされたトランザクションのポイントに戻るため、データベースの変更の耐久性が保証されます。

    トランザクション?コミットしますか?

    データベースの変更自体は、トランザクションのコミット時にディスクに書き込まれません。これらの変更は、適切に調整されたサーバー上のバックグラウンドライターまたはチェックポインターによって後でディスクに書き込まれます。 (上記のWALの説明を確認してください。

    トランザクションは、すべてのデータベースシステムの基本的な概念です。トランザクションの重要なポイントは、複数のステップを単一のオールオアナッシング操作にバンドルすることです。

    ステップ間の中間状態は、他の同時トランザクションには表示されません。トランザクションの完了を妨げる何らかの障害が発生した場合、どのステップもデータベースにまったく影響を与えません。 PostgreSQLはダーティリードをサポートしていません (トランザクションは、同時にコミットされていないトランザクションによって書き込まれたデータを読み取ります

    チェックポイント

    クラッシュリカバリはWALを再生しますが、どの時点からリカバリを開始しますか?

    リカバリは、チェックポイントと呼ばれるWALのポイントから始まります 。クラッシュリカバリの期間は、最後のチェックポイント以降のトランザクションログの変更数によって異なります。チェックポイントは、データベースに対する以前のすべての変更がすでにディスクに書き込まれていることを保証するため、リカバリの安全な開始点として知られています。

    チェックポイントは、即時のいずれかになります。 または予定 。即時チェックポイントは、CHECKPOINTなどのスーパーユーザーのアクションによってトリガーされます。 コマンドまたはその他;スケジュールされたチェックポイントはPostgreSQLによって自動的に決定されます。

    結論

    このブログ投稿では、PostgreSQLのフォールトトレランスに関連するPostgreSQLの重要な機能をリストしました。ログ先行書き込み、トランザクション、コミット、分離レベル、チェックポイント、およびクラッシュリカバリについて説明しました。次のブログ投稿でPostgreSQLレプリケーションを続行します。

    参照:

    PostgreSQLドキュメント

    PostgreSQL 9管理クックブック–第2版


    1. LinuxでのXFSの復活

    2. MS Accessの破損パート1:一般的な原因

    3. ヒストグラムデータからのパーセンタイル

    4. SQLite-データベースを削除する