すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:AnalyticDB for MySQL へのデータインポート(Logstash 使用)

最終更新日:Mar 29, 2026

データが既に Apache Kafka パイプラインを経由してフローしている場合、Logstash を使用して、AnalyticDB for MySQL Data Warehouse Edition (V3.0) に直接ルーティングできます。AnalyticDB for MySQL は MySQL と完全互換であるため、標準の Logstash JDBC 出力プラグインを追加のドライバーまたはアダプターなしで接続できます。

Logstash によるデータ処理の仕組み

Logstash は、3 つの順次実行されるプラグインステージを経てデータを移動させます:

ステージプラグイン種別役割
収集入力ソース(Kafka、ファイル、HTTP など)からイベントを読み取ります
変換フィルター(Filter)イベントの解析、エンリッチメント、再構成(Grok 解析、IP ジオロケーション、PII の匿名化など)を行います
書き込み出力(Output)変換済みのイベントを送信先(JDBC 経由の AnalyticDB for MySQL)に送信します

前提条件

開始する前に、以下の環境が整っていることを確認してください。

  • Logstash 1.5 以降(バージョン 1.5 で Apache Kafka 統合機能が標準搭載されました)

  • インポート対象のデータを含む Topic を 1 つ以上持つ Apache Kafka クラスター

  • AnalyticDB for MySQL Data Warehouse Edition (V3.0) クラスターのエンドポイント、データベース名、ユーザー名、およびパスワード

  • Logstash のクラスパス上に配置された MySQL JDBC ドライバー(com.mysql.jdbc.Driver

Kafka データの AnalyticDB for MySQL へのインポート

手順 1:プラグインのインストールと更新

Apache Kafka サーバーのルートディレクトリで、以下のコマンドを実行します。

bin/plugin install
bin/plugin update

利用可能な Logstash プラグインの全一覧については、「GitHub 上の Logstash プラグイン リポジトリ」をご参照ください。

手順 2:パイプラインの構成

入力ブロックと出力ブロックを含む Logstash 構成ファイル(例: config/kafka-to-adb.conf)を作成します。

入力構成

以下の例では、Kafka コンシューマーを構成しています。

input {
    kafka {
        zk_connect => "localhost:2181"
        group_id => "Logstash"
        topic_id => "test"
        codec => plain
        reset_beginning => false # boolean(任意)、デフォルト:false
        consumer_threads => 5  # 数値(任意)、デフォルト:1
        decorate_events => true # boolean(任意)、デフォルト:false
    }
}

入力パラメーター

パラメーター必須デフォルト説明
zk_connect文字列はいZooKeeper 接続文字列(例:localhost:2181
group_id文字列はいコンシューマーグループ ID。異なるコンシューマーグループ間の消費は相互に分離されます。
topic_id文字列はいサブスクライブおよび消費対象となる Kafka Topic
reset_beginningbooleanいいえfalseLogstash 起動時のオフセット位置:false の場合、直近のコミット済みオフセット(または未コミットの場合は最小オフセット)から再開します。true の場合、最小オフセットから開始し、最後のメッセージを消費後に「フォロー」モード(tail -F)に切り替わります。
consumer_threads数値いいえ1並列実行するコンシューマースレッド数
decorate_eventsbooleanいいえfalsetrue の場合、各イベントにメタデータ(メッセージサイズ、Topic ソース、コンシューマーグループ)をアタッチします。
rebalance_max_retries数値いいえコンシューマーグループのリバランス時に、ZooKeeper へパーティション所有者ノードを登録する際の最大リトライ回数
consumer_timeout_ms数値いいえメッセージ受信のタイムアウト期間。デフォルト値がご利用の環境で問題を引き起こす場合にのみ変更してください。

パラメーターの詳細なリファレンスについては、「GitHub 上の logstash-kafka README」をご参照ください。

説明

同一 Topic からの並列メッセージ消費を行うには、Topic を複数のパーティションに分割し、各コンシューマーに同一の group_id および topic_id を割り当てます。これにより、メッセージが順序通りに消費されます。

出力構成

以下の例では、JDBC 出力プラグインを使用して AnalyticDB for MySQL にイベントを書き込みます。

output {
    jdbc {
        driver_class => "com.mysql.jdbc.Driver"
        connection_string => "jdbc:mysql://HOSTNAME/DATABASE?user=USER&password=PASSWORD"
        statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
    }
}

connection_string 内のプレースホルダーを置き換えます。

プレースホルダー説明
HOSTNAMEAnalyticDB for MySQL クラスターのエンドポイント
DATABASE対象データベース名
USERデータベースユーザー名
PASSWORDデータベースパスワード

出力パラメーター

パラメーター必須説明
driver_class文字列はいJDBC ドライバークラス名。AnalyticDB for MySQL の場合は com.mysql.jdbc.Driver を指定します。
connection_string文字列はいAnalyticDB for MySQL クラスターへの JDBC 接続 URL
statement配列はい配列の先頭要素は、? をプレースホルダーとして使用した INSERT 文であり、その後に続く要素は、各プレースホルダーに対応する Logstash フィールド名(順序通り)です。

パラメーターの詳細なリファレンスについては、「GitHub 上の logstash-kafka README」をご参照ください。

手順 3:パイプラインの起動

Logstash のインストールディレクトリで、以下のコマンドを実行します。

bin/Logstash -f config/kafka-to-adb.conf

Logstash が構成済みの Kafka Topic からメッセージを消費し、AnalyticDB for MySQL へ書き込むようになります。