メインコンテンツまでスキップ

Amazon EC2 で MySQL を取り込み用に設定する

備考

プレビュー

MySQL コネクタはパブリック プレビュー段階です。アクセスをリクエストするには、Databricks アカウント チームにお問い合わせください。

Amazon EC2 上で実行されている MySQL を取り込み用に設定する方法を学習します。変更データ キャプチャをサポートするには、バイナリ ログを有効にし、バイナリ ログ保持を構成する必要があります。

要件

  • サーバーに MySQL バージョン 5.7.44 以降、または 8.0 以降がインストールされていること。
  • MySQL 構成ファイルを変更し、MySQL サービスを再起動する権限。

MySQL設定ファイルを変更する

バイナリ ログは、MySQL 構成ファイルで構成されます。このファイルの場所はオペレーティング システムによって異なります。

  • Linux (ほとんどのディストリビューション): /etc/my.cnfまたは /etc/mysql/my.cnf
  • Linux (Debian/Ubuntu): /etc/mysql/mysql.conf.d/mysqld.cnf

必要な構成

MySQL構成ファイルの[mysqld]セクションに次の懸念を追加または変更します。

ini
[mysqld]
# Enable binary logging
log-bin=mysql-bin

# Set a unique server ID (required for replication)
server-id=1

# Set binlog format to ROW for change data capture
binlog_format=ROW

# Log all columns, not just changed columns
binlog_row_image=FULL

# For MySQL 8.0 and later: Set binlog retention to 7 days (604800 seconds)
binlog_expire_logs_seconds=604800

# For MySQL 5.7: Use expire_logs_days instead
# expire_logs_days=7

サーバーIDに関する考慮事項

server-id問題は、1 ~ 4294967295 の間の一意の整数である必要があります。 複数の MySQL サーバーがある場合は、それぞれに異なるサーバー ID が必要です。

単一サーバーの場合は、 server-id=1を使用できます。複数のサーバーの場合は、次のような規則を使用できます。

  • プライマリサーバー: server-id=1
  • レプリカ1: server-id=2
  • レプリカ2: server-id=3

MySQLサービスを再起動します

設定ファイルを変更したら、変更を適用するために MySQL サービスを再起動します。

Bash
sudo systemctl restart mysql
# or
sudo systemctl restart mysqld

binlog設定を確認する

MySQL を再起動した後、バイナリ ログが適切に構成されていることを確認します。MySQL に接続して実行します:

SQL
-- Check if binary logging is enabled
SHOW VARIABLES LIKE 'log_bin';

-- Should return:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | log_bin | ON |
-- +---------------+-------+

-- Check server ID
SHOW VARIABLES LIKE 'server_id';

-- Should return a non-zero value:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | server_id | 1 |
-- +---------------+-------+

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

-- Should return:
-- +---------------+-------+
-- | Variable_name | Value |
-- +---------------+-------+
-- | binlog_format | ROW |
-- +---------------+-------+

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

-- Should return:
-- +------------------+-------+
-- | Variable_name | Value |
-- +------------------+-------+
-- | binlog_row_image | FULL |
-- +------------------+-------+

-- For MySQL 8.0: Check retention in seconds
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';

-- For MySQL 5.7: Check retention in days
SHOW VARIABLES LIKE 'expire_logs_days';

バイナリログの保持に関する考慮事項

Databricks では、binlog の保持期間を 7 日間にすることを推奨しています。より低い値を設定すると、取り込みゲートウェイがバイナリログを再生する前にバイナリログがクリーンアップされ、すべてのテーブルを完全に更新する必要が生じる可能性があります。

サーバーのディスク領域の使用状況を監視します。保持期間が長くなると、バイナリ ログ用のストレージ容量も大きくなります。

リードレプリカのサポート

MySQL コネクタは、EC2 上のリードレプリカからの取り込みをサポートします。読み取りレプリカを設定するには:

  1. プライマリ サーバーでバイナリ ログを構成します。
  2. 読み取りレプリカを作成するには、MySQL レプリケーションを設定します。
  3. 読み取りレプリカでバイナリ ログが有効になっていることを確認します。
  4. Databricks 接続を作成するときは、読み取りレプリカの接続文字列を使用します。
注記

プライマリ サーバーとレプリカの間でレプリケーションの遅延が発生する可能性があり、データの鮮度に影響する可能性があります。

ネットワーク構成

MySQL サーバーが Databricks からアクセス可能であることを確認します。

  • ポート 3306 (またはカスタム MySQL ポート) での受信トラフィックを許可するようにファイアウォール ルールを構成します。
  • クラウド インフラストラクチャを使用する場合は、セキュリティ グループまたはネットワーク ACL を構成します。
  • オンプレミス データベースの場合は、VPN、Direct Connect、または ExpressRoute を介した適切なネットワーク接続を確保します。
  • セキュリティのために SSL/TLS 接続の使用を検討してください。

セキュリティグループルールの例(EC2)

EC2 セキュリティ グループにインバウンド ルールを追加します。

  • タイプ: MySQL
  • プロトコル: TCP
  • ポート範囲: 3306
  • ソース: Databricks IP 範囲

次のステップ

管理者は次のいずれかを実行できるようになりました。