各製品の資料を入手。
詳細はこちら →Azure Data Lake Storage のデータをPowerShell でMySQL にレプリケーションする方法
PowerShell のシンプルなスクリプトで、Azure Data Lake Storage のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。
最終更新日:2023-09-26
この記事で実現できるAzure Data Lake Storage 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for ADLS を使えば、PowerShell からAzure Data Lake Storage のデータ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for ADLS およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でAzure Data Lake Storage への接続を行います。レプリケーションは4つのステップがあります。
Azure Data Lake Storage 接続プロパティの取得・設定方法
Azure Data Lake Storage Gen 2 への接続
Gen 2 Data Lake Storage アカウントに接続するには、以下のプロパティを設定します。
- Account:ストレージアカウントの名前。
- FileSystem:このアカウントに使用されるファイルシステム名。例えば、Azure Blob コンテナの名前。
- Directory(オプション):レプリケートされたファイルが保存される場所へのパス。パスが指定されない場合、ファイルはルートディレクトリに保存されます。
Azure Data Lake Storage Gen 2 への認証
本製品は、次の4つの認証方法をサポートします:アクセスキーの使用、共有アクセス署名の使用、Azure Active Directory OAuth(AzureAD)、Managed Service Identity(AzureMSI)。
アクセスキー
アクセスキーを使用して接続するには、はじめにADLS Gen2 ストレージアカウントで利用可能なアクセスキーを取得する必要があります。Azure ポータルで:
- ADLS Gen2 ストレージアカウントにアクセスします。
- 設定でアクセスキーを選択します。
- 利用可能なアクセスキーの1つの値をAccessKey 接続プロパティにコピーします。
- AuthScheme:AccessKey。
- AccessKey:先にAzure ポータルで取得したアクセスキーの値。
接続の準備ができたら、次のプロパティを設定します。
共有アクセス署名(SAS)
共有アクセス署名を使用して接続するには、はじめにAzure Storage Explorer ツールを使用して署名を生成する必要があります。
接続の準備ができたら、次のプロパティを設定します。
- AuthScheme:SAS。
- SharedAccessSignature:先に生成した共有アクセス署名の値。
AzureAD、AzureMSI での認証方法については、ヘルプドキュメントの「Azure Data Lake Storage Gen 2 への認証」セクションを参照してください。
Azure Data Lake Storage のデータの取得
-
モジュールのインストール:
Install-Module ADLSCmdlets
-
Azure Data Lake Storage への接続:
$adls = Connect-ADLS -Schema $Schema -Account $Account -FileSystem $FileSystem -AccessKey $AccessKey
-
取得ターゲットのリソースの取得:
$data = Select-ADLS -Connection $adls -Table "Resources"
Invoke-ADLS cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-ADLS -Connection $adls -Query 'SELECT * FROM Resources WHERE Type = @Type' -Params @{'@Type'='FILE'}
-
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
Azure Data Lake Storage のデータをMySQL データベースにレプリケーション
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
-
モジュールのインストール:
Install-Module MySQLCmdlets
-
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
-
Azure Data Lake Storage、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Azure Data Lake Storage のリソース(Resources)と同じテーブル名を持っている必要があります。
$data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Resources" -Columns $columns -Values $values }
次回以降のレプリケーションをシンプルに実現
-
一度PowerShell でAzure Data Lake Storage とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-ADLS -Connection $adls -Table "Resources" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Resources" -Columns $columns -Values $values }
-
別のPowerShell モジュールで、Azure Data Lake Storage を別のデータベースに複製する場合、Select-ADLS cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
おわりに
これで、Azure Data Lake Storage のデータをMySQL に複製できました。分析、BI などでAzure Data Lake Storage のデータをMySQL から使うことができるようになります。