ユーティリティ オブジェクト スクリプトを使用して MySQL の取り込みを準備する
プレビュー
MySQL コネクタはパブリック プレビュー段階です。アクセスをリクエストするには、Databricks アカウント チームにお問い合わせください。
このページには、Databricks では使用されない用語である「 スレーブ 」への参照が含まれています。サードパーティ ソフトウェアから用語が削除されると、このページからも削除されます。
LakeFlow Connectを使用してDatabricksに取り込むためのMySQLデータベース セットアップ タスクを完了します。
要件
- MySQL バージョン : 5.7.44 または 8.0+
- 実行ユーザー : ルートまたは完全な管理者権限 (SUPER、ALL PRIVILEGES) を持っている必要があります
- CDC ユーザー : セットアップ手順を実行する前に、適切な認証プラグインがすでに存在している必要があります
- ターゲットスキーマ/テーブル : 権限を付与する前に既に存在している必要があります
ステップ 1: ユーティリティ オブジェクトをインストールする
このステップでは、 MySQL CDCセットアップに必要なユーティリティ ストアド プロシージャをインストールします。
- スクリプトをダウンロード: mysql_setup.sql
- MySQL Workbench、DBeaver、またはお好みの SQL クライアントでスクリプトを開きます。
- MySQL インスタンスに root または管理者ユーザーとして接続します。
- 希望するスキーマに接続されていることを確認してください。
- スクリプトを実行します。
- インストールを確認します。
SELECT ROUTINE_NAME
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = '<schema-name>'
AND ROUTINE_TYPE = 'PROCEDURE'
AND ROUTINE_NAME IN ('lakeflow_cdc_setup', 'lakeflow_setup_cdc_user');
ステップ 2: CDCユーザーを作成する
セットアップ手順を実行する前に、適切な認証プラグインを使用して CDC ユーザーを作成します。
MySQL 8.xの場合:
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';
MySQL 5.x の場合:
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH sha256_password BY 'your_secure_password';
認証プラグインは MySQL のバージョンと一致する必要があります。間違ったプラグインを使用すると、セットアップ手順が失敗します。
ステップ 3: バイナリログを有効にする (スタンドアロンMySQLのみ)
このステップは、 CDC操作に必要なバイナリ ログ設定を構成します。 詳細については、以下の手順リファレンスのlakeflow_setup_cdc_userを参照してください。
CALL lakeflow_cdc_setup();
この手順はスタンドアロンの MySQL インスタンスでのみ機能します。マネージドサービス ( Amazon RDS、 Azure Database for MySQL 、Google クラウドSQL ) の場合は、サービス固有の構成ツールを使用します。
- Amazon RDS : 問題グループを使用して
binlog_format = ROWを設定し、binlog_row_image = FULL - Azure MySQL : サーバーを使用する
- Google クラウドSQL : データベース フラグを使用する
ステップ 4: CDC権限を付与する
このステップはCDCユーザーを検証し、取り込みに必要な権限を付与します。 詳細については、以下の手順リファレンスのlakeflow_setup_cdc_userを参照してください。
-- Grant permissions on specific tables
CALL lakeflow_setup_cdc_user('cdc_user', '`mydb`.`orders`, `mydb`.`customers`');
代替オプション:
- 特定のスキーマ内のすべてのテーブル:
'mydb1.*,mydb2.*' - 混合(スキーマと特定のテーブル)の場合:
'mydb1.*,mydb2.注文' - レプリケーション権限のみ(テーブルアクセスなし)の場合:
'NULL'
ステップ 5: セットアップを確認する
次のクエリを実行して、CDC ユーザーに正しい権限があることを確認します。
-- Check user privileges
SHOW GRANTS FOR 'cdc_user'@'%';
-- Verify binary logging configuration
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';
-- Verify user authentication plugin
SELECT user, host, plugin FROM mysql.user WHERE user = 'cdc_user';
手順参照
lakeflow_setup_cdc_user
適切な認証プラグインを持つ CDC ユーザーが存在することを検証し、CDC 操作に必要な権限を付与します。
構文:
CALL lakeflow_setup_cdc_user(
@User = 'username',
@Tables = 'table_list'
);
パラメーター:
パラメーター | Type | 説明 |
|---|---|---|
|
| CDC ユーザー名 (既に存在している必要があります) |
|
| テーブル/スキーマのカンマ区切りリスト |
表リスト形式:
フォーマット | 例 | 説明 |
|---|---|---|
特定のテーブル |
| 特定のテーブルに対するSELECT権限を付与する |
スキーマ内のすべてのテーブル |
| スキーマ内のすべてのテーブルに対してSELECT権限を付与します |
混合 |
| スキーマと特定のテーブルの組み合わせ |
レプリケーションのみ |
| レプリケーション権限のみ付与し、テーブルアクセスは付与しません |
権限が付与されました:
権限 | スコープ | 目的 |
|---|---|---|
| グローバル ( | バイナリログの読み取りに必要 |
| グローバル ( | 必須 |
|
| 認証プラグイン情報を読み取るために必要です |
| 指定されたテーブル | CDCデータの読み取りに必要 |
検証チェック:
この手順では、権限を付与する前に次の検証を実行します。
- MySQLのバージョンは5.xまたは8.xです
- ユーザーは存在する
host = '%' - ユーザーはMySQLバージョン用の正しい認証プラグインを持っています
- 指定されたすべてのスキーマが存在する
- 指定されたすべてのテーブルが存在する(ワイルドカード以外のエントリの場合)
レイクフローCDCセットアップ
CDC 操作に必要な MySQL バイナリ ログ設定を構成します。
構文:
CALL lakeflow_cdc_setup();
疑問: なし
適用された構成:
設定 | Value | 目的 |
|---|---|---|
|
| バイナリログ内のすべての列の変更をキャプチャします |
|
| 前後の画像の完全なログ |
MySQLバージョンによる動作:
バージョン | 挙動 |
|---|---|
MySQL 8.x |
|
MySQL 5.x |
|
一般的なシナリオ
シナリオ1: 特定のテーブルのみ
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant permissions on specific tables
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.`orders`, `sales`.`customers`, `inventory`.`products`');
シナリオ2: 特定のスキーマ内のすべてのテーブル
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant permissions on all tables in schemas
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.*, `inventory`.*, `hr`.*');
シナリオ 3: ハイブリッド アプローチ (スキーマ + 特定のテーブル)
-- Create user
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Setup binary logging
CALL lakeflow_cdc_setup();
-- Grant all tables in sales schema, but only specific tables in other schemas
CALL lakeflow_setup_cdc_user('lakeflow_user', '`sales`.*, `inventory`.`products`, `hr`.`employees`');
シナリオ4: Amazon RDS MySQL
-- Create user (binary logging configured via Parameter Groups)
CREATE USER 'lakeflow_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'secure_password';
-- Grant permissions (skip lakeflow_cdc_setup for managed services)
CALL lakeflow_setup_cdc_user('lakeflow_user', '`mydb`.*');
Amazon RDS の場合は、 binlog_format = ROWとbinlog_row_image = FULLのカスタム グループを使用してバイナリ ロギングを構成します。
MySQL 5.x の永続性
MySQL 5.x でlakeflow_cdc_setup()を使用する場合、構成は再起動後も保持されません。永続的にするには:
/etc/my.cnfルート権限で開きます:
sudo vi /etc/my.cnf
[mysqld]セクションの下に追加:
[mysqld]
binlog_format=ROW
binlog_row_image=FULL
- MySQLを再起動します。
sudo systemctl restart mysqld
トラブルシューティング
ユーザーが存在しません
エラー: User 'xxx'@'%' does NOT exist
解決策 : セットアップ手順を実行する前にユーザーを作成します。 ステップ2を参照してください。
認証プラグインが間違っています
エラー: User exists with wrong plugin type. Expected: caching_sha2_password, Found: mysql_native_password
解決策: 正しい認証プラグインを使用してユーザーを再作成します。
DROP USER 'cdc_user'@'%';
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_password';
スキーマが存在しません
エラー: Catalog 'xxx' does NOT exist
解決策: スキーマを作成するか、テーブル リスト内のスキーマ名を修正します。
テーブルが存在しません
エラー: Table 'xxx.yyy' does NOT exist
解決策: テーブルを作成するか、テーブル リスト内のテーブル名を修正します。
マネージドサービスが検出されました
エラー: Cloud/managed service detected. Use parameter/server group tools for binlog setup.
解決策: lakeflow_cdc_setup()をスキップし、クラウド プロバイダーの管理コンソールからバイナリ ロギングを構成します。