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

PostgreSQLのクラウドバックアップオプション

    このブログは2018年11月27日と2018年11月29日に更新され、すばらしいコメント投稿者の推奨に従って変更が加えられました。

    ビジネスの他のコンポーネントと同様に、データベースはその内部の仕組みにとって非常に重要です。

    それがビジネスの中核であろうと単なる別のコンポーネントであろうと、データベースは定期的にバックアップし、将来の復旧に備えて安全な場所に保存する必要があります。

    クラウドにバックアップする必要がありますか?

    一般的なルールは、価値のあるものの少なくとも3つのコピーを持ち、それらのバックアップを異なる場所に保存することです。ドライブ自体が停止した場合、同じドライブ上のバックアップは役に立ちません。ホストがダウンした場合、同じホストのバックアップも危険にさらされます。また、建物が焼失した場合、同じ建物のバックアップも危険にさらされます(大幅でありそうもないが、可能です)。

    クラウドバックアップは、セカンダリロケーションで新しいハードウェアを起動することなく、オフサイトバックアップの必要性に対する簡単なソリューションを提供します。バックアップストレージを提供するさまざまなクラウドサービスがあり、適切なものを選択するかどうかは、バックアップのニーズ、サイズ要件、コスト、およびセキュリティによって異なります。

    クラウドバックアップを使用する利点はたくさんありますが、主にこれらのバックアップをメインデータベースとは別の場所に保存することを中心に展開しているため、災害復旧の場合にセーフティネットを利用できます。これらの各バックアップオプションの設定方法については詳しく説明しませんが、バックアップのさまざまなアイデアと構成について説明します。

    転送から始めて、バックアップをクラウドに保存することにはいくつかの欠点があります。データベースのバックアップが非常に大きい場合、実際のアップロードを行うのに長い時間がかかる可能性があり、クラウドサービスが帯域幅の転送に課金する場合はコストが増加する可能性があります。時間とコストを低く抑えるために、圧縮することを強くお勧めします。

    クラウドでバックアップをホストする場合、セキュリティがもう1つの懸念事項になる可能性がありますが、一部の企業では、データの保存場所と存在場所について厳格なガイドラインがあります。セキュリティが懸念される場合は、バックアップをクラウドホスティングサービスにエクスポートする前に暗号化できます。

    クラウドバックアップオプション

    PostgreSQLのデータベースバックアップを作成するにはいくつかの方法があり、バックアップの種類に応じて、リカバリ時間、サイズ、およびインフラストラクチャオプションが異なります。クラウドストレージソリューションの多くは、APIフロントエンドが異なる単なるストレージであるため、少しのスクリプトで巧妙なバックアップソリューションを作成できます。

    スナップショットバックアップ

    スナップショットは、特定の時点でPostgreSQLデータベースのコピーを持つバックアップです。これらのバックアップは、データベースを単一のファイルにダンプするpg_dumpを使用するか、PostgreSQLのベースデータディレクトリをコピーすることによって作成されます。これらのいずれかを圧縮して、他のドライブやサーバーにコピーし、目的のクラウドストレージオプションにコピーすることができます。

    圧縮でpg_dumpを使用する

    pg_dump -Fc severalnines > severalnines.dmp

    pg_basebackupを使用したデータディレクトリのバックアップ

    プログラムpg_basebackupを使用すると、ベースバックアップを非常に簡単に作成できます。すべての機能とその設定方法の詳細については、使用されているPostgreSQLのバージョンの公式ドキュメントをご覧ください。

    pg_basebackup --format=tar -z -D severalnines_basebackup

    Amazon S3

    AmazonのAWSプラットフォームでは、S3はデータベースのバックアップを保存するために使用できるデータストレージサービスです。バックアップはWebインターフェイスを介してアップロードできますが、Amazon CLI(コマンドラインインターフェイス)を使用して、コマンドラインおよびバックアップ自動化スクリプトを介してアップロードできます。 AWSCLIに関する情報はここにあります。バックアップを非常に長期間保持する必要があり、リカバリ時間が問題にならない場合は、バックアップをAmazonのGlacierサービスに転送して、はるかに安価な長期ストレージを提供できます。

    aws s3 cp severalnines.dmp s3://severalninesbucket/backups

    アマゾンはまた、世界中にサービスのためのさまざまな地域を持っています。稼働時間の履歴は良好ですが、バックアップのコピーを複数のリージョンに分散させると、ディザスタリカバリのオプションが増え、貴重なデータが失われる可能性が低くなります。

    MicrosoftAzureストレージ

    MicrosoftのクラウドプラットフォームであるAzureには、独自のコマンドラインインターフェイスを備えたストレージオプションがあります。情報はここにあります。

    az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

    他の最新のクラウドストレージサービスは、バックアップをクラウドサーバーにコピーするための同様のツールを提供する必要があります。詳細については、ドキュメントを参照してください。

    スタンバイバックアップ

    バックアップ自体が圧縮されていても非常に大きくなる場合があり、毎日または毎週のバックアップをクラウドサービスにアップロードすることは、帯域幅の速度やコストのために問題外になる可能性があります。そのため、保管のためにバックアップをクラウドに取り込むのははるかに困難です。

    これを行う1つの方法は、メインマスターデータベースの正確なコピーであり、クラウドインスタンスに送信される唯一のデータである、AmazonのEC2インスタンスなどのクラウドベースの仮想マシンでウォームスタンバイまたはホットスタンバイを実行することです。データベース全体の別のコピーではなく、変更です。これには、データベース全体を一度に転送する必要がありますが、その後は、変更のみを転送する必要があります。

    しかし、スタンバイサーバーは実際にはバックアップですか?マスターデータベースがダウンした場合、スタンバイをマスターに変えてアプリケーションをマスターにリダイレクトできますが、過去1週間/月の特定の時点のバックアップを作成することが目標である場合、これは機能しません。

    これを修正するために、いくつかのことができます。スタンバイ自体に遅延を強制することができます。たとえば、1日経過したデータを取り込むだけです。もう1つは、クラウドスタンバイで従来の方法(pg_dump、データディレクトリコピー)の1つでバックアップを作成することです。つまり、これらのバックアップはクラウドマシン自体で作成されるため、ネットワーク経由で転送する必要はありません。ネットワーク内転送は通常、より速く、より安価です。

    ClusterControlバックアップとクラウド

    Someninesは、PostgreSQLを含む多くの異なるデータベースの管理を支援するデータベース管理システムであるClusterControlを作成しました。これは、データベースまたはシステム管理者がデータベースを完全に制御および可視化するための究極のツールボックスであり、非常に便利なバックアップ機能が含まれています。

    ClusterControlを使用すると、PostgreSQLデータベースのバックアップを簡単に管理、スケジュール、および設定して、Amazon S3、Microsoft Azure、GoogleCloudなどの「クラウドストレージ」サービスに作成されたバックアップを自動的にコピーできます。これにより、バックアップをクラウドにアップロードするためのカスタムツールをスクリプト化する必要がなくなり、バックアップ全般に優れたユーザーインターフェイスが提供されます。

    データベースのバックアップは常に行う必要があり、2番目、3番目、および4番目の場所にデータベースを保存することは非常に優れた一般的な方法です。クラウドオプションを投入すると、ディザスタリカバリのオプションが増え、ビジネスのバックエンドの安定性がさらに向上します。多くの場合、データベースがなくなると、会社もなくなります。今日のクラウドバックアップオプションを検討することで、明日の災害をなくすことができます。


    1. SQLServerでのCASE式の使用

    2. SQL UPDATE

    3. VARRAY内に値が存在するかどうかを確認する方法

    4. Psqlはすべてのテーブルを一覧表示します