現在、すべての企業は、障害が発生した場合のデータ損失を防ぐためのディザスタリカバリプラン(DRP)を持っています(または持っているべきです)。ビジネスで許容可能な目標復旧時点(RPO)に従って構築されています。
バックアップはどのDRPでも基本的なスタートですが、バックアップの使いやすさを保証するには、1回のバックアップだけでは不十分です。ベストプラクティスは、バックアップファイルを3つの異なる場所に保存することです。1つはデータベースサーバーにローカルに保存され(リカバリを高速化するため)、もう1つは集中バックアップサーバーに保存され、最後の1つはクラウドに保存されます。この最後のステップでは、安定した堅牢なクラウドプロバイダーを選択して、データが正しく保存され、いつでもアクセスできるようにする必要があります。
このブログでは、最も有名なクラウドプロバイダーの1つであるGoogle Cloud Platform(GCP)と、それを使用してPostgreSQLバックアップをクラウドに保存する方法について説明します。
Googleクラウドについて
Google Cloudは、ワークロード向けに幅広い製品を提供しています。それらのいくつかと、それらがPostgreSQLバックアップをクラウドに保存することにどのように関連しているかを見てみましょう。
- クラウドストレージ:世界中でいつでも任意の量のデータを保存および取得できます。 Cloud Storageは、ウェブサイトコンテンツの提供、アーカイブや災害復旧のためのデータの保存、直接ダウンロードによるユーザーへの大規模なデータオブジェクトの配布など、さまざまなシナリオで使用できます。
- クラウドSQL:これは、クラウド内のリレーショナルPostgreSQL、MySQL、およびSQL Serverデータベースのセットアップ、保守、管理、および管理を容易にするフルマネージドデータベースサービスです。
- コンピューティングエンジン:Google Cloudで実行される仮想マシンを提供し、単一インスタンスからグローバルな負荷分散されたクラウドコンピューティングへのスケーリングをサポートします。 Compute EngineのVMはすばやく起動し、高性能の永続ディスクとローカルディスクのオプションが付属しており、一貫したパフォーマンスを提供します。
GoogleCloudにバックアップを保存する
CloudSQLを使用してGoogleCloudでPostgreSQLデータベースを実行している場合は、Google Cloud Platformから直接バックアップできますが、PostgreSQLバックアップを保存するためにここで実行する必要はありません。

Googleクラウドストレージ
よく知られているAmazonS3製品と同様に、Cloud SQLでPostgreSQLデータベースを実行していない場合、これはバックアップまたはファイルをGoogleCloudに保存するために最も一般的に使用されるオプションです。 Google Cloud Platform、[はじめに]セクション、または[ストレージ]の左側のメニューからアクセスできます。 Cloud Storageを使用すると、転送機能を使用して、ここでS3コンテンツを簡単に転送することもできます。

GoogleCloudStorageの使用方法
まず、データを保存するために新しいバケットを作成する必要があるため、GoogleCloudPlatform->ストレージ->バケットの作成
に移動します
最初のステップでは、新しいバケット名を追加するだけです。

次のステップでは、場所のタイプ(マルチリージョン)を指定できますデフォルト)と場所。

次に、ストレージクラスを標準(デフォルトオプション)からニアラインまたはコールドライン。

次に、コントロールアクセスを変更できます。

最後に、暗号化や保持ポリシーなどのオプション設定があります。
これで新しいバケットが作成されたので、その使用方法を確認します。
GSutilツールの使用
GSutilは、コマンドラインからクラウドストレージにアクセスできるPythonアプリケーションです。これにより、さまざまなバケットおよびオブジェクト管理タスクを実行できます。 CentOS 7にインストールする方法と、それを使用してバックアップをアップロードする方法を見てみましょう。
Cloud SDKのダウンロード:
$ curl https://sdk.cloud.google.com | bash
シェルを再起動します:
$ exec -l $SHELL
gcloud initを実行し、ツールを設定します:
$ gcloud init
このコマンドでは、URLにアクセスして認証コードを追加することでGoogleCloudアカウントにログインするよう求められます。
これでツールがインストールおよび構成されたので、バックアップをバケットにアップロードしましょう。
まず、作成されたバケットを確認しましょう:
[[email protected] ~]# gsutil ls
gs://pgbackups1/
PostgreSQLバックアップ(または別のファイル)をコピーするには、次のコマンドを実行します:
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
次に、new_backupディレクトリの内容を一覧表示して、アップロードされたファイルを確認できます。
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
GSutilの使用法の詳細については、公式ドキュメントを確認してください。
Google Cloud SQL
すべての環境(データベースとバックアップ)をGoogle Cloudに一元化する場合は、このCloudSQL製品を利用できます。このようにして、PostgreSQLデータベースをGoogle Cloudで実行し、同じプラットフォームからバックアップを管理することもできます。 Google Cloud Platform、[はじめに]セクション、または[ストレージ]の左側のメニューからアクセスできます。
GoogleCloudSQLの使用方法
新しいPostgreSQLインスタンスを作成するには、GoogleCloudPlatform->SQL->インスタンスの作成
に移動します
ここでは、データベースエンジンとしてMySQLとPostgreSQLのどちらかを選択できます。このブログでは、PostgreSQLインスタンスを作成しましょう。

次に、インスタンスID、パスワード、場所、PostgreSQLを追加する必要がありますバージョン(9.6または11)。

パブリックIPアドレスの有効化、マシンタイプなどの構成オプションもありますおよびストレージ、バックアップなど。
Cloud SQLインスタンスが作成されたら、それを選択すると、この新しいインスタンスの概要が表示されます。

そして、[バックアップ]セクションに移動してPostgreSQLバックアップを管理できます。

ストレージコストを削減するために、バックアップは段階的に機能します。各バックアップには、前回のバックアップ以降のデータへの変更のみが保存されます。
Googleクラウドコンピューティングエンジン
Amazon EC2と同様に、クラウドに情報を保存するこの方法は、クラウドストレージよりも費用と時間がかかりますが、バックアップストレージ環境を完全に制御できます。また、Google Cloud Platform、[はじめに]セクション、または[コンピューティング]の左側のメニューからもアクセスできます。
Google CloudComputeEngineの使用方法
新しい仮想マシンを作成するには、GoogleCloudPlatform->コンピューティングエンジン->インスタンスの作成
に移動します
ここで、インスタンス名、リージョン、ゾーンを追加する必要があります。それを作成します。また、ハードウェアと使用要件、および新しい仮想マシンに使用するディスクサイズとオペレーティングシステムに応じて、マシン構成を指定する必要があります。

インスタンスの準備ができたら、ここにバックアップを保存できます。たとえば、 、外部IPアドレスを使用してSSHまたはFTP経由で送信します。 Rsyncを使用した例と、SCPLinuxコマンドを使用した別の例を見てみましょう。
SSH経由で新しい仮想マシンに接続するには、仮想マシン構成にSSHキーが追加されていることを確認してください。
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
これをスクリプトに簡単に埋め込んで自動バックアッププロセスを実行したり、この製品をClusterControlなどの外部システムで使用してバックアップを管理したりできます。
ClusterControlを使用したバックアップの管理
Cloud SQLを使用して、データベースと同じプラットフォームからのバックアップの両方の管理を一元化できるのと同じように、PostgreSQLデータベースに関連するいくつかの管理タスクにClusterControlを使用できます。
ClusterControlは、オープンソースデータベース用の包括的な管理システムであり、展開と管理機能、およびヘルスとパフォーマンスの監視を自動化します。 ClusterControlは、さまざまなデータベーステクノロジーおよび環境の展開、管理、監視、およびスケーリングをサポートします。そのため、たとえば、Google Cloudで仮想マシンインスタンスを作成し、ClusterControlを使用してデータベースサービスをデプロイ/インポートできます。

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

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

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

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

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

バックアップセクションでは、バックアップの進行状況を確認できます。方法、サイズ、場所などの情報。
Google CloudはPostgreSQLバックアップを保存するのに適したオプションであり、これを行うためのさまざまな製品を提供しています。ただし、PostgreSQLデータベースは保存場所としてのみ使用できるため、そこで実行する必要はありません。
GSutilツールは、コマンドラインからクラウドストレージデータを管理するための優れた製品であり、使いやすく、高速です。
Google CloudとClusterControlを組み合わせて、PostgreSQLの高可用性環境と監視システムを改善することもできます。 Google Cloud上のPostgreSQLについて詳しく知りたい場合は、詳細なブログ投稿を確認してください。