CDCデータ転送 - 転送元 - MySQL

Prev Next

本ページでは、CDCデータ転送における転送元 - MySQLについて説明します。
接続に関する設定については、MySQL接続情報を参照ください。

対応バージョン

  • MySQL 8.x(推奨)
  • MySQL 5.x(サポート予定・未検証)

利用上の注意・制約

  • ビューの取得には対応していません。
  • CASCADE削除による子レコードの削除はキャプチャされません。
    • 当該レコードの削除はバイナリログとして書き込まれないため、削除イベント自体を取得できません。

事前準備

必須パラメーター設定

MySQLの設定ファイル (my.cnf) のパラメーターを変更する必要があります。
各パラメーターの詳細については、MySQL 8.0 リファレンスマニュアルを参照ください。
なお、上記URLのバージョン部分をお使いのMySQLバージョンに差し替えた上でご確認ください。

設定ファイルの変更が反映されない場合は

設定ファイルの変更が反映されない場合は、データベースを再起動してください。

パラメーター 推奨値 補足
server_id (任意の一意な整数) MySQL のレプリケーション機能(およびCDC)に必要な識別子です。
  • オンプレミス環境の場合、明示的に指定する必要があります。
  • クラウド環境(Amazon RDS や Cloud SQL)の場合、自動的に一意な値が設定されているため、明示する必要はありません。
現在の設定値は、以下のクエリで確認できます。
SHOW VARIABLES LIKE 'server_id'
binlog_format ROW 本パラメーターには、必ずROWを指定してください。
binlog_row_image FULL FULLの指定を推奨します。
binlog_expire_logs_seconds 864000 MySQL 8系の場合、このパラメーターを指定してください。
10日(864000)以上に設定することを推奨します。
expire_logs_days 10 MySQL 5系の場合、このパラメーターを指定してください。
10日以上に設定することを推奨します。
log_bin mysql-binlog お好きな文字列を指定してください。
log_binはバイナリログを有効にするBooleanの設定ですが、プレフィックスを指定することで、出力されるファイル名を制御できます。
log_slave_updates 1
  • レプリカ環境の場合は、必ず1を指定してください。
  • プライマリ環境の場合は、指定しても無視されます。

以下、MySQL 8系の場合の設定ファイルの例となります。

[mysqld]
server_id = 12345
binlog_format=ROW
binlog_row_image=FULL
binlog_expire_logs_seconds=864000
log_bin=mysql-binlog
log_slave_updates=1

クラウドサービス特有の設定

Amazon RDS for MySQLの場合

Amazon Aurora MySQLの場合

Cloud SQL for MySQLの場合

  • PITR (point-in-time recovery) を有効にします。
    • 詳しくは、Google Cloud公式ドキュメントを参照ください。
    • なお、バイナリログの保持期間は、次のうち小さい方が適用されます。
      • transactionLogRetentionDays(PITR保持期間、7日間
      • binlog_expire_logs_secondsまたはexpire_logs_days

接続ユーザーの権限

MySQL接続情報に利用するユーザーに対して、以下の権限を付与する必要があります。

  • SELECT
  • RELOAD
  • SHOW DATABASES
  • REPLICATION CLIENT
  • REPLICATION SLAVE

MySQL側で以下のクエリを実行してください。

GRANT SELECT ON `<database>`.* TO '<username>'@'%';
GRANT RELOAD, SHOW DATABASES ON *.* TO '<username>'@'%';
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<username>'@'%';