

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Logstash を使用して、オンプレミス Oracle データベースを Amazon OpenSearch Service へ移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash"></a>

*Amazon Web Services、Aditya Goteti*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-summary"></a>

このパターンは、Logstash を使用して、オンプレミス Oracle データベースから Amazon OpenSearch Service へデータを移動する方法について説明します。アーキテクチャ上の考慮事項、必要なスキルセットと推奨事項が含まれます。データは単一テーブル、または全文検索を実行する必要がある複数テーブルからのものです。 

OpenSearch サービスは、仮想プライベートクラウド (VPC) 内で設定、または IP ベースの制限で公開できます。このパターンは、OpenSearch サービスが VPC 内で設定されるシナリオを説明します。Logstash は Oracle データベースからデータを収集して JSON 形式に構文解析し、そのデータを OpenSearch サービスへのフィードに使用されます。 

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ Java 8 (Logstash 6.4.3 で必要)
+ AWS 仮想プライベートネットワーク (AWS VPN) を使用して確立される、オンプレミスデータベースサーバーと VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンス間の接続性
+ データベースから OpenSearch Service にプッシュされる必要なデータを取得するクエリ
+ Java Database Connectivity (JDBC) ドライバー　

**制限**
+ Logstash はデータベースから物理削除されるレコードは識別できない 

**製品バージョン**
+ Oracle Database 12c
+ OpenSearch Service 6.3
+ Logstash 6.4.3

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース
+ オンプレミス AWS VPN

**ターゲットテクノロジースタック**
+ VPC
+ EC2 インスタンス
+ OpenSearch Service 
+ Logstash
+ NAT ゲートウェイ (EC2 インスタンスのオペレーティングシステムアップデート、Java 8、Logstash、プラグインのインストール用)

**データ移行アーキテクチャ**

![Logstash を使用して、オンプレミス Oracle データベースから Amazon OpenSearch Service へデータを移動する方法。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/09f6d2de-de2f-4ed6-af93-34b71b75a263/images/df6a61fb-09fb-49d4-a7e8-b04e88c003df.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-tools"></a>
+ Logstash 6.4.3
+ JDBC 入力プラグイン ([ダウンロードおよび詳細情報)](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)
+ ログスタッシュ出力プラグイン ([logstash-output-amazon\_es)](https://github.com/awslabs/logstash-output-amazon_es)
+ Oracle JDBC ドライバー

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースのサイズを特定します。 | ソースデータのサイズは、インデックスに設定するシャードの数の決定に使用するパラメータの 1 つです。 | DBA、データベース開発者 | 
| 各列のデータ型と対応するデータを分析します。 | OpenSearch Service は、これまで見えていなかったフィールドがドキュメントに見つかると、データ型を動的にマッピングします。明示的に宣言する必要のある特定のデータ型または形式 (日付フィールドなど) がある場合は、インデックス作成時にフィールドを特定し、そのフィールドのマッピングを定義します。 | アプリ所有者、開発者、データベース開発者 | 
| プライマリーキーまたは一意キーがある列があるかどうかを確認します。 | 更新または挿入時に Amazon OpenSearch Service のレコードが重複しないようにするには、`amazon_es` プラグインの出力セクションで `document_id` 設定をする必要があります (たとえば、`customer_id` がプライマリキーの `document_id => "%{customer_id}"`)。 | アプリ所有者、開発者 | 
| 追加された新しいレコードの数と頻度を分析し、レコードがどのような頻度で削除されるかを確認します。 | このタスクは、ソースデータの増加率を把握するために必要です。データの読み取り量が多く、挿入がまれな場合は、1 つのインデックスにできます。新しいレコードが頻繁に挿入され、削除されない場合、シャードサイズは推奨最大サイズの 50 GB を簡単に超える可能性があります。この場合は、Logstash とエイリアスを使用してアクセスできるコードでインデックスパターンを設定することで、インデックスを動的に作成できます。 | アプリ所有者、開発者 | 
| 必要なレプリカの数を決定します。 |  | アプリ所有者、開発者 | 
| インデックスに設定するシャード数を決定します。 |  | アプリ所有者、開発者 | 
| 専用マスターノード、データノード、EC2 インスタンスのインスタンスタイプを特定します。 | 詳細については、[関連リソース](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources)セクションを参照してください。 | アプリ所有者、開発者 | 
| 必要な専用マスターノードとデータノード数を決定します。 | 詳細については、[関連リソース](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources)セクションを参照してください。 |  | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスの起動 | AWS VPN が接続されている VPC 内で EC2 インスタンスを起動します。 | Amazon VPC コンストラクト、AWS VPN | 
| EC2 インスタンスに Logstash をインストールします。 |  | 開発者 | 
| Logstash プラグインをインストールします。 | 必要な Logstash プラグイン `jdbc-input` と ` logstash-output-amazon_es` をインストールします。 | 開発者 | 
| Logstash を設定します。 | Logstashキーストアを作成して、AWS Secrets Manager キー、データベース認証情報などの機密情報を保存し、そのレファレンスを Logstash 設定ファイルに置きます。 | 開発者 | 
| デッドレターキューと永続キューを設定します。 | デフォルトで、データにマッピングエラーまたはその他の問題が含まれるために処理できないイベントが Logstash で遭遇すると、Logstash パイプラインは失敗したイベントをハングまたはドロップします。このような状況でデータ損失を防ぐため、失敗したイベントをドロップせずにデッドレターキューに書き込むように Logstash を設定できます。異常終了時のデータ損失に対して保護するために、Logstash にはメッセージキューをディスクに保存する永続キュー機能があります。永続キューは Logstash のデータに永続性を提供します。 | 開発者 | 
| Amazon OpenSearch Service ドメインを作成します。 | AWS Identity and Access Management (IAM) 認証情報でリクエストに署名する必要がないアクセスポリシーで Amazon OpenSearch Service ドメインを作成します。Amazon OpenSearch Service ドメインは、同じ VPC 内に作成する必要があります。また、分析に基づいてインスタンスタイプを選択し、専用ノードとマスターノードの数を設定する必要があります。 | 開発者 | 
| 必要な Amazon OpenSearch Service ログを設定します。 | 詳細については、[OpenSearch サービスドキュメント](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html)を参照してください。 |  | 
| インデックスを作成します。 |  | 開発者 | 
| Logstash を起動します。 | Logstash をバックグラウンドサービスとして実行します。Logstash は設定された SQL クエリを実行し、データを取得して JSON 形式に変換し、OpenSearch サービスに送ります。初回ロードの場合は、Logstash 設定ファイルでスケジューラーを設定しないでください。 | 開発者 | 
| ドキュメントを確認します。 | インデックスの文書数と、すべての文書がソースデータベースに存在するかどうかを確認します。初回ロード時にインデックスに追加され、Logstash の停止に使用されます。<br />Logstashの設定を変更して、クライアントの要件に応じて一定の間隔で実行されるスケジューラーを追加し、Logstash を再起動します。Logstash は前回の実行後に更新または追加されたレコードのみを選択し、最終実行タイムスタンプは Logstash 設定ファイルの `last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"` プロパティで設定したファイルに保存されます。 | 開発者 | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources"></a>
+ [推奨される CloudWatch アラーム](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html) 
+ [Amazon OpenSearch Service の専用マスターノード](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains-dedicatedmasternodes.html) 
+ [Amazon OpenSearch Service ドメインのサイジング](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/sizing-domains.html) 
+ [Logstash ドキュメント](https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html) 
+ [JDBC 入力プラグイン](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)
+ [Logstash 出力プラグイン](https://github.com/awslabs/logstash-output-amazon_es)
+ [Amazon OpenSearch Service](https://aws.amazon.com/elasticsearch-service/) 