メインコンテンツまでスキップ
に最終更新

Amazon RDS MySQL

Doris のストリーミング取り込みは、Amazon RDS MySQL からのデータ同期をサポートしています。対応バージョンは MySQL 5.6、5.7、8.0.x です。同期タスクを開始する前に、RDS インスタンスで Binlog が有効になっており、変更ログが正しい形式で記録されることを確認してください。

このドキュメントは、ストリーミング取り込み(CDC)を使用して Amazon RDS MySQL から Doris にデータを同期するユーザーを対象としています。必要な事前設定を、作業順に説明します。

前提条件のチェックリスト​

作業を始める前に、次の条件を確認してください。

確認項目期待値説明
log_binONBinlog が有効になっている
binlog_formatROW変更が行単位で記録される
binlog_row_imageFULL行全体のイメージが記録される
同期用ユーザー作成済みSELECT、REPLICATION SLAVE、REPLICATION CLIENT 権限を持つ
Binlog の保持期間72 時間以上ログが早期に削除されて同期が中断するのを防ぐ

満たしていない条件がある場合は、以下の手順に従って順に設定してください。

ステップ 1:現在の Binlog 設定を確認する​

目的:RDS インスタンスの現在の Binlog 状態を確認し、パラメータグループの変更が必要か判断します。

RDS インスタンスに接続した後、次の SQL を実行します。

-- Check if binlog is enabled
SHOW VARIABLES LIKE 'log_bin';

-- Check binlog format
SHOW VARIABLES LIKE 'binlog_format';

-- Check binlog row image
SHOW VARIABLES LIKE 'binlog_row_image';

結果の見方:

  • log_bin = ON、binlog_format = ROW、binlog_row_image = FULL の場合は、追加の設定は不要です。ステップ 4:同期用ユーザーを作成するに進んでください。
  • いずれかの条件を満たしていない場合は、ステップ 2 とステップ 3 に進んでください。

ステップ 2:パラメータグループを作成して設定する​

目的:AWS コンソールでカスタムパラメータグループを作成し、Binlog 関連のパラメータを Doris のストリーミング取り込みに必要な値に変更します。

手順は次のとおりです。

  1. AWS RDS コンソールにログインします。

  2. 左側のナビゲーションで パラメータグループ(Parameter groups) を選択し、パラメータグループを作成(Create parameter group) をクリックします。

  3. 対象の MySQL バージョンに対応するファミリーを選択し、新しいパラメータグループを作成します。

  4. パラメータグループを編集し、binlog_format を検索して、値を ROW に設定します。

    MySQL の Binlog 形式の設定

  5. 同様に、binlog_row_image を検索して、値を FULL に設定します。

  6. 変更を保存(Save Changes) をクリックして保存します。

変更が必要なパラメータを以下にまとめます。

パラメータ設定値目的
binlog_formatROWCDC 同期に必要な行単位でデータの変更を記録する
binlog_row_imageFULL各変更の前後の行データ全体を記録する

ステップ 3:パラメータグループを適用してインスタンスを再起動する​

目的:新しいパラメータグループを対象の RDS インスタンスに関連付け、再起動して設定を反映します。

手順は次のとおりです。

  1. RDS コンソールで対象のインスタンスを選択し、変更(Modify) をクリックします。
  2. DB パラメータグループ(DB parameter group) で、新しく作成したパラメータグループを選択します。
  3. すぐに適用(Apply immediately) を選択し、変更をすぐに適用します。
  4. 設定を反映するため、RDS インスタンスを再起動します。
注意

binlog_format パラメータの変更を反映するには、RDS インスタンスの再起動が必要です。アクセスの少ない時間帯に実施してください。

ステップ 4:同期用ユーザーを作成する​

目的:最小権限の原則に従い、Doris のストリーミング取り込み専用のアカウントを作成します。

  1. 専用ユーザーを作成します。

    CREATE USER 'doris_sync'@'%' IDENTIFIED BY '<password>';
  2. 同期に必要な権限を付与します。

    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'doris_sync'@'%';

必要な権限の説明は次のとおりです。

権限目的
SELECT既存のデータを読み取る(全量ロード段階)
REPLICATION SLAVEレプリカとして Binlog を取得する
REPLICATION CLIENTプライマリの Binlog 状態を照会する

ステップ 5:Binlog の保持期間を設定する​

目的:デフォルトでは、Amazon RDS MySQL はバイナリログを可能な限り早く削除します。障害が発生した場合にもレプリケーションで使用する Binlog ファイルを利用できるように、保持期間を 72 時間以上 に設定することを推奨します。

mysql.rds_set_configuration ストアドプロシージャを使用して保持期間を設定します。

CALL mysql.rds_set_configuration('binlog retention hours', 72);
注意

この設定項目が未設定の場合や、保持期間が短すぎる場合は、バイナリログに欠落が生じ、Doris がレプリケーションを再開できなくなる可能性があります。

よくある質問(FAQ)​

Q1:binlog_format の変更後、インスタンスの再起動は必須ですか?

はい。binlog_format は静的パラメータであり、変更を反映するには RDS インスタンスの再起動が必要です。アクセスの少ない時間帯に実施してください。

Q2:binlog_row_image を FULL に設定する必要があるのはなぜですか?

Doris のストリーミング取り込みでは、UPDATE と DELETE の操作を正しく再現するために、各変更の前後の行データ全体が必要です。MINIMAL または NOBLOB に設定すると、同期エラーやデータの欠落が発生します。

Q3:同じパラメータグループを複数の RDS インスタンスで再利用できますか?

はい。同じバージョンファミリーの複数の RDS インスタンスで、必要な Binlog 設定が同じであれば、同一のパラメータグループを共有できます。

Q4:Binlog の保持期間をさらに長く設定できますか?

はい。binlog retention hours には 1~168 時間(最大 7 日間)を設定できます。保持期間を長くすると復旧に使える時間が増えますが、ストレージの使用量も増えます。

トラブルシューティング​

症状考えられる原因対処方法
SHOW VARIABLES LIKE 'log_bin' が OFF を返すインスタンスで自動バックアップが有効になっていないため、Binlog が無効になっているRDS コンソールでインスタンスの自動バックアップを有効にします。これにより Binlog も自動的に有効になります
変更後も binlog_format が MIXED または STATEMENT のままインスタンスが再起動されていないか、関連付けられたパラメータグループが正しくない新しいパラメータグループが関連付けられていることを確認し、インスタンスを再起動します
Doris の同期で binary log not found が報告されるBinlog が削除されているbinlog retention hours を増やし、Doris の同期タスクを再起動します
同期用ユーザーが接続できないホストの許可リストまたはパスワードが正しくない'doris_sync'@'%' のホスト指定が Doris ノードの送信元 IP アドレスに一致するか確認します
権限不足のエラーが発生するREPLICATION SLAVE などの権限が不足しているステップ 4 の GRANT 文を再実行します