コンテンツに移動
データベース

GKE Cronjob と Google Cloud Storage を介した Neo4j グラフ データベースのバックアップと復元

2024年2月5日
Google Cloud Japan Team

※この投稿は米国時間 2024 年 1 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。

昨今のデータ中心の世界では、データベース情報の完全性と可用性は、あらゆるデジタル企業の成功に不可欠です。Neo4j は、込み入った関係と複雑なクエリを巧みに処理することで知られるプレミアなグラフ データベースであり、この現実の最前線に立っています。しかしながら、Neo4j のスケーラビリティは、特にデータのバックアップと復元に関して、独自の課題をもたらす可能性があります。データが急激に増加するにつれて、従来のデータベース管理手法では限界が見えてきます。

背景

Neo4j データベース管理の動的な領域において、開発者や IT プロフェッショナルは複数の課題に取り組んでいます。従来のバックアップ方法は、面倒なだけでなくリスクも伴います。手作業による介入は人的ミスにつながる可能性があり、ローカル ストレージのバックアップにはシステム障害や予期せぬ災害によるデータ損失の脅威が伴います。さらに、Neo4j が提供する多様なバックアップ オプション(完全、増分、差分)は有益ですが、包括性と効率性のバランスを取るための戦略的なアプローチが必要です。

こうした複雑さを認識し、Google Cloud コンサルティングは Neo4j データベースのバックアップと復元のための自動化されたクラウド中心のソリューションを開拓しました。この革新的なアプローチでは、Google Kubernetes Engine(GKE)CronJobs の汎用性と Google Cloud Storage(GCS)バケットの堅牢性を組み合わせて利用しています。クラウドのスケーラビリティと復元力を活用することで、このソリューションはバックアップ プロセスを効率化するだけでなく、データの損失や破損に関連するリスクを大幅に軽減します。

当初このツールは、特定のクライアントのニーズに合わせてカスタムメイドされたものでしたが、データの復元力を高める可能性が示されたため、Google Cloud コンサルティングはその設計をオープンソース化することを決定しました。この決定は、先進的なクラウドネイティブ ソリューションがより広範なコミュニティで利用できるよう、イノベーションと共有の文化を育成するという Google の継続的なコミットメントを反映するものです。このツールをオープンソース化することで、開発者や組織がデータを保護するだけでなく、安全で効率的な方法で Neo4j の機能を最大限に活用できるようにすることを目指しています。

データが意思決定と運用の要となる未来へ向けてさらに一歩踏み出すとき、データを確実にバックアップし、復元する能力が不可欠となります。このガイドと Google Cloud が提供するツールにより、Neo4j を活用する組織は、より大きな自信と能力を持ってこの道を進むことができます。

環境の設定

始める前に、環境が適切に構成されていることを確認しましょう。

  1. Google Cloud: 有効な Google Cloud アカウントが必要です。
  2. Google Kubernetes Engine(GKE): GKE クラスタを作成し、Neo4j と関連コンポーネントをデプロイします。
  3. Google Cloud Storage(GCS): GCS バケットをセットアップして、Neo4j のバックアップを安全に保存します。リポジトリの README で提供されている詳細なセットアップ手順に沿って進めます。
  4. コード リポジトリ: 提供されるリポジトリには、シンプルさと使いやすさを考慮して設計されたバックアップと復元の手順のわかりやすい例が含まれています。Neo4j のバックアップと復元の例

バックアップ

https://storage.googleapis.com/gweb-cloudblog-publish/images/Neo4j_Backup_Architecture.max-2200x2200.png

バックアップ手順では、バックアップのプロセスを作成および管理するための以下のステップを説明します。各ステップを詳しく見ていきましょう。

1. バックアップ Pod イメージのビルドと push:

  1. バックアップ用の専用コンテナを作成することから始めます()。
  2. backup/backup.env ファイルの設定が正しいことを確認します。これらの設定は、バックアップにデータの配置場所と Neo4j データベースの検索方法を指示します。
  3. pod-image-exec.sh というスクリプトを使用してこのコンテナを作成し、Google Artifact Registry などのイメージ リポジトリに送ります。
読み込んでいます...

2. バックアップ スケジュールの展開:

  1. backup/deployment/backup-cronjob.yaml」ファイルで、バックアップを作成する頻度やその他の特別な設定を決めます。
  2. deploy-exec.sh」というスクリプトを使用して、Neo4j クラスタのバックアップ作成スケジュールを設定します。
読み込んでいます...

3. バックアップ コンテナの更新(必要な場合):

  1. バックアップの動作方法を変更したい場合は、「backup-via-admin.sh」というスクリプトを使用するか、「backup/docker/」フォルダ内の Dockerfile を変更することで変更が可能です。

  2. 変更後は、バックアップ コンテナを更新する必要があります。
読み込んでいます...

4. バックアップ スケジュールの削除(必要な場合):

  1. 自動バックアップを作成する必要がなくなった場合は、簡単なコマンドでスケジュールを削除できます。<CRONJOB_NAME> をスケジュール名に置き換えます。
読み込んでいます...

5. バックアップ スケジュールの再展開(必要な場合):

  1. 気が変わってバックアップの作成を再開したい場合は、上記と同じ構成ファイルを使用して簡単にスケジュールを再度設定できます。

読み込んでいます...

この手順により、ストレージに GCS を使用し、Kubernetes 上で実行されている Neo4j データベースのバックアップ プロセスを自動化できます。これによりデータが定期的にバックアップされ、必要に応じて復元できるようになり、Neo4j ベースのアプリケーションにデータの復元力と信頼性が提供されます。

復元

1. 要件:

復元プロセスを続行する前に、次のいずれかがあることを確認してください。

  1. Neo4j インスタンス上で Google Cloud SDK を実行するサイドカー コンテナ

  2. Neo4j インスタンスが実行されているサーバーにプリインストールされた Google Cloud SDK

2. Google Cloud Storage バケットからのダウンロードと復元:

  1. 復元プロセスには、Google Cloud StorageGCS)バケットからのバックアップ データの取得とそれを使用した Neo4j データベースの復元が含まれます。

  2. このプロセスを単純化するために、「/restore/restore-exec.sh」というスクリプトがあり、復元ステップを調整し、一度に 1 サーバーずつ処理します。

3. 復元スクリプトの実行:

  1. 復元プロセスを開始するには、まずスクリプトを実行する権限があることを確認します。

読み込んでいます...

b. 次に、復元スクリプトを実行します。

読み込んでいます...

この復元手順は、Neo4j インスタンスまたはサーバー上で必要な Google Cloud ツールが利用可能であることを前提としています。スクリプトを使用して Google Cloud Storage バケットからバックアップ データをダウンロードし、Neo4j データベースを一度に 1 サーバーずつ慎重に復元します。このプロセスにより、Neo4j データベースはデータ損失や破損が発生した場合でも、効率的に復元することができ、アプリケーションのデータの信頼性を高めます。

まとめ

Neo4j データを保護することが何よりも重要です。このブログ投稿で確認したコード リポジトリは、GKE および GCS の機能と組み合わせることで、Neo4j のバックアップと復元のための堅牢なソリューションを提供します。ここで説明する包括的な手順とベスト プラクティスに従うことで、Google Cloud(この場合は Google Kubernetes Engine と Cloud Storage)を最大限に活用して Neo4j データベースの復元力と可用性を確保でき、最終的にはアプリケーションの成功と信頼性に貢献します。

このガイドでは、Google Cloud コンサルティングの能力と、当面の課題を解決するだけでなく将来の進歩への道を開くソリューションの開発に対する Google の取り組みを垣間見ることができます。Google Kubernetes Engine と Cloud Storage のパワーを活用して、Neo4j データベースを安全に保護しましょう。詳しくはお問い合わせください

リファレンスとその他の参考資料

ー 戦略的クラウド エンジニア Usama Ijaz

ー クラウド データベース移行エンジニア David Ng

投稿先