MySQL Shell 8.0  /  MySQL Shell ユーティリティ  /  インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティ

このページは機械翻訳したものです。

8.5 インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティ

MySQL Shell インスタンスダンプユーティリティ util.dumpInstance() およびスキーマダンプユーティリティ util.dumpSchemas() は、MySQL Shell 8.0.21 で導入され、オンプレミス MySQL インスタンスから Oracle Cloud Infrastructure Object Storage バケットまたはローカルファイルのセットへのすべてのスキーマまたは選択したスキーマのエクスポートをサポートしています。 MySQL Shell 8.0.22 で導入されたテーブルダンプユーティリティ util.dumpTables() では、スキーマから選択したテーブルまたはビューに対して同じ操作がサポートされます。 エクスポートした項目は、MySQL Shellセクション8.6「ダンプロードユーティリティ」util.loadDump() を使用して、MySQL Database Service DB システム (短縮形は MySQL DB システム) または MySQL Server インスタンスにインポートできます。

MySQL Shell インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティは、Oracle Cloud Infrastructure Object Storage ストリーミング、MySQL Database Service の互換性チェックと変更、複数スレッドによるパラレルダンプ、および mysqldump で提供されていないファイル圧縮を提供します。 ダンプ中に進捗情報が表示されます。 選択したダンプオプションのセットでドライランを実行して、実行されるアクション、ダンプされる項目、および (インスタンスダンプユーティリティおよびスキーマダンプユーティリティの) これらのオプションを使用して実際にユーティリティを実行するときに修正する必要がある MySQL Database Service の互換性の問題に関する情報を表示できます。

ダンプファイルの宛先を選択する場合、MySQL DB システムにインポートするには、ダンプロードユーティリティを実行する MySQL Shell インスタンスが、MySQL DB システムにアクセスできる Oracle Cloud Infrastructure Compute インスタンスにインストールされている必要があります。 インスタンス、スキーマまたはテーブルをオブジェクトストレージバケットにダンプする場合、コンピュートインスタンスからオブジェクトストレージバケットにアクセスできます。 ローカルシステムにダンプファイルを作成する場合、コンピュートインスタンスに選択したオペレーティングシステムに応じて、選択したコピーユーティリティを使用して Oracle Cloud Infrastructure Compute インスタンスにダンプファイルを転送する必要があります。

MySQL Shell インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティによって作成されるダンプは、スキーマ構造を指定する DDL ファイルと、データを含むタブ区切りの .tsv ファイルで構成されます。 エクスポートされたスキーマにエクスポートされたデータを移入することとは別に、エクスポートされたスキーマを設定する場合は、DDL ファイルのみまたはデータファイルのみを生成することもできます。 データ整合性のためにダンプ中にバックアップのためにインスタンスをロックするかどうかを選択できます。 デフォルトでは、ダンプユーティリティはテーブルデータを複数のデータファイルにチャンク化し、ファイルを圧縮します。

MySQL インスタンスのスキーマの大部分を代替方法としてダンプする必要がある場合は、スキーマダンプユーティリティではなくインスタンスダンプユーティリティを使用して、ダンプしないスキーマをリストする excludeSchemas オプションを指定できます。 同様に、スキーマ内のほとんどのテーブルをダンプする必要がある場合は、テーブルダンプユーティリティではなく、excludeTables オプションを指定してスキーマダンプユーティリティを使用できます。 information_schema, mysql, ndbinfo, performance_schema および sys スキーマは、常にインスタンスダンプから除外されます。 mysql.apply_status, mysql.general_log, mysql.schema テーブルおよび mysql.slow_log テーブルのデータは、DDL ステートメントは含まれますが、常にスキーマダンプから除外されます。 ユーザーとそのロール、権限付与、イベント、ルーチンおよびトリガーを含めるか除外するかを選択することもできます。

デフォルトでは、ダンプ出力のすべてのタイムスタンプデータでタイムゾーンが UTC に標準化されるため、異なるタイムゾーンを持つサーバー間でのデータの移動および複数のタイムゾーンを持つデータの処理が容易になります。 必要に応じて、tzUtc: false オプションを使用して元のタイムスタンプを保持できます。

MySQL Shell 8.0.22 から、インスタンスまたはスキーマを Oracle Cloud Infrastructure Object Storage バケットにエクスポートするときに、ダンプ中に各アイテムに対して事前認証済リクエスト URL を生成できます。 MySQL Shell ダンプロードユーティリティ util.loadDump() を実行するユーザーアカウントは、これらを使用して、追加のアクセス権限なしでダンプファイルをロードします。 デフォルトでは、ocimds オプションが true に設定されており、osBucketName オプションを使用してオブジェクトストレージバケット名が指定されている場合、MySQL Shell インスタンスダンプユーティリティおよびスキーマダンプユーティリティはダンプファイルの事前認証済リクエスト URL を生成し、単一のマニフェストファイルにリストします。 ダンプロードユーティリティはマニフェストファイルを参照して URL を取得し、ダンプファイルをロードします。 事前認証済リクエスト URL を生成または非アクティブ化する手順は、ociParManifest オプションの説明を参照してください。

インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティを使用するダンプには、次の要件が適用されます:

  • MySQL 5.7 以上は、ソース MySQL インスタンスとアップグレード先 MySQL インスタンスの両方に必要です。

  • インスタンスまたはスキーマ内のオブジェクト名は、latin1 または utf8 の文字セットである必要があります。

  • データの整合性は、InnoDB ストレージエンジンを使用するテーブルに対してのみ保証されます。

  • ユーティリティの実行に使用されるユーザーアカウントが、関連するすべてのスキーマに対して持っている必要がある最小限の権限セットは、次のとおりです: BACKUP_ADMIN, EVENT, RELOAD, SELECT, SHOW VIEW および TRIGGERconsistent オプションが false に設定されている場合、BACKUP_ADMIN および RELOAD 権限は必要ありません。 consistent オプションが true(デフォルト) に設定されている場合、ダンプされたすべてのテーブルに対する LOCK TABLES 権限は、RELOAD 権限のかわりに使用できます (後者が使用できない場合)。

  • Oracle Cloud Infrastructure Object Storage バケットへのファイルの転送に使用されるアップロード方法のファイルサイズ制限は、1.2 TiB です。 MySQL Shell 8.0.21 では、マルチパートサイズ設定は、複数のファイルパートの数値制限が最初に適用され、約 640 GB の制限が作成されることを意味します。 MySQL Shell 8.0.22 から、マルチパートサイズの設定が変更され、フルファイルサイズ制限が可能になりました。

  • ユーティリティは、安全でないデータ型のカラムをテキスト形式 (BLOB など) で Base64 に変換します。 したがって、これらのカラムのサイズは、ターゲットの MySQL インスタンスで構成されている max_allowed_packet システム変数の値の約 0.74 倍 (バイト単位) を超えないようにする必要があります。

  • テーブルダンプユーティリティの場合、エクスポートされたビューおよびトリガーは、他のビューまたはテーブルの参照に修飾名を使用しないでください。

  • MySQL DB システムにインポートする場合は、MySQL Database Service との互換性を確保するために、ocimds オプションを true に設定します。

  • MySQL Database Service との互換性のために、すべてのテーブルで InnoDB ストレージエンジンを使用する必要があります。 ocimds オプションはダンプで見つかった例外をチェックし、compatibility オプションはダンプファイルを変更してほかのストレージエンジンを InnoDB に置き換えます。

  • インスタンスダンプユーティリティおよびスキーマダンプユーティリティでは、MySQL Database Service との互換性のために、インスタンスまたはスキーマ内のすべてのテーブルが MySQL データディレクトリにあり、デフォルトのスキーマ暗号化を使用する必要があります。 ocimds オプションは、これらの要件を適用するようにダンプファイルを変更します。

  • MySQL Database Service との互換性のために、テーブルスペースや権限などの項目には、他の多くのセキュリティ関連の制限および要件が適用されます。 ocimds オプションはダンプ中に見つかった例外をチェックし、compatibility オプションはダンプファイルを自動的に変更して互換性の問題の一部を解決します。 一部の変更は手動で行う必要がある (または望ましい) 場合があります。 詳細は、compatibility オプションの説明を参照してください。

インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティは、MySQL Shell グローバルセッションを使用して、エクスポートを実行するターゲット MySQL サーバーの接続詳細を取得します。 いずれかのユーティリティを実行する前に、( X プロトコル 接続または クラシック MySQL プロトコル 接続を持つことができる) グローバルセッションをオープンする必要があります。 ユーティリティはスレッドごとに独自のセッションを開き、接続圧縮や SSL オプションなどのオプションをグローバルセッションからコピーし、グローバルセッションをこれ以上使用しません。

MySQL Shell API では、インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティはutilグローバルオブジェクトの関数であり、次のシグネチャを持ちます:

util.dumpInstance(outputUrl[, options]) 
util.dumpSchemas(schemas, outputUrl[, options])
util.dumpTables(schema, tables, outputUrl[, options])

スキーマダンプユーティリティの場合、schemas は、MySQL インスタンスからダンプするスキーマのリストを指定します。

テーブルダンプユーティリティの場合、schema はダンプする項目を含むスキーマを指定し、tables はダンプするテーブルまたはビューを指定する文字列の配列です。 MySQL Shell 8.0.23 からは、ダンプロードユーティリティの schema オプションを使用して別のターゲットスキーマにロードできますが、テーブルダンプにはターゲットの MySQL インスタンスで指定されたスキーマを設定するために必要な情報が含まれます。 MySQL Shell 8.0.22 にはスキーマ情報が含まれていないため、このユーティリティで生成されたダンプファイルを既存のターゲットスキーマにロードする必要があります。

ローカルファイルシステムにダンプする場合、outputUrl はダンプファイルを配置するローカルディレクトリへのパスを指定する文字列です。 絶対パスまたは現在の作業ディレクトリからの相対パスを指定できます。 ローカルディレクトリパスの前に file://スキーマを付けることができます。 この例では、接続された MySQL インスタンスがローカルディレクトリにダンプされますが、MySQL Database Service との互換性のためにダンプファイルにいくつかの変更が加えられています。 ユーザーは最初に予行演習を実行してスキーマを検査し、互換性の問題を表示してから、適切な互換性オプションを適用してダンプを実行し、問題を削除します:

shell-js> util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
Checking for compatibility with MySQL Database Service 8.0.21
...
Compatibility issues with MySQL Database Service 8.0.21 were found. Please use the 
'compatibility' option to apply compatibility adaptations to the dumped DDL.
Util.dumpInstance: Compatibility issues were found (RuntimeError)
shell-js> util.dumpInstance("C:/Users/hanna/worlddump", {
        > ocimds: true, compatibility: ["strip_definers", "strip_restricted_grants"]})

エクスポートを実行する前に、ターゲットディレクトリを空にする必要があります。 ディレクトリがまだ親ディレクトリに存在しない場合は、ユーティリティによって作成されます。 ローカルディレクトリへのエクスポートの場合、ダンプ中に作成されたディレクトリはアクセス権限 rwxr-x--- で作成され、ファイルはアクセス権限 rw-r----- (これらがサポートされているオペレーティングシステム上) で作成されます。 ファイルおよびディレクトリの所有者は、MySQL Shell を実行しているユーザーアカウントです。

テーブルダンプユーティリティを使用すると、スキーマ間でテーブルを転送する場合など、スキーマから個々のテーブルを選択できます。 MySQL ShellJavaScript モードのこの例では、hr スキーマのテーブル employees および salaries がローカルディレクトリ emp にエクスポートされ、ユーティリティによって現在の作業ディレクトリに作成されます:

shell-js> util.dumpTables("hr", [ "employees", "salaries" ], "emp")

Oracle Cloud Infrastructure Object Storage バケットにダンプする場合、outputUrl は、ディレクトリ構造をシミュレートするためにバケット内のダンプファイルの接頭辞として使用されるパスです。 osBucketName オプションを使用してオブジェクトストレージバケットの名前を指定し、osNamespace オプションを使用してバケットのネームスペースを識別します。 MySQL ShellPython モードのこの例では、ユーザーは world スキーマを接続された MySQL インスタンスから Object Storage バケットにダンプしますが、前の例と同じ互換性の変更があります:

shell-py> util.dump_schemas(["world"], "worlddump", {
        > "osBucketName": "hanna-bucket", "osNamespace": "idx28w1ckztq", 
        > "ocimds": "true", "compatibility": ["strip_definers", "strip_restricted_grants"]})

オブジェクトストレージバケットでは、ダンプファイルはすべて接頭辞 worlddump とともに表示されます。次に例を示します:

worlddump/@.done.json	
worlddump/@.json	
worlddump/@.post.sql
worlddump/@.sql
worlddump/world.json	
worlddump/world.sql	
worlddump/world@city.json	
worlddump/world@city.sql	
worlddump/world@city@@0.tsv.zst
worlddump/world@city@@0.tsv.zst.idx
...

オブジェクトストレージバケットのネームスペースは、Oracle Cloud Infrastructure コンソールのバケット詳細ページの「バケット情報」タブに表示されるか、Oracle Cloud Infrastructure コマンドラインインタフェースを使用して取得できます。 オブジェクトストレージバケットへの接続は、デフォルトの Oracle Cloud Infrastructure CLI 構成ファイルのデフォルトプロファイル、または ociConfigFile および ociProfile オプションを使用して指定する代替詳細を使用して確立されます。 CLI 構成ファイルを設定する手順については、「SDK および CLI 構成ファイル」を参照してください

options はオプションのディクショナリで、空の場合は省略できます。 特に指定がないかぎり、インスタンスダンプユーティリティ、スキーマダンプユーティリティおよびテーブルダンプユーティリティには次のオプションを使用できます:

dryRun: [ true | false ]

指定されたオプションセットでダンプされる内容、および MySQL Database Service の互換性チェックの結果 (ocimds オプションが指定されている場合) に関する情報を表示しますが、ダンプは続行しません。 このオプションを設定すると、ダンプを開始する前に互換性の問題をすべてリストできます。 デフォルトは false です。

osBucketName: "string"

ダンプが書き込まれる Oracle Cloud Infrastructure Object Storage バケットの名前。 デフォルトでは、~/.oci/config にある Oracle Cloud Infrastructure CLI 構成ファイルの[DEFAULT]プロファイルを使用して、バケットへの接続が確立されます。 ociConfigFile および ociProfile オプションを使用して、接続に使用される代替プロファイルを置換できます。 CLI 構成ファイルの設定手順については、「SDK および CLI 構成ファイル」を参照してください。

osNamespace: "string"

osBucketName によって指定されたオブジェクトストレージバケットが配置される Oracle Cloud Infrastructure ネームスペース。 オブジェクトストレージバケットのネームスペースは、Oracle Cloud Infrastructure コンソールのバケット詳細ページの「バケット情報」タブに表示されるか、Oracle Cloud Infrastructure コマンドラインインタフェースを使用して取得できます。

ociConfigFile: "string"

デフォルトの場所の ~/.oci/config ではなく、接続に使用するプロファイルを含む Oracle Cloud Infrastructure CLI 構成ファイル。

ociProfile: "string"

接続に使用される Oracle Cloud Infrastructure CLI 構成ファイル内の[DEFAULT]プロファイルではなく、接続に使用する Oracle Cloud Infrastructure プロファイルのプロファイル名。

threads: int

MySQL インスタンスからデータのチャンクをダンプするために使用するパラレルスレッドの数。 各スレッドは、MySQL インスタンスへの独自の接続を持ちます。 デフォルトは 4 です。

maxRate: "string"

ダンプ中のデータ読取りスループットのスレッド当たりの最大バイト数/秒。 単位接尾辞 k (キロバイト)、M (メガバイト)、および G (ギガバイト) を使用できます (たとえば、100M を設定すると、スループットがスレッド当たり 100 メガバイト/秒に制限されます)。 0 (デフォルト値) を設定するか、オプションを空の文字列に設定すると、制限は設定されません。

showProgress: [ true | false ]

ダンプの進行状況情報を表示 (true) または非表示 (false) にします。 MySQL Shell が対話型モードの場合など、stdout が端末 (tty) の場合、デフォルトは true です。それ以外の場合は false です。 進捗情報には、ダンプされる行の推定合計数、これまでにダンプされた行数、完了率およびスループット (行およびバイト/秒) が含まれます。

compression: "string"

ダンプのデータファイルを書き込むときに使用する圧縮タイプ。 デフォルトでは、zstd 圧縮 (zstd) が使用されます。 または、gzip 圧縮 (gzip) を使用するか、圧縮なし (none) を使用します。

excludeSchemas: array of strings

(インスタンスダンプユーティリティのみ)ダンプから名前付きスキーマを除外します。 information_schema, mysql, ndbinfo, performance_schema および sys スキーマは、常にインスタンスダンプから除外されることに注意してください。 名前付きスキーマが存在しないか除外されている場合、ユーティリティはその項目を無視します。

excludeTables: array of strings

(インスタンスダンプユーティリティおよびスキーマダンプユーティリティのみ)指定されたテーブルをダンプから除外します。 テーブル名は、有効なスキーマ名で修飾し、必要に応じてバックティック文字で引用符で囲む必要があります。 DDL ステートメントは含まれますが、mysql.apply_status, mysql.general_log, mysql.schema および mysql.slow_log tables のデータは常にスキーマダンプから除外されることに注意してください。 excludeTables オプションで指定されたテーブルには、ダンプ内に DDL ファイルまたはデータファイルがありません。 指定したテーブルがスキーマに存在しない場合、またはスキーマがダンプに含まれていない場合、ユーティリティはその項目を無視します。

all: [ true | false ]

(テーブルダンプユーティリティのみ) このオプションを true に設定すると、指定したスキーマのすべてのビューおよびテーブルがダンプに含まれます。 このオプションを使用する場合は、tables パラメータを空の配列に設定します。 デフォルトは false です。

users: [ true | false ]

(インスタンスダンプユーティリティのみ) Include (true) または exclude (false) ユーザーとそのロールおよび権限をダンプに含めます。 デフォルトは true であるため、ユーザーはデフォルトで含まれます。 スキーマダンプユーティリティおよびテーブルダンプユーティリティでは、ダンプにユーザー、ロールおよび権限は含まれません。 MySQL Shell 8.0.22 から、excludeUsers または includeUsers オプションを使用して、ダンプファイルに除外または含める個々のユーザーアカウントを指定できます。 これらのオプションを MySQL Shell ダンプロードユーティリティ util.loadDump() とともに使用して、ターゲットの MySQL インスタンスの要件に応じて、インポート時に個々のユーザーアカウントを除外または含めることもできます。

注記

MySQL Shell 8.0.21 では、root ユーザーアカウントまたは別の制限付きユーザーアカウント名がダンプファイルに存在する場合、ユーザーを MySQL DB システムにインポートしようとするとインポートが失敗するため、そのリリースではユーザーの MySQL DB システムへのインポートはサポートされていません。

excludeUsers: array of strings

(インスタンスダンプユーティリティのみ)指定されたユーザーアカウントをダンプファイルから除外します。 このオプションは MySQL Shell 8.0.22 から使用でき、これを使用して、MySQL DB システムへのインポートが許可されていないユーザーアカウント、またはターゲットの MySQL インスタンスにすでに存在するか不要なユーザーアカウントを除外できます。 各ユーザーアカウント文字列は、ユーザー名とホスト名で定義されたアカウントの場合は"'user_name'@'host_name'"の形式で、ユーザー名のみで定義されたアカウントの場合は"'user_name'" ("'user_name'@'%'"と同等) で指定します。 指定されたユーザーアカウントが存在しない場合、ユーティリティはアイテムを無視します。

includeUsers: array of strings

(インスタンスダンプユーティリティのみ)ダンプファイルに指定されたユーザーアカウントのみを含めます。 excludeUsers オプションの場合と同様に、各ユーザーアカウント文字列を指定します。 このオプションは MySQL Shell 8.0.22 から使用でき、ダンプに必要なユーザーアカウントが少ない場合は、excludeUsers のかわりに使用できます。 両方のオプションを指定することもできます。この場合、includeUsers 文字列と excludeUsers 文字列の両方で一致するユーザーアカウントは除外されます。

events: [ true | false ]

ダンプ内の各スキーマに対する(インスタンスダンプユーティリティおよびスキーマダンプユーティリティのみ) include (true) または exclude (false) イベント。 デフォルトは true です。

routines: [ true | false ]

ダンプ内の各スキーマに対する(インスタンスダンプユーティリティおよびスキーマダンプユーティリティのみ) include (true) または exclude (false) 関数およびストアドプロシージャ。 デフォルトは true です。 routinestrue に設定されている場合でも、ユーザー定義関数は含まれないことに注意してください。

triggers: [ true | false ]

ダンプ内の各テーブルに (true) トリガーを含めるか、(false) トリガーを除外します。 デフォルトは true です。

defaultCharacterSet: "string"

ダンプのために MySQL Shell によってサーバーに開かれるセッション接続中に使用される文字セット。 デフォルトは utf8mb4 です。 システム変数 character_set_clientcharacter_set_connection および character_set_results のセッション値は、接続ごとにこの値に設定されます。 文字セットは、character_set_client システム変数で許可され、MySQL インスタンスでサポートされている必要があります。

tzUtc: [ true | false ]

ダンプの先頭にステートメントを含めて、タイムゾーンを UTC に設定します。 ダンプ出力のすべてのタイムスタンプデータは、このタイムゾーンに変換されます。 デフォルトは true であるため、タイムスタンプデータはデフォルトで変換されます。 タイムゾーンを UTC に設定すると、異なるタイムゾーンを持つサーバー間でのデータの移動や、複数のタイムゾーンを持つ一連のデータの処理が容易になります。 必要に応じて元のタイムスタンプを保持するには、このオプションを false に設定します。

consistent: [ true | false ]

ダンプ中にインスタンスをバックアップ用にロックして、一貫性のあるデータダンプを有効 (true) または無効 (false) にします。 デフォルトは true です。 true が設定されている場合、ユーティリティは FLUSH TABLES WITH READ LOCK ステートメントを使用してグローバル読取りロックを設定します。 各スレッドのトランザクションは、SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ および START TRANSACTION WITH CONSISTENT SNAPSHOT ステートメントを使用して開始されます。 すべてのスレッドがトランザクションを開始すると、インスタンスはバックアップ用にロックされ、グローバル読取りロックが解放されます。

ddlOnly: [ true | false ]

このオプションを true に設定すると、ダンプされた項目の DDL ファイルのみがダンプに含まれ、データはダンプされません。 デフォルトは false です。

dataOnly: [ true | false ]

このオプションを true に設定すると、ダンプされた項目のデータファイルのみがダンプに含まれ、DDL ファイルは含まれません。 デフォルトは false です。

chunking: [ true | false ]

各テーブルのデータを複数のファイルに分割するテーブルデータのチャンク化を有効 (true) または無効 (false) にします。 デフォルトは true であるため、チャンク化はデフォルトで有効になっています。 bytesPerChunk を使用してチャンクサイズを指定します。 テーブルデータを別々のファイルにチャンク化するには、テーブルに対して主キーまたは一意インデックスを定義する必要があります。このテーブルは、データを順序付けおよびチャンク化するインデックスカラムを選択するためにユーティリティで使用されます。 テーブルにこれらのいずれも含まれていない場合は、警告が表示され、テーブルデータが単一のファイルに書き込まれます。 チャンクオプションを false に設定した場合、チャンクは実行されず、ユーティリティによってテーブルごとに 1 つのデータファイルが作成されます。

bytesPerChunk: "string"

チャンクが有効な場合に各データファイルに書き込まれるおおよそのバイト数を設定します。 単位接尾辞 k(キロバイト)、M(メガバイト)、G(ギガバイト) を使用できます。 デフォルトは MySQL Shell 8.0.22 ( MySQL Shell 8.0.21 では 32 MB) からの 64 MB (64M) で、最小は 128 KB (128k) です。 このオプションを指定すると、chunking は暗黙的に true に設定されます。 このユーティリティは、圧縮が適用される前に、各テーブルのデータをこの量のデータを含むファイルにチャンク化することを目的としています。 チャンクサイズは平均で、テーブル統計および実行計画の見積りに基づいて計算されます。

ocimds: [ true | false ]

このオプションを true に設定すると、MySQL Database Service との互換性のチェックおよび変更が可能になります。 デフォルトは false です。 MySQL Shell 8.0.23 からは、このオプションはすべてのユーティリティで使用でき、そのリリースより前は、インスタンスダンプユーティリティおよびスキーマダンプユーティリティでのみ使用できます。

このオプションが true, DATA DICTIONARY, INDEX DICTIONARY に設定され、CREATE TABLE ステートメントの ENCRYPTION オプションが DDL ファイルでコメントアウトされている場合、すべてのテーブルが MySQL データディレクトリに配置され、デフォルトのスキーマ暗号化が使用されるようにします。 チェックは、InnoDB 以外の CREATE TABLE ステートメント内のストレージエンジン、ユーザーまたはロールへの不適切な権限の付与、およびその他の互換性の問題に対して実行されます。 非準拠の SQL ステートメントが見つかった場合は、例外が発生し、ダンプが停止されます。 ダンププロセスが開始される前に、dryRun オプションを使用してダンプ内の項目に関するすべての問題をリストします。 compatibility オプションを使用して、ダンプ出力の問題を自動的に修正します。

MySQL Shell 8.0.22 から、このオプションが true に設定され、osBucketName オプションを使用してオブジェクトストレージバケット名が指定されている場合、ociParManifest オプションもデフォルトで true に設定されます。つまり、ダンプ内のすべての項目に対して事前認証済リクエストが生成され、これらのリクエスト URL を使用してのみダンプファイルにアクセスできます。

compatibility: array of strings

ダンプ出力のすべてのテーブルに MySQL Database Service との互換性のために指定された要件を適用し、ダンプファイルを necessary.From MySQL Shell 8.0.23 として変更します。このオプションはすべてのユーティリティで使用でき、そのリリースより前は、インスタンスダンプユーティリティおよびスキーマダンプユーティリティでのみ使用できます。

次の変更は、カンマ区切りリストとして指定できます:

force_innodb

CREATE TABLE ステートメントを使用していないすべてのテーブルに InnoDB ストレージエンジンを使用するように変更します。

skip_invalid_accounts

MySQL Database Service でサポートされていない外部認証プラグインで作成されたユーザーアカウントを削除します。

strip_definers

ビュー、ルーチン、イベントおよびトリガーから DEFINER 句を削除して、これらのオブジェクトがデフォルト定義者 (スキーマを起動するユーザー) で作成されるようにし、ビューおよびルーチンの SQL SECURITY 句を変更して、DEFINER のかわりに INVOKER を指定します。 MySQL Database Service では、スキーマをロードするユーザー以外の定義者を使用してこれらのオブジェクトを作成するには、特別な権限が必要です。 セキュリティモデルで、ビューおよびルーチンにアカウントクエリーまたはコールする権限よりも多くの権限が必要な場合は、ロードする前にスキーマを手動で変更する必要があります。

strip_restricted_grants

MySQL Database Service によって制限されている特定の権限を GRANT ステートメントから削除して、ユーザーおよびそのロールにこれらの権限を付与できないようにします (これにより、ユーザーの作成が失敗します)。 MySQL Shell 8.0.22 からは、Oracle Cloud Infrastructure Compute インスタンスの管理ユーザーアカウント自体に関連する権限がない場合、このオプションによってシステムスキーマ (mysql および sys) の REVOKE ステートメントも削除されるため、削除できません。

strip_role_admin

GRANT ステートメントから ROLE_ADMIN 権限を削除します。 この権限は、MySQL Database Service によって制限できます。

strip_tablespaces

すべてのテーブルがデフォルトのテーブルスペースに作成されるように、GRANT ステートメントから TABLESPACE 句を削除します。 MySQL Database Service には、テーブルスペースに対するいくつかの制限があります。

ociParManifest: [ true | false ]

このオプションを true に設定すると、ダンプ内のすべてのアイテムに対する読取りアクセスの事前認証済リクエスト (オブジェクト読取り PAR) と、すべての事前認証済リクエスト URL をリストするマニフェストファイルが生成されます。 事前認証済リクエストは、デフォルトで 1 週間後に期限切れになります。これは、ociParExpireTime オプションを使用して変更できます。

このオプションは MySQL Shell 8.0.22 から使用でき、(osBucketName オプションを設定して) オブジェクトストレージバケットにエクスポートする場合にのみ使用できます。 MySQL Shell 8.0.23 からは、このオプションはすべてのユーティリティで使用でき、MySQL Shell 8.0.22 では、インスタンスダンプユーティリティおよびスキーマダンプユーティリティでのみ使用できます。

ocimds オプションが true に設定され、osBucketName オプションを使用してオブジェクトストレージバケット名が指定されている場合、ociParManifest はデフォルトで true に設定され、それ以外の場合はデフォルトで false に設定されます。

オブジェクトストレージバケットへの接続に使用される Oracle Cloud Infrastructure プロファイルで指定されたユーザー (DEFAULT ユーザーまたは ociProfile オプションで指定された別のユーザー) は、事前認証済リクエストの作成者です。 このユーザーには、「事前認証済リクエストの使用」で説明されているように、バケット内のオブジェクトと対話するための PAR_MANAGE 権限および適切な権限が必要です。 オブジェクトの事前認証済リクエスト URL の作成に問題がある場合は、関連付けられたファイルが削除され、ダンプが停止されます。

生成されたダンプファイルをロードできるようにするには、「事前認証済リクエストの使用」の手順に従って、マニフェストファイルオブジェクト (@.manifest.json) の事前認証済読取りリクエストを作成します。 ダンプが完了する前にダンプのロードを開始する場合は、ダンプの進行中にこれを実行できます。 必要な権限を持つユーザーアカウントを使用して、この事前認証済読取りリクエストを作成できます。 その後、事前認証済リクエスト URL をダンプロードユーティリティで使用して、マニフェストファイルを介してダンプファイルにアクセスする必要があります。 URL は作成時にのみ表示されるため、永続記憶域にコピーします。

重要

このアクセス方法を使用する前に、バケットまたはオブジェクトに対する事前認証済アクセスのビジネス要件およびセキュリティの影響を評価します。

事前認証済リクエスト URL は、リクエストで識別されたターゲットへの URL アクセス権を持つすべてのユーザーに付与します。 マニフェストファイル用に作成する事前認証済 URL、およびマニフェストファイル内のエクスポートされたアイテム用の事前認証済 URL の配布を慎重に管理します。

ociParExpireTime: "string"

ociParManifest オプションが true に設定されている場合に生成される事前認証済リクエスト URL の有効期限。 デフォルトは、UTC 形式の現在の時間に 1 週間を加えたものです。

このオプションは、MySQL Shell 8.0.22 から使用できます。 MySQL Shell 8.0.23 からは、このオプションはすべてのユーティリティで使用でき、MySQL Shell 8.0.22 では、インスタンスダンプユーティリティおよびスキーマダンプユーティリティでのみ使用できます。

有効期限は、事前認証済リクエストの作成時に Oracle Cloud Infrastructure で必要とされる RFC 3339 タイムスタンプとして書式設定する必要があります。 書式は、YYYY-MM-DDTHH-MM-SS の直後に文字 Z (UTC 時間の場合) または[+|-]hh:mm で表されるローカル時間の UTC オフセット (2020-10-01T00:09:51.000+02:00 など) が続きます。MySQL Shell では有効期限は検証されませんが、フォーマットエラーにより、ダンプ内の最初のファイルに対する事前認証済リクエストの作成が失敗し、ダンプが停止されます。