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

AmazonAWSにPostgreSQLバックアップを保存するためのヒント

    データは、おそらく企業で最も価値のある資産の1つです。このため、事故やハードウェア障害が発生した場合のデータ損失を防ぐために、常にディザスタリカバリプラン(DRP)を用意する必要があります。

    バックアップはDRの最も単純な形式ですが、許容可能な目標復旧時点(RPO)を保証するのに必ずしも十分ではない場合があります。物理的に異なる場所に少なくとも3つのバックアップを保存することをお勧めします。

    ベストプラクティスでは、バックアップファイルの1つをデータベースサーバーにローカルに保存し(リカバリを高速化するため)、もう1つを集中バックアップサーバーに保存し、最後のファイルをクラウドに保存する必要があります。

    このブログでは、Amazon AWSがクラウドにPostgreSQLバックアップを保存するために提供するオプションを確認し、その方法の例をいくつか示します。

    AmazonAWSについて

    Amazon AWSは、機能とサービスの点で世界で最も先進的なクラウドプロバイダーの1つであり、何百万もの顧客を抱えています。 Amazon AWSでPostgreSQLデータベースを実行したい場合は、いくつかのオプションがあります...

    • Amazon RDS:クラウドでPostgreSQLデータベース(またはさまざまなデータベーステクノロジー)を簡単かつ迅速に作成、管理、スケーリングできます。

      >
    • Amazon Aurora:クラウド用に構築されたPostgreSQL互換のデータベースです。 AWS Webサイトによると、標準のPostgreSQLデータベースよりも3倍高速です。

    • Amazon EC2:クラウドでサイズ変更可能なコンピューティング容量を提供するWebサービスです。コンピューティングリソースを完全に制御し、オペレーティングシステムからアプリケーションまでのインスタンスに関するすべてをセットアップおよび構成できるようにします。

    しかし、実際には、ここにバックアップを保存するために、Amazonでデータベースを実行する必要はありません。

    AmazonAWSにバックアップを保存する

    PostgreSQLバックアップをAWSに保存するためのさまざまなオプションがあります。 AWSでPostgreSQLデータベースを実行している場合は、より多くのオプションがあり、(同じネットワーク内にあるため)より高速になる可能性もあります。 AWSがバックアップの保存にどのように役立つか見てみましょう。

    AWS CLI

    まず、さまざまなAWSオプションをテストするための環境を準備しましょう。この例では、CentOS7で実行されているオンプレミスのPostgreSQL11サーバーを使用します。ここでは、このサイトの指示に従ってAWSCLIをインストールする必要があります。

    AWS CLIをインストールしたら、コマンドラインからテストできます:

    [[email protected] ~]# aws --version
    
    aws-cli/1.16.225 Python/2.7.5 Linux/4.15.18-14-pve botocore/1.12.215

    次のステップは、configureオプションを指定してawsコマンドを実行する新しいクライアントを設定することです。

    [[email protected] ~]# aws configure
    
    AWS Access Key ID [None]: AKIA7TMEO21BEBR1A7HR
    
    AWS Secret Access Key [None]: SxrCECrW/RGaKh2FTYTyca7SsQGNUW4uQ1JB8hRp
    
    Default region name [None]: us-east-1
    
    Default output format [None]:

    この情報を取得するには、IAM AWSセクションに移動して現在のユーザーを確認するか、必要に応じて、このタスク用に新しいユーザーを作成できます。

    これで、AWSCLIを使用してAmazonAWSサービスにアクセスする準備が整いました。

    Amazon S3

    これは、バックアップをクラウドに保存するためにおそらく最も一般的に使用されるオプションです。 Amazon S3は、インターネット上のどこからでも任意の量のデータを保存および取得できます。これは、非常に耐久性があり、可用性が高く、無限にスケーラブルなデータストレージインフラストラクチャを低コストで提供するシンプルなストレージサービスです。

    Amazon S3は、ウェブ上のどこからでも、いつでも、(AWSCLIまたはAWSSDKを使用して)任意の量のデータを保存および取得するために使用できるシンプルなウェブサービスインターフェースを提供します。さまざまなシステムやプログラミング言語と統合できます。

    使用方法

    AmazonS3はバケットを使用します。これらは、AmazonS3に保存するすべてのもののユニークなコンテナーです。したがって、最初のステップは、Amazon S3管理コンソールにアクセスして、新しいバケットを作成することです。

    最初のステップでは、バケット名とバケット名を追加するだけです。 AWSリージョン。

    これで、バージョン管理やバージョン管理など、新しいバケットに関する詳細を構成できます。ロギング。

    次に、この新しいバケットの権限を指定できます。

    これでバケットが作成されました。これを使用して、 PostgreSQLバックアップを保存します。

    まず、クライアントをS3に接続してテストしましょう。

    [[email protected] ~]# aws s3 ls
    
    2019-08-23 19:29:02 s9stesting1

    動作します!前のコマンドで、作成された現在のバケットを一覧表示します。

    これで、バックアップをS3サービスにアップロードできます。このために、awssyncまたはawscpコマンドを使用できます。

    [[email protected] ~]# aws s3 sync /root/backups/BACKUP-5/ s3://s9stesting1/backups/
    
    upload: backups/BACKUP-5/cmon_backup.metadata to s3://s9stesting1/backups/cmon_backup.metadata
    
    upload: backups/BACKUP-5/cmon_backup.log to s3://s9stesting1/backups/cmon_backup.log
    
    upload: backups/BACKUP-5/base.tar.gz to s3://s9stesting1/backups/base.tar.gz
    
    [[email protected] ~]# 
    
    [[email protected] ~]# aws s3 cp /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz s3://s9stesting1/backups/
    
    upload: backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz to s3://s9stesting1/backups/pg_dump_2019-08-23_205919.sql.gz
    
    [[email protected] ~]# 

    AWSWebサイトからバケットのコンテンツを確認できます。

    または、AWSCLIを使用することもできます。

    [[email protected] ~]# aws s3 ls s3://s9stesting1/backups/
    
    2019-08-23 19:29:31          0
    
    2019-08-23 20:58:36    2974633 base.tar.gz
    
    2019-08-23 20:58:36       1742 cmon_backup.log
    
    2019-08-23 20:58:35       2419 cmon_backup.metadata
    
    2019-08-23 20:59:52       1028 pg_dump_2019-08-23_205919.sql.gz

    AWS S3 CLIの詳細については、AWSの公式ドキュメントを確認してください。

    AmazonS3氷河

    これはAmazonS3の低価格バージョンです。それらの主な違いは、速度とアクセシビリティです。ストレージのコストを低く抑える必要があり、データへのミリ秒アクセスが必要ない場合は、AmazonS3Glacierを使用できます。使用法は、それらの間のもう1つの重要な違いです。

    使用方法

    バケットの代わりに、AmazonS3GlacierはVaultを使用します。あらゆるオブジェクトを保存するためのコンテナです。したがって、最初のステップは、Amazon S3 Glacier Management Consoleにアクセスして、新しいVaultを作成することです。

    ここで、ボールト名とリージョンを追加する必要があります。次のステップでは、Amazon Simple Notification Service(Amazon SNS)を使用するイベント通知を有効にできます。

    これでVaultが作成されたので、AWSCLIからアクセスできます。 。

    [[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2
    
    {
    
        "SizeInBytes": 0,
    
        "VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",
    
        "NumberOfArchives": 0,
    
        "CreationDate": "2019-08-23T21:08:07.943Z",
    
        "VaultName": "s9stesting2"
    
    }
    機能しています。これで、バックアップをここにアップロードできます。

    [[email protected] ~]# aws glacier upload-archive --body /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz --account-id - --archive-description "Backup upload test" --vault-name s9stesting2
    
    {
    
        "archiveId": "ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg",
    
        "checksum": "258faaa90b5139cfdd2fb06cb904fe8b0c0f0f80cba9bb6f39f0d7dd2566a9aa",
    
        "location": "/984227183428/vaults/s9stesting2/archives/ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg"
    
    }

    重要なことの1つは、Vaultのステータスが1日に1回程度更新されるため、ファイルがアップロードされるのを待つ必要があることです。

    [[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2
    
    {
    
        "SizeInBytes": 33796,
    
        "VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",
    
        "LastInventoryDate": "2019-08-24T06:37:02.598Z",
    
        "NumberOfArchives": 1,
    
        "CreationDate": "2019-08-23T21:08:07.943Z",
    
        "VaultName": "s9stesting2"
    
    }
    ここにファイルがS3GlacierVaultにアップロードされています。

    AWS Glacier CLIの詳細については、AWSの公式ドキュメントを確認してください。

    EC2

    このバックアップストアオプションは、より費用と時間がかかるオプションですが、バックアップストレージ環境を完全に制御し、バックアップに対してカスタムタスクを実行する場合に便利です(バックアップ検証など)。 。)

    Amazon EC2(Elastic Compute Cloud)は、クラウドでサイズ変更可能なコンピューティング容量を提供するWebサービスです。コンピューティングリソースの完全な制御を提供し、オペレーティングシステムからアプリケーションまでのインスタンスに関するすべてをセットアップおよび構成できるようにします。また、コンピューティング要件の変化に応じて、容量をアップとダウンの両方ですばやく拡張できます。

    Amazon EC2は、Amazon Linux、Ubuntu、Windows Server、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Fedora、Debian、CentOS、Gentoo Linux、Oracle Linux、FreeBSDなどのさまざまなオペレーティングシステムをサポートしています。

    使用方法

    Amazon EC2セクションに移動し、LaunchInstanceを押します。最初のステップでは、EC2インスタンスのオペレーティングシステムを選択する必要があります。

    次のステップでは、新しいインスタンスのリソースを選択する必要があります。

    次に、ネットワーク、サブネットなどのより詳細な構成を指定できます。

    これで、この新しいインスタンスにストレージ容量を追加できます。バックアップサーバー、それを行う必要があります。

    作成タスクが完了したら、[インスタンス]セクションに移動して新しいEC2インスタンスをご覧ください。

    インスタンスの準備ができたら(インスタンス状態が実行中)、ここでのバックアップ。たとえば、AWSによって作成されたパブリックDNSを使用してSSHまたはFTP経由で送信します。 Rsyncを使用した例と、SCPLinuxコマンドを使用した別の例を見てみましょう。

    [[email protected] ~]# rsync -avzP -e "ssh -i /home/user/key1.pem" /root/backups/BACKUP-11/base.tar.gz [email protected]:/backups/20190823/
    
    sending incremental file list
    
    base.tar.gz
    
          4,091,563 100%    2.18MB/s 0:00:01 (xfr#1, to-chk=0/1)
    
    
    
    sent 3,735,675 bytes  received 35 bytes 574,724.62 bytes/sec
    
    total size is 4,091,563  speedup is 1.10
    
    [[email protected] ~]# 
    
    [[email protected] ~]# scp -i /tmp/key1.pem /root/backups/BACKUP-12/pg_dump_2019-08-25_211903.sql.gz [email protected]:/backups/20190823/
    
    pg_dump_2019-08-25_211903.sql.gz                                                                                                                                        100% 24KB 76.4KB/s 00:00

    AWSバックアップ

    AWS Backupは、バックアップスケジューリング、保持管理、バックアップモニタリングなどのバックアップ管理機能に加えて、低コストへのライフサイクルバックアップなどの追加機能を提供する一元化されたバックアップサービスです。ストレージ層、バックアップストレージ、ソースデータに依存しない暗号化、およびバックアップアクセスポリシー。

    AWS Backupを使用して、EBSボリューム、RDSデータベース、DynamoDBテーブル、EFSファイルシステム、およびStorageGatewayボリュームのバックアップを管理できます。

    使用方法

    AWSマネジメントコンソールのAWSバックアップセクションに移動します。

    ここには、バックアップのスケジュール、作成、復元などのさまざまなオプションがあります。新しいバックアップを作成する方法を見てみましょう。

    このステップでは、DynamoDBにできるリソースタイプを選択する必要があります。 RDS、EBS、EFS、またはStorage Gateway、および有効期限、バックアップボールト、IAMロールなどの詳細。

    次に、AWSバックアップジョブセクションで作成された新しいジョブを確認できます。

    スナップショット

    これで、すべての仮想化環境でこの既知のオプションについて言及できます。スナップショットは特定の時点で作成されたバックアップであり、AWSではAWS製品にスナップショットを使用できます。 RDSスナップショットの例を見てみましょう。

    インスタンスを選択してスナップショット名を追加するだけで、それがそれ。これと前のスナップショットは、RDSスナップショットセクションで確認できます。

    ClusterControlを使用したバックアップの管理

    ClusterControlは、オープンソースデータベース用の包括的な管理システムであり、展開と管理機能、およびヘルスとパフォーマンスの監視を自動化します。 ClusterControlは、EC2を含むさまざまなデータベーステクノロジーと環境のデプロイ、管理、モニタリング、スケーリングをサポートします。そのため、たとえば、AWSでEC2インスタンスを作成し、ClusterControlを使用してデータベースサービスをデプロイ/インポートできます。

    バックアップの作成

    このタスクでは、ClusterControl->[クラスター]->[バックアップ]->[バックアップの作成]を選択します。

    新しいバックアップを作成するか、スケジュールされたバックアップを構成できます。この例では、単一のバックアップを即座に作成します。

    バックアップを取得するサーバーという1つの方法を選択する必要があります、およびバックアップを保存する場所。対応するボタンを有効にすることで、バックアップをクラウド(AWS、Google、またはAzure)にアップロードすることもできます。

    次に、圧縮の使用、圧縮レベル、暗号化、および保持を指定しますバックアップの期間。

    クラウドへのバックアップのアップロードオプションを有効にした場合は、次のように表示されます。クラウドプロバイダー(この場合はAWS)と資格情報(ClusterControl-> Integrations-> Cloud Providers)を指定するセクション。 AWSの場合、S3サービスを使用するため、バケットを選択するか、バックアップを保存するために新しいバケットを作成する必要があります。

    バックアップセクションでは、バックアップの進行状況を確認できます。方法、サイズ、場所などの情報。

    結論

    Amazon AWSでは、データベースクラウドプロバイダーとして使用しているかどうかに関係なく、PostgreSQLバックアップを保存できます。効果的なバックアップ計画を立てるには、別のバックアップストアでハードウェア障害が発生した場合のデータ損失を回避するために、少なくとも1つのデータベースバックアップコピーをクラウドに保存することを検討する必要があります。クラウドを使用すると、保存または支払いが必要な数のバックアップを保存できます。


    1. MariaDBEnterpriseBackupとClusterControlBackupManagementの比較

    2. postgresqlでパスワードをハッシュするにはどうすればよいですか?

    3. MySQLでSUBSTRING()を使用する方法

    4. Oracleの一時データのパフォーマンスに関する考慮事項