データベースのインポートおよびエクスポート

この項では、MySQLサーバーからデータをエクスポートし、MySQL DBシステムにインポートする方法について説明します。

次のメソッドを使用できます。
  • MySQLシェル: (推奨) MySQLシェルのダンプ/ロード・ユーティリティは、MySQL Database Serviceで使用するために専用に構築されています。すべてのタイプのエクスポートおよびインポートに役立ちます。Object Storageとの間のエクスポートおよびインポートをサポートします。
    MySQLのメジャー・バージョンごとのサポートされる最小ソース・バージョンは次のとおりです。
    • MySQL 8.0.11: MySQLシェルで完全にサポートされています。
    • MySQL 5.7.9: MySQLシェルで完全にサポートされています。
    • MySQL 5.6.10: MySQL Shell 8.0.26以上で完全にサポートされます。MySQL Shell 8.0.22では、インスタンス、スキーマおよび表をMySQL 5.6.10以上のインスタンスからダンプできますが、ユーザー・アカウントをダンプすることはできません。ユーザーアカウントをダンプするには、MySQL Shell 8.0.26以上を使用する必要があります。

MySQLシェル

この項では、MySQLシェルを使用したデータのインポートとエクスポートについて説明します。

MySQLシェルには、次のユーティリティが用意されています。
  • dumpInstance():すべての互換性のあるスキーマをObject Storageバケットまたはローカル・ファイルにエクスポートするMySQLインスタンス・エクスポート・ユーティリティ。デフォルトでは、このユーティリティはユーザー、イベント、ルーチンおよびトリガーをエクスポートします。
  • dumpSchemas():選択したスキーマをObject Storageバケットまたはローカル・ファイルにエクスポートするスキーマ・エクスポート・ユーティリティ。詳細は、「MySQLシェル・インスタンスおよびスキーマ・ダンプ・ユーティリティ」を参照してください
  • loadDump():スキーマをDBシステムにインポートするインポート・ユーティリティ。詳細は、MySQL Shell Dump Loading Utilityを参照してください。

    スキーマをMySQL DBシステムにインポートするには、ターゲットMySQL DBシステムにアクセスするように構成されたコンピュート・インスタンスにMySQL Shellをインストールする必要があります。詳細は、DBシステムへの接続を参照してください。

ノート

常に最新バージョンのMySQLシェルを使用することを強くお薦めします。

ダンプ・ファイルは、スキーマ構造およびデータを含むタブ区切り値(.trv)ファイルを指定するDDLファイルとしてエクスポートされます。.tsvファイルはデフォルトでzstdを使用して圧縮されますが、gzipもオプションとして使用できます。圧縮を選択しないこともできますが、Object Storageにアップロードする場合は、デフォルトを使用することをお薦めします。

パフォーマンスをさらに向上させるために、大規模な表はデフォルトでチャンク化されます。デフォルトのチャンク・サイズは32MB.です。チャンク化は無効にできますが、大規模データベースではお薦めしません。インポート時に、パラレル・スレッドによってチャンクをインポートできるため、インポートのパフォーマンスが大幅に向上します。

オンプレミスMySQLとMySQL Database Serviceの互換性

MySQL Database Serviceには、MySQLのオンプレミス・インスタンスに存在しないセキュリティ関連の制限がいくつかあります。既存のデータベースをサービスに簡単にロードできるように、MySQLシェルのダンプ・コマンドで潜在的な問題を検出し、場合によっては、準拠するようにスキーマ定義を自動的に調整できます。

ocimdsオプションをtrueに設定すると、これらの問題のスキーマに対して互換性チェックが実行され、ダンプが見つかった場合はそれが中止されます。loadDumpコマンドは、ocimdsオプションを有効にして作成されたダンプのインポートのみを許可します。

ocimdsオプションで見つかった問題の中には、MySQL Database Serviceにロードする前にデータベース・スキーマを手動で変更する必要があるものがあります。ただし、互換性オプションを使用すると、ダンプされたスキーマを自動的に変更して、これらの互換性の問題の一部を解決できます。カンマで区切られた次の1つ以上のオプションをcompatibilityに渡すことができます。

  • force_innodb: MySQL Database Serviceは、InnoDBストレージエンジンのみをサポートします。このオプションは、互換性のないストレージエンジンを使用するCREATE TABLEステートメントのENGINE=句を変更し、それらをInnoDBに置き換えます。
  • strip_definers:ビュー、ルーチン、イベントおよびトリガーから"DEFINER=account"句を削除します。MySQL Database Serviceには、スキーマをロードするユーザー以外の定義者を使用してこれらのオブジェクトを作成するための特別な権限が必要です。DEFINER句を削除すると、これらのオブジェクトはそのデフォルトの定義者で作成されます。ビューおよびルーチンのSQL SECURITY句がDEFINERからINVOKERに変更されました。これにより、これらを問い合せたり呼び出したりするアカウントのアクセス権が、それらを作成したユーザーではなく適用されるようになります。データベース・セキュリティ・モデルでビューおよびルーチンの実行者より多くの権限が必要な場合は、スキーマをロードする前に手動で変更する必要があります。詳細は、DEFINERおよびSQLセキュリティを参照してください。
  • strip_restricted_grants:特定の権限はMySQL Database Serviceで制限されます。RELOADFILESUPERBINLOG_ADMIN SET_USER_IDなどの権限。これらの権限を付与するユーザーは作成できません。このオプションは、ダンプされたGRANT文からこれらの権限を削除します。
  • strip_role_admin: ROLE_ADMIN権限はMySQL Database Serviceで制限されています。この権限を付与するユーザーは作成できません。このオプションは、ダンプされたGRANT文からこの権限を削除します。
  • strip_tablespaces: MySQL Database Serviceでは、表領域にいくつかの制限があります。デフォルトの表領域に表を作成する必要がある場合、このオプションはCREATE TABLE文からTABLESPACE=オプションを削除します。

また、ocimdsオプションが有効になっている場合、CREATE TABLE文のDATA DIRECTORYINDEX DIRECTORYおよびENCRYPTIONオプションは常にDDLスクリプトでコメント・アウトされます。

注意5.7.9 (サポートされている最小ソース・バージョン)などの古いバージョンのMySQL

をエクスポートする場合は、MySQL Shell Upgrade Checker Utilityを実行して、移行で発生する可能性のあるすべての問題のレポートを生成することをお薦めします。詳細は、MySQL Shell User Guide - Upgrade Checker Utilityを参照してください。

MySQLシェルを使用したObject Storageへのデータのエクスポート

このタスクでは、MySQL Shell dumpInstanceユーティリティを使用して、サポートされているMySQL ServerソースからObject Storageバケットにデータをエクスポートする方法について説明します。

このタスクでは、次のことが必要です。
  • MySQL Shell 8.0.22以上。
  • オブジェクト・ストレージおよび既存のバケットへのアクセス。
  • オブジェクト・ストレージ・ネームスペースの名前。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
  • 有効な構成ファイル。SDKおよびCLIの構成ファイルを参照してください。デフォルトの場所にコマンドライン・インタフェースをインストールして構成した場合は、有効な構成ファイルがあります。CLIをインストールおよび構成していない場合は、CLIをインストールするか、構成ファイルを手動で作成する必要があります。
  • dryRunおよびocimdsパラメータをtrueに設定してdumpInstanceコマンドを実行しました。これにより、エクスポートのテスト実行、互換性の問題のチェック、およびそれらの問題の出力へのリストが実行されます。互換性の問題とその修正方法の詳細は、MySQLシェル・インスタンスおよびスキーマ・ダンプ・ユーティリティを参照してください。
ローカルMySQLインスタンスをObject Storageバケットにエクスポートするには、util.dumpInstanceを使用してMySQLインスタンス全体をエクスポートするか、util.dumpSchemasを使用して特定のスキーマをエクスポートします。各コマンドの構文は次のとおりです。
  • util.dumpInstance(outputUrl[, options])
  • util.dumpSchemas(schemas, outputUrl[, options])

このタスクでは、互換性オプションを指定してutil.dumpInstanceを使用します。

  1. 次のコマンドは、インスタンス全体をエクスポートし、MySQL Database Service DBシステムで使用できない権限を削除します
    shell>JS> util.dumpInstance("bucketPrefix", {osBucketName: "mds-bucket", osNamespace: "NamespaceID", 
    threads: n, ocimds: true, compatibility: ["strip_restricted_grants"]})
    ここでは:
    • util.dumpInstance: MySQLインスタンス内のすべてのデータをエクスポートするコマンド。
    • bucketPrefix: (オプション)。バケットにアップロードされたファイルに接頭辞を追加します。これが指定されている場合、ファイルは、ファイル・パスと同様に、bucketPrefix/filenameという形式の接頭辞を持つ定義済バケットにアップロードされます。たとえば、bucketPrefixtestに設定されている場合、定義されたバケットmds-bucketにアップロードされるすべてのファイルは、test/filenameとして実行されます。ファイルをダウンロードすると、接頭辞はダウンロードでフォルダとして扱われます。ローカル・エクスポートの場合、このパラメータはエクスポート先のローカル・ディレクトリへのパスです。
      注意:このパラメータの内容はオプションです

      が、引用符は使用できません。接頭辞を使用しない場合でも、コマンドの構文に引用符を含める必要があります。次に例を示します。
      shell>JS> util.dumpInstance("", {osBucketName: "mds-bucket", osNamespace: "NamespaceID", 
      threads: n, ocimds: true, compatibility: ["strip_restricted_grants"]})
    • osBucketName:エクスポート先のObject Storageバケットの名前(大/小文字が区別される)。MySQL Shellでは、configファイルで定義されたテナンシおよびユーザー情報が使用されます。
    • osNamespace:テナンシに関連付けられたオブジェクト・ストレージ・ネームスペースの一意の識別子。CLIを使用してこれを取得するには、コマンドoci os ns getを実行します。
    • threads:このタスクに使用する処理スレッドの数を指定します。デフォルトは4です。最適なパフォーマンスを得るには、このパラメータをデータベース・サーバーで使用可能なCPUコアの数に設定することをお薦めします。
    • ocimds:データがMySQL Database Serviceと互換性があるかどうかを確認します。これがtrueに設定されている場合、MySQL Database Serviceと互換性がないインスタンスはエクスポートできません。たとえば、RELOADFILESUPERBINLOG_ADMINSET_USER_IDなどの特権は、どのMySQL Database Serviceユーザーも使用できず、MyISAMなどのストレージエンジンはMySQL Database Serviceで使用できません。このパラメータを有効にしてバケット名を指定すると、ociParManifestが自動的に有効になり、ダンプ用のマニフェスト・ファイル(@.manifest.json)が生成されます。
    • compatibility: (オプション)エクスポートされたデータに対して実行する変更を指定するパラメータのリスト。詳細は、オンプレミスMySQLとMySQL Database Serviceの互換性を参照してください。
    :データセット

    が大きい場合は、bytesPerChunkパラメータを使用して大きいチャンクを定義することをお薦めします。デフォルトのチャンク・サイズは32MB.です。個々のチャンクのサイズを増やすには、コマンドにbytesPerChunkパラメータを追加します。例: bytesPerChunk: 128Mは、128MB.のチャンク・サイズを指定します。

    dumpInstanceおよびdumpSchemasユーティリティで使用可能なオプションの詳細は、インスタンスおよびスキーマ・ダンプ・ユーティリティを参照してください。

  2. このコマンドによって、次のような出力が生成されます。
    Checking for compatibility with MySQL Database Service 8.0.21
    NOTE: User root@localhost had restricted privileges (RELOAD, FILE, SUPER, BINLOG_ADMIN, SET_USER_ID) removed
    NOTE: Database world had unsupported ENCRYPTION option commented out
    NOTE: Database world_x had unsupported ENCRYPTION option commented out
    Compatibility issues with MySQL Database Service 8.0.21 were found and repaired. 
    Please review the changes made before loading them.
    Acquiring global read lock
    All transactions have been started
    Locking instance for backup
    Global read lock has been released
    Writing global DDL files
    Writing users DDL
    Writing DDL for schema `world`
    Writing DDL for table `world`.`city`
    Preparing data dump for table `world`.`city`
    .....
    .....
    Data dump for table `world`.`city` will be chunked using column `ID`
    Preparing data dump for table `world`.`country`
    Data dump for table `world`.`country` will be chunked using column `Code`
    Preparing data dump for table `world`.`countrylanguage`
    Data dump for table `world`.`countrylanguage` will be chunked using column `CountryCode`
    Preparing data dump for table `world_x`.`city`
    Data dump for table `world_x`.`city` will be chunked using column `ID`
    Preparing data dump for table `world_x`.`country`
    Data dump for table `world_x`.`country` will be chunked using column `Code`
    Preparing data dump for table `world_x`.`countryinfo`
    Data dump for table `world_x`.`countryinfo` will be chunked using column `_id`
    Preparing data dump for table `world_x`.`countrylanguage`
    Data dump for table `world_x`.`countrylanguage` will be chunked using column `CountryCode`
    Running data dump using 8 threads.
    NOTE: Progress information uses estimated values and may not be accurate.
    Writing DDL for table `world_x`.`countryinfo`
    Writing DDL for table `world_x`.`countrylanguage`
    Data dump for table `world_x`.`country` will be written to 1 file
    Data dump for table `world_x`.`city` will be written to 1 file
    Data dump for table `world`.`city` will be written to 1 file
    Data dump for table `world`.`countrylanguage` will be written to 1 file
    Data dump for table `world`.`country` will be written to 1 file
    Data dump for table `world_x`.`countryinfo` will be written to 1 file
    Data dump for table `world_x`.`countrylanguage` will be written to 1 file
    2 thds dumping - 100% (10.84K rows / ~10.81K rows), 1.33K rows/s, 71.70 KB/s uncompressed, 15.01 KB/s compressed
    Duration: 00:00:08s
    Schemas dumped: 3
    Tables dumped: 7
    Uncompressed data size: 514.22 KB
    Compressed data size: 106.78 KB
    Compression ratio: 4.8
    Rows written: 10843
    Bytes written: 106.78 KB
    Average uncompressed throughput: 62.96 KB/s
    Average compressed throughput: 13.07 KB/s
指定したバケットにデータがアップロードされます。

MySQLシェルを使用したObject StorageからMySQL DBシステムへのインポート

このタスクでは、Object StorageからMySQL DBシステムにデータをインポートする方法を説明します。

このタスクでは、次のことが必要です。
  • ターゲットMySQL DBシステムへのネットワーク・アクセス。FastConnectまたはVPNを使用したブリッジ接続、またはMySQL DBシステムへのアクセス権を持つコンピュート・インスタンスへのSSHアクセス。詳細は、Networking Setupを参照してください。
  • MySQL Shell 8.0.22以上。
  • オブジェクト・ストレージおよびエクスポートされたファイルを含む既存のバケットへのアクセス。
  • オブジェクト・ストレージ・ネームスペースの名前。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
  • 有効なコマンドライン・インタフェース(CLI)構成ファイル。SDKおよびCLIの構成ファイルを参照してください。CLIをデフォルトの場所にインストールして構成した場合は、有効な構成ファイルがあります。CLIをインストールおよび構成していない場合は、CLIをインストールするか、構成ファイルを手動で作成する必要があります。
  • DBシステムにインポート用の十分な記憶域があることを確認してください。
  1. MySQLシェルを実行します。
  2. \jsと入力し、[Enter]を押して、JavaScript入力タイプに切り替えます。
  3. 次のコマンドを使用してDBシステムのエンドポイントに接続し、グローバル・セッションを開始します。
    >MySQL>JS> \c userName@DBSystemEndpointIPAddress
    ここでは:
    • \c:新しい接続を確立するシェル・コマンド。
    • userName: DBシステムのユーザー名。
    • DBSystemEndpointIPAddress: DBシステム・エンドポイントのIPアドレス。
    次の出力が生成されます。
    Creating a session to 'userName@DBSystemEndpointIPAddress'
    Please provide the password for 'userName@DBSystemEndpointIPAddress': ********
    Save password for 'userName@DBSystemEndpointIPAddress'? [Y]es/[N]o/Ne[v]er (default No): y
    Fetching schema names for autocompletion... Press ^C to stop.
    Your MySQL connection id is 21 (X protocol)
    Server version: 8.0.21-cloud MySQL Enterprise - Cloud
    No default schema selected; type \use <schema> to set one.
  4. 次のコマンドを実行して、Object Storageバケットmds-bucketから前のステップで接続したMySQL Database Service DBシステムにデータをインポートします。
    >MySQL>JS> util.loadDump("bucketPrefix", {osBucketName: "mds-bucket", osNamespace: "NamespaceID", 
    threads: n})
    ここでは:
    • util.loadDump:指定したObject StorageバケットからMySQL DBシステムにデータをインポートするコマンド。
    • bucketPrefix: (オプション)。データが接頭辞付きでObject Storageにアップロードされた場合、インポート・コマンドでその接頭辞を使用する必要があります。
    • osBucketName:エクスポート先のObject Storageバケットの名前。MySQL Shellでは、configファイルで定義されたテナンシおよびユーザー情報が使用されます。
    • osNamespace:テナンシに関連付けられたオブジェクト・ストレージ・ネームスペースの一意の識別子。CLIを使用してこれを取得するには、コマンドoci os ns getを実行します。
    • threads:このタスクに使用する処理スレッドの数を指定します。デフォルトは4です。最適なパフォーマンスを得るには、このパラメータをターゲットMySQL DBシステムで使用されるOCPUの数の2倍に設定することをお薦めします。

    loadDumpユーティリティで使用可能なオプションの詳細は、ダンプ・ロード・ユーティリティを参照してください。

    5.7.9以降など、MySQL 5.7サーバーからエクスポートされたデータ

    をインポートする場合は、"ignoreVersion": trueオプションも使用する必要があります。このオプションが定義されていない場合に5.7からエクスポートされたデータをインポートしようとすると、インポートは失敗します。
  5. ここで2番目のステップのテキストを入力します。
    Loading DDL and Data from OCI ObjectStorage bucket=Shell-Bucket, prefix='dump1' using 12 threads.
    Target is MySQL 8.0.21-cloud (MySQL Database Service). Dump was produced from MySQL 8.0.21
    Checking for pre-existing objects...
    Executing common preamble SQL
    Executing DDL script for schema `world_x`
    Executing DDL script for `world_x`.`countrylanguage`
    Executing DDL script for `world_x`.`country`
    Executing DDL script for `world_x`.`countryinfo`
    Executing DDL script for `world_x`.`city`
    Executing DDL script for schema `world`
    Executing DDL script for `world`.`countrylanguage`
    Executing DDL script for `world`.`country`
    Executing DDL script for `world`.`city`
    Executing DDL script for schema `imdb`
    [Worker006] world_x@countryinfo@@0.tsv.zst: Records: 239  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker002] world@country@@0.tsv.zst: Records: 239  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker003] world_x@country@@0.tsv.zst: Records: 239  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker005] world_x@countrylanguage@@0.tsv.zst: Records: 984  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker008] world@countrylanguage@@0.tsv.zst: Records: 984  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker001] world_x@city@@0.tsv.zst: Records: 4079  Deleted: 0  Skipped: 0  Warnings: 0
    [Worker007] world@city@@0.tsv.zst: Records: 4079  Deleted: 0  Skipped: 0  Warnings: 0
    Executing common postamble SQL                           
                                            
    7 chunks (10.84K rows, 514.22 KB) for 7 tables in 3 schemas were loaded in 5 sec (avg throughput 102.84 KB/s)
    0 warnings were reported during the load.
    :実行中にプロセスを取り消す

    と(Ctrl + cを一度押すと)、既存のすべてのスレッドが完了でき、シェルは進行状況ファイルをObject Storageに書き込み、インポート・プロセスの進行状況を記録します。これにより、インポートを再開する必要があり、データが外部的に変更されていないと仮定した場合に、終了した場所を選択できます。[Ctrl ]+[ C]を2回押してインポートを取り消すと、進行状況ファイルが書き込まれ、InnoDBエンジンによって進行中のトランザクションがロールバックされます。これにはある程度の時間がかかります。進捗ファイルの詳細は、MySQL Shell Progress Fileを参照してください。
データがDBシステムにインポートされます。
注意:エクスポート時にObject Storageからデータをインポートすることもでき

ます。詳細は、「MySQLシェルを使用した同時インポートおよびエクスポート」を参照してください。
MySQLシェル進行状況ファイル

Object Storageバケットに格納されているデフォルトの進捗ファイルを使用するかわりに、ローカルの進捗ファイルの使用について説明します。

データベース・エクスポートが非常に大きく、何千ものチャンクがある場合は、progressFile: "/path/to/filename"パラメータを設定することをお薦めします。これにより、データと同じObject Storageバケット内ではなく、コンピュートのローカル・ファイル・システムに進捗ファイルが作成され、インポートのパフォーマンスが向上します。

次の例では、Object Storageからデータをロードし、コンピュート・インスタンスのopcユーザーのホーム・ディレクトリにprogressfile.jsonという進捗ファイルを作成します。
util.loadDump("bucketPrefix", {osBucketName: "mds-bucket", osNamespace: "NamespaceID", 
             threads: 4, progressFile: "/home/opc/progressfile.json"})
注意 progressFile:パラメータを指定し、値を空白のままにすると、progressFile: ""は書き込まれず、インポートを再開できません。

MySQLシェルを使用した同時インポートおよびエクスポート

データの同時エクスポートおよびインポートの有効化。

このオプションを使用すると、Object Storageバケットでダンプがまだ作成されている間に、loadDumpでダンプをロードできます。アップロードされたすべてのチャンクが処理されると、コマンドはより多くのデータを待機するか、ダンプが完了としてマークされるか、定義されたタイムアウトが経過します。

次の例では、5分間のタイムアウトを指定します。

>MySQL>JS> util.loadDump("bucketPrefix", {osBucketName: "mds-bucket", 
           osNamespace: "NamespaceID", threads: n, waitDumpTimeout: 300})

事前認証済リクエストを使用したインポート

このトピックでは、事前認証済リクエスト(PAR)を使用したデータ・インポートについて説明します。

オブジェクト・ストレージPARを使用して、次の方法でデータをインポートできます。
  • 「DBシステムの作成」または「DBシステムへのリストア」ダイアログ。

    MySQLシェルでは、データをオブジェクト・ストレージ・バケットにエクスポートし、エクスポート内のすべてのファイルに対して事前認証済リクエスト(PAR)を含むマニフェスト・ファイルを生成できます。このマニフェストを使用すると、DBシステムの作成時に、オブジェクト・ストレージ・バケットからDBシステムにデータを直接インポートできます。

    PARからのインポート機能は、「データ・インポート」タブの「拡張オプション」の下にある「MySQL DBシステムの作成および新しいDBシステムへのリストア」ダイアログで使用できます。既存のPAR URLを貼り付けるか、提供されているウィザードを使用してPAR URLを生成できます。PAR URLは、ダンプのマニフェスト・ファイル(@.manifest.json)にリンクする必要があります。

    マニフェスト・ファイルは、MySQLシェル・ダンプ・ユーティリティのパラメータociParManifestが有効になっている場合に生成されます。ocimdsが有効で、バケット名が指定されている場合、ociParManifestは自動的に有効になります。
    ノート

    マニフェスト・ファイル用に生成されたPAR URLのデフォルトの有効期限は1週間です。ダンプが1週間以上前にデフォルトの有効期限で作成された場合は、PARからのインポートを使用する前に再作成する必要があります。別のPAR有効期限を定義するには、MySQLシェル・ダンプ・ユーティリティのociParExpireTimeパラメータを使用します。詳細は、MySQL Shell Dump Utilityを参照してください。

    DBシステムの作成およびデータのインポートの詳細は、MySQL DBシステムの作成を参照してください。

    新規DBシステムへのバックアップのリストアおよびデータのインポートの詳細は、バックアップからの新規DBシステムの作成を参照してください

  • MySQLシェルの使用

    詳細は、「MySQLシェルおよび事前認証済リクエストを使用したオブジェクト・ストレージからのMySQL DBシステムへのインポート」を参照してください。

PAR URLの詳細は、事前認証済リクエストの使用を参照してください。

MySQLシェルおよび事前認証済リクエストを使用したオブジェクト・ストレージからのMySQL DBシステムへのインポート

このタスクでは、MySQLシェルおよび事前認証済リクエスト(PAR)を使用して、オブジェクト・ストレージからMySQL DBシステムにデータをインポートする方法について説明します。

このタスクには、次の手順が必要です。
  • ターゲットMySQL DBシステムへのネットワーク・アクセス。FastConnectまたはVPNを使用したブリッジ接続、またはMySQL DBシステムへのアクセス権を持つコンピュート・インスタンスへのSSHアクセス。詳細は、Networking Setupを参照してください。
  • MySQL Shell 8.0.22以上。
  • オブジェクト・ストレージおよびエクスポートされたファイルを含む既存のバケットへのアクセス。
  • マニフェスト・ファイル(@.manifest.json)の読取り専用PAR URLを生成しました。
  • 進捗ファイル(jsonファイル、選択した名前)の読取り/書込みPAR URLを生成しました。
  • オブジェクト・ストレージ・ネームスペースの名前。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
  • 有効なコマンドライン・インタフェース(CLI)構成ファイル。SDKおよびCLIの構成ファイルを参照してください。CLIをデフォルトの場所にインストールして構成した場合は、有効な構成ファイルがあります。CLIをインストールおよび構成していない場合は、CLIをインストールするか、構成ファイルを手動で作成する必要があります。
  • インポートに十分な記憶域がDBシステムにあることを確認してください。
  1. MySQLシェルを実行します。
  2. \jsと入力し、[Enter]を押して、JavaScript入力タイプに切り替えます。
  3. 次のコマンドを使用してDBシステムのエンドポイントに接続し、グローバル・セッションを開始します。
    >MySQL>JS> \c userName@DBSystemEndpointIPAddress
    ここでは:
    • \c:新しい接続を確立するシェル・コマンド。
    • userName: DBシステムのユーザー名。
    • DBSystemEndpointIPAddress: DBシステム・エンドポイントのIPアドレス。
    次の出力が生成されます。
    Creating a session to 'userName@DBSystemEndpointIPAddress'
    Please provide the password for 'userName@DBSystemEndpointIPAddress': ********
    Save password for 'userName@DBSystemEndpointIPAddress'? [Y]es/[N]o/Ne[v]er (default No): y
    Fetching schema names for autocompletion... Press ^C to stop.
    Your MySQL connection id is 21 (X protocol)
    Server version: 8.0.21-cloud MySQL Enterprise - Cloud
    No default schema selected; type \use <schema> to set one.
  4. 次のコマンドを実行して、mds-bucketという名前のオブジェクト・ストレージ・バケットから、前のステップで接続したMySQL Database Service DBシステムにデータをインポートします。
    >MySQL>JS> util.loadDump("PARURLofManifest", {osBucketName: "mds-bucket", osNamespace: "NamespaceID", 
    threads: n, progressFile: "RWPARUrlOfJsonProgressFile"})
    ここで:
    • util.loadDump:指定したオブジェクト・ストレージ・バケットからMySQL DBシステムにデータをインポートするコマンド。
    • PARURLofManifest:マニフェスト・ファイルのPAR URL。
    • osBucketName:エクスポート先のオブジェクト・ストレージ・バケットの名前。MySQLシェルでは、configファイルに定義されているテナンシおよびユーザー情報が使用されます。
    • osNamespace:テナンシに関連付けられたオブジェクト・ストレージ・ネームスペースの一意の識別子。CLIを使用してこれを取得するには、コマンドoci os ns getを実行します。
    • threads:このタスクに使用する処理スレッド数を指定します。デフォルトは4です。最適なパフォーマンスを得るには、このパラメータをターゲットMySQL DBシステムで使用されるOCPUの数の2倍に設定することをお薦めします。
    • progressFile:インポートの進行状況を記録するために使用するJSONファイルの読取り/書込みPAR URL。このパラメータを設定してローカル・システムにファイルを作成すると、障害発生時に進行状況を再開できなくなります。

    loadDumpユーティリティで使用可能なオプションの詳細は、「ダンプ・ロード・ユーティリティ」を参照してください

    ノート5.7.9以上など、MySQL 5.7サーバーからエクスポートされたデータをインポートする

    場合は、"ignoreVersion": trueオプションも使用する必要があります。このオプションが定義されていない場合、5.7からエクスポートされたデータをインポートしようとすると、インポートは失敗します。
データがDBシステムにインポートされ、進行状況が次に書き込まれます
ノートエクスポートによるデータのアップロード中に、オブジェクト・ストレージからデータ

をインポートすることもできます。詳細は、「MySQLシェルでの同時インポートおよびエクスポート」を参照してください。

gtid_purgedの設定

クリーンなインポート後にレプリケーション座標を設定する方法について説明します。

オンプレミス・サーバーからすべてのトランザクションを再実行せずにオンプレミス・サーバーからのレプリケーションを開始するには、ソース・インスタンスからDBシステムのMySQLインスタンスにgtid_executedセットを適用する必要があります。
ノート

これらのメソッドは、新しいクリーンな設定にのみ適用されます。レプリケーション・エラーからのリカバリを試行する場合は、「レプリケーションの再同期」の説明に従って、gtidSetデルタを適用する必要があります。
これを行うには、次のいずれかの方法を実行します。
  • MySQLシェルのupdateGtidSet: append:オブジェクト・ストレージからDBシステムにデータ・ダンプをインポートする場合、MySQLシェルのloadDumpユーティリティを使用して、loadDumpパラメータにupdateGtidSet: appendを指定します。これにより、ダンプ・メタデータに記録されているソースMySQLインスタンスのgtid_executed GTIDセットが、DBシステムのMySQLインスタンスのgtid_purged GTIDセットに適用されます。詳細は、MySQL Shell Dump Loading Utilityを参照してください。
  • call sys.set_gtid_purged("+gtidSet"): DBシステムのMySQLインスタンスのストアド・プロシージャで、ダンプ・メタデータに記録されているように、データのインポート後に、ソースMySQLインスタンスのgtid_executed GTIDセットをDBシステムのMySQLインスタンスのgtid_purged GTIDセットに適用できます。@.jsonダンプ・ファイルのgtidExecutedフィールドからgtidSet値を取得します。このコマンドの詳細は、DBシステムへのMySQLシェルの移入を参照してください。