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]セクションに次の懸念を追加または変更します。
[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 サービスを再起動します。
- Linux (systemd)
- Linux (init.d)
sudo systemctl restart mysql
# or
sudo systemctl restart mysqld
sudo service mysql restart
# or
sudo /etc/init.d/mysql restart
binlog設定を確認する
MySQL を再起動した後、バイナリ ログが適切に構成されていることを確認します。MySQL に接続して実行します:
-- 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 上のリードレプリカからの取り込みをサポートします。読み取りレプリカを設定するには:
- プライマリ サーバーでバイナリ ログを構成します。
- 読み取りレプリカを作成するには、MySQL レプリケーションを設定します。
- 読み取りレプリカでバイナリ ログが有効になっていることを確認します。
- Databricks 接続を作成するときは、読み取りレプリカの接続文字列を使用します。
プライマリ サーバーとレプリカの間でレプリケーションの遅延が発生する可能性があり、データの鮮度に影響する可能性があります。
ネットワーク構成
MySQL サーバーが Databricks からアクセス可能であることを確認します。
- ポート 3306 (またはカスタム MySQL ポート) での受信トラフィックを許可するようにファイアウォール ルールを構成します。
- クラウド インフラストラクチャを使用する場合は、セキュリティ グループまたはネットワーク ACL を構成します。
- オンプレミス データベースの場合は、VPN、Direct Connect、または ExpressRoute を介した適切なネットワーク接続を確保します。
- セキュリティのために SSL/TLS 接続の使用を検討してください。
セキュリティグループルールの例(EC2)
EC2 セキュリティ グループにインバウンド ルールを追加します。
- タイプ: MySQL
- プロトコル: TCP
- ポート範囲: 3306
- ソース: Databricks IP 範囲
次のステップ
管理者は次のいずれかを実行できるようになりました。
- カタログエクスプローラーを使用して接続を作成し、管理者以外のユーザーがパイプラインを作成できるようにします。
- データ取り込み UI を使用して接続とパイプラインを作成する