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

ユーティリティ オブジェクト スクリプトを使用して MySQL の取り込みを準備する

備考

プレビュー

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

備考

このページには、Databricks では使用されない用語である「 スレーブ 」への参照が含まれています。サードパーティ ソフトウェアから用語が削除されると、このページからも削除されます。

LakeFlow Connectを使用してDatabricksに取り込むためのMySQLデータベース セットアップ タスクを完了します。

要件

  • MySQL バージョン : 5.7.44 または 8.0+
  • 実行ユーザー : ルートまたは完全な管理者権限 (SUPER、ALL PRIVILEGES) を持っている必要があります
  • CDC ユーザー : セットアップ手順を実行する前に、適切な認証プラグインがすでに存在している必要があります
  • ターゲットスキーマ/テーブル : 権限を付与する前に既に存在している必要があります

ステップ 1: ユーティリティ オブジェクトをインストールする

このステップでは、 MySQL CDCセットアップに必要なユーティリティ ストアド プロシージャをインストールします。

  1. スクリプトをダウンロード: mysql_setup.sql
  2. MySQL Workbench、DBeaver、またはお好みの SQL クライアントでスクリプトを開きます。
  3. MySQL インスタンスに root または管理者ユーザーとして接続します。
  4. 希望するスキーマに接続されていることを確認してください。
  5. スクリプトを実行します。
  6. インストールを確認します。
SQL
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の場合:

SQL
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';

MySQL 5.x の場合:

SQL
CREATE USER 'cdc_user'@'%' IDENTIFIED WITH sha256_password BY 'your_secure_password';
注記

認証プラグインは MySQL のバージョンと一致する必要があります。間違ったプラグインを使用すると、セットアップ手順が失敗します。

ステップ 3: バイナリログを有効にする (スタンドアロンMySQLのみ)

このステップは、 CDC操作に必要なバイナリ ログ設定を構成します。 詳細については、以下の手順リファレンスのlakeflow_setup_cdc_userを参照してください。

SQL
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を参照してください。

SQL
-- Grant permissions on specific tables
CALL lakeflow_setup_cdc_user('cdc_user', '`mydb`.`orders`, `mydb`.`customers`');

代替オプション:

  • 特定のスキーマ内のすべてのテーブル: ' mydb1 .*, mydb2.*'
  • 混合(スキーマと特定のテーブル)の場合: ' mydb1 .*, mydb2 .注文'
  • レプリケーション権限のみ(テーブルアクセスなし)の場合: 'NULL'

ステップ 5: セットアップを確認する

次のクエリを実行して、CDC ユーザーに正しい権限があることを確認します。

SQL
-- 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 操作に必要な権限を付与します。

構文:

SQL
CALL lakeflow_setup_cdc_user(
@User = 'username',
@Tables = 'table_list'
);

パラメーター:

パラメーター

Type

説明

@User

VARCHAR(255)

CDC ユーザー名 (既に存在している必要があります)

@Tables

MEDIUMTEXT

テーブル/スキーマのカンマ区切りリスト

表リスト形式:

フォーマット

説明

特定のテーブル

`schema`.`table1`, `schema`.`table2`

特定のテーブルに対するSELECT権限を付与する

スキーマ内のすべてのテーブル

`schema`.*

スキーマ内のすべてのテーブルに対してSELECT権限を付与します

混合

`schema1`.*, `schema2`.`table1`

スキーマと特定のテーブルの組み合わせ

レプリケーションのみ

'NULL'

レプリケーション権限のみ付与し、テーブルアクセスは付与しません

権限が付与されました:

権限

スコープ

目的

REPLICATION SLAVE

グローバル ( *.* )

バイナリログの読み取りに必要

REPLICATION CLIENT

グローバル ( *.* )

必須 SHOW MASTER STATUS

SELECT (plugin, user)

mysql.user

認証プラグイン情報を読み取るために必要です

SELECT

指定されたテーブル

CDCデータの読み取りに必要

検証チェック:

この手順では、権限を付与する前に次の検証を実行します。

  1. MySQLのバージョンは5.xまたは8.xです
  2. ユーザーは存在する host = '%'
  3. ユーザーはMySQLバージョン用の正しい認証プラグインを持っています
  4. 指定されたすべてのスキーマが存在する
  5. 指定されたすべてのテーブルが存在する(ワイルドカード以外のエントリの場合)

レイクフローCDCセットアップ

CDC 操作に必要な MySQL バイナリ ログ設定を構成します。

構文:

SQL
CALL lakeflow_cdc_setup();

疑問: なし

適用された構成:

設定

Value

目的

binlog_format

ROW

バイナリログ内のすべての列の変更をキャプチャします

binlog_row_image

FULL

前後の画像の完全なログ

MySQLバージョンによる動作:

バージョン

挙動

MySQL 8.x

SET PERSISTを使用します (再起動しても存続します)

MySQL 5.x

SET GLOBALを使用します (手動での永続化が必要です)

一般的なシナリオ

シナリオ1: 特定のテーブルのみ

SQL
-- 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: 特定のスキーマ内のすべてのテーブル

SQL
-- 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: ハイブリッド アプローチ (スキーマ + 特定のテーブル)

SQL
-- 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

SQL
-- 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 = ROWbinlog_row_image = FULLのカスタム グループを使用してバイナリ ロギングを構成します。

MySQL 5.x の永続性

MySQL 5.x でlakeflow_cdc_setup()を使用する場合、構成は再起動後も保持されません。永続的にするには:

  1. /etc/my.cnfルート権限で開きます:
Bash
sudo vi /etc/my.cnf
  1. [mysqld]セクションの下に追加:
ini
[mysqld]
binlog_format=ROW
binlog_row_image=FULL
  1. MySQLを再起動します。
Bash
sudo systemctl restart mysqld

トラブルシューティング

ユーザーが存在しません

エラー: User 'xxx'@'%' does NOT exist

解決策 : セットアップ手順を実行する前にユーザーを作成します。 ステップ2を参照してください。

認証プラグインが間違っています

エラー: User exists with wrong plugin type. Expected: caching_sha2_password, Found: mysql_native_password

解決策: 正しい認証プラグインを使用してユーザーを再作成します。

SQL
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()をスキップし、クラウド プロバイダーの管理コンソールからバイナリ ロギングを構成します。

その他のリソース