Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  ndb_restore — NDB Cluster バックアップの復元

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

23.4.23 ndb_restore — NDB Cluster バックアップの復元

NDB Cluster リストアプログラムは、通常は MySQL bin ディレクトリにある個別のコマンド行ユーティリティー ndb_restore として実装されます。 このプログラムは、バックアップの結果として作成されたファイルを読み取り、格納されている情報をデータベースに挿入します。

注記

NDB 8.0.17 以降、このプログラムは実行の終了時に NDBT_ProgramExit: ... を出力しなくなりました。 NDB 8.0.16 以前から NDB 8.0 以降のリリースにアップグレードする場合は、この動作に依存するアプリケーションを適宜変更するようにしてください。

ndb_restore は、バックアップを作成するために使用される START BACKUP コマンド (セクション23.5.8.2「NDB Cluster 管理クライアントを使用したバックアップの作成」を参照してください) によって作成されたバックアップファイルごとに、一度実行する必要があります。 これは、バックアップが作成された時点の、クラスタ内のデータノード数と同じです。

注記

複数のデータノードを並列でリストアしている場合を除き、ndb_restore を使用する前に、クラスタをシングルユーザーモードで実行することをお勧めします。 詳細は、セクション23.5.6「NDB Cluster のシングルユーザーモード」を参照してください。

次のテーブルに、NDB Cluster ネイティブバックアップリストアプログラム ndb_restore に固有のオプションを示します。 追加説明が表のあとにあります。 ほとんどの NDB Cluster プログラム (ndb_restore を含む) に共通のオプションについては、セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」 を参照してください。

表 23.40 プログラムで使用されるコマンドライン・オプション ndb_restore

形式 説明 追加、非推奨、または削除された

--allow-pk-changes[=0|1]

テーブルの主キーを構成するカラムセットの変更を許可

追加: NDB 8.0.21

--append

タブ区切りファイルへのデータの追加

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--backup-password=string

--decrypt を使用して暗号化バックアップを復号化するためのパスワードを指定します。許可される値については、ドキュメントを参照してください

追加: NDB 8.0.22

--backup-path=dir_name

バックアップファイルディレクトリへのパス

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--backupid=#,

-b

この ID を持つバックアップからのリストア

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--connect,

-c

--connectstring のエイリアス

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--decrypt

暗号化バックアップを復号化します。--backup-password が必要です

追加: NDB 8.0.22

--disable-indexes

バックアップからのインデックスが無視されます。データのリストアに必要な時間が短縮される可能性があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--dont-ignore-systab-0,

-f

リストア中はシステムテーブルを無視しないでください。実験のみで、本番での使用には使用しません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--exclude-databases=db-list

1 つ以上の除外するデータベースのリスト (指定されていないものを含めます)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--exclude-intermediate-sql-tables[=TRUE|FALSE]

TRUE (デフォルト) の場合、ALTER TABLE 操作のコピーから残された中間テーブル (接頭辞'#sql-'が付いた名前) をリストアしません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--exclude-missing-columns

データベースのテーブルのバージョンから欠落しているテーブルのバックアップバージョンのカラムは無視されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--exclude-missing-tables

データベースから欠落しているバックアップからのテーブルは無視されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--exclude-tables=table-list

除外する 1 つ以上のテーブルのリスト (名前のない同じデータベース内のテーブルを含む)。各テーブル参照にはデータベース名が含まれている必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-enclosed-by=char

フィールドはこの文字で囲まれています

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-optionally-enclosed-by

フィールドはオプションでこの文字で囲まれます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--fields-terminated-by=char

フィールドはこの文字で終了

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--hex

バイナリタイプを 16 進形式で出力します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ignore-extended-pk-updates[=0|1]

現在拡張主キーに含まれているカラムの更新を含むログエントリを無視

追加: NDB 8.0.21

--include-databases=db-list

1 つ以上のリストアするデータベースのリスト (指定されていないものを除外します)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--include-stored-grants

共有ユーザーおよび権限を ndb_sql_metadata テーブルにリストア

追加: NDB 8.0.19

--include-tables=table-list

リストアする 1 つ以上のテーブルのリスト (名前のない同じデータベース内のテーブルを除く)。各テーブル参照にはデータベース名を含める必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--lines-terminated-by=char

行はこの文字で終了

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--lossy-conversions,

-L

バックアップからデータをリストアするときに、カラム値の不可逆変換 (型の昇格または符号の変更) を許可します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--no-binlog

mysqld が接続され、バイナリロギングを使用している場合は、復元されたデータをログに記録しません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--no-restore-disk-objects,

-d

ディスクデータに関連するオブジェクトをリストアしません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--no-upgrade,

-u

VAR データがまだサイズ変更されていない可変サイズ属性の配列タイプをアップグレードせず、カラム属性を変更しません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--ndb-nodegroup-map=map,

-z

NDBCLUSTER ストレージエンジンのノードグループマップ;構文: リスト (source_nodegroup、destination_nodegroup)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--nodeid=#,

-n

バックアップが作成されたノードの ID

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--num-slices=#

スライスごとの復元時に適用するスライスの数

追加: NDB 8.0.20

--parallelism=#,

-p

データのリストア中に使用する並列トランザクションの数

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--preserve-trailing-spaces,

-P

固定幅文字列型を可変幅型に昇格するときに、末尾の空白 (パディングを含む) を維持することを許可します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--print

メタデータ、データおよびログを stdout に出力します (--print-meta --print-data --print-log と同等)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--print-data

データを stdout に出力します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--print-log

stdout へのログの出力

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--print-meta

メタデータを stdout に出力します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--print-sql-log

SQL ログを stdout に書き込みます。デフォルトは FALSE です

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--progress-frequency=#

指定された秒数ごとに復元のステータスを出力

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--promote-attributes,

-A

バックアップからデータをリストアするときに、属性の昇格を許可します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--rebuild-indexes

バックアップで見つかった順序付けられたインデックスをマルチスレッドで再構築します。使用されるスレッドの数は、BuildIndexThreads の設定によって決定されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--remap-column=[db].[tbl].[col]:[fn]:[args]

指定された関数および引数を使用して、指定されたカラムの値にオフセットを適用

追加: NDB 8.0.21

--restore-data,

-r

NDB API を使用してテーブルデータを復元し、NDB Cluster にログイン

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--restore-epoch,

-e

エポック情報をステータステーブルにリストアします。レプリカクラスタでレプリケーションを開始する場合に役立ちます。ID 0 の mysql.ndb_apply_status の行を更新または挿入

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--restore-meta,

-m

NDB API を使用した NDB Cluster へのメタデータの復元

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--restore-privilege-tables

以前 NDB に移動された MySQL 権限テーブルをリストアします

非推奨: NDB 8.0.16

--rewrite-database=olddb,newdb

別の名前のデータベースへのリストア

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--skip-broken-objects

バックアップファイルで欠落している BLOB テーブルを無視

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--skip-table-check,

-s

リストア中にテーブル構造チェックをスキップ

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--skip-unknown-objects

新しい NDB バージョンから古いバージョンにバックアップを復元するときに、ndb_restore で認識されないスキーマオブジェクトを無視

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--slice-id=#

スライス ID(スライス別に復元する場合)

追加: NDB 8.0.20

--tab=dir_name,

-T dir_name

指定されたパスのテーブルごとにタブ区切りの .txt ファイルを作成

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--verbose=#

出力の冗長性レベル

(MySQLに基づくすべてのNDBリリースでサポート 8.0)


このユーティリティーの一般的なオプションを次に示します。

ndb_restore [-c connection_string] -n node_id -b backup_id \
      [-m] -r --backup-path=/path/to/backup/files

通常、NDB Cluster バックアップから復元する場合、ndb_restore には少なくとも --nodeid (短い形式) が必要です: -n)、--backupid (短い形式: -b)、および --backup-path のオプション。

NDB 8.0.19 より前では、ndb_restore を使用して一意のインデックスを含むテーブルを復元した場合、--disable-indexes または --rebuild-indexes を含める必要がありました。 NDB 8.0.19 以降では、自動メタデータ同期が有効になっている場合、これは必要なくなりました。

-c オプションは、クラスタ管理サーバーの場所を ndb_restore に指示する接続文字列を指定するために使用します (セクション23.3.3.3「NDB Cluster 接続文字列」 を参照)。 このオプションを使用しない場合、ndb_restorelocalhost:1186 の管理サーバーに接続を試みます。 このユーティリティーはクラスタ API ノードとして動作するため、クラスタ管理サーバーに接続するための空き接続スロットが必要となります。 これは、クラスタ config.ini ファイル内にそれが使用できる [api] セクションまたは [mysqld] セクションが少なくとも 1 つ存在する必要があることを意味します。 このため、MySQL サーバーまたはほかのアプリケーションに使用されていない空の [api] セクションまたは [mysqld] セクションを、config.ini 内に少なくとも 1 つ用意することをお勧めします (セクション23.3.3.7「NDB Cluster での SQL およびその他の API ノードの定義」を参照してください)。

NDB 8.0.22 以降では、ndb_restore--decrypt および --backup-password を使用して暗号化バックアップを復号化できます。 復号化を実行するには、両方のオプションを指定する必要があります。 暗号化バックアップの作成の詳細は、START BACKUP 管理クライアントコマンドのドキュメントを参照してください。

ndb_restore がクラスタに接続されていることを確認するには、ndb_mgm 管理クライアントで SHOW コマンドを使用します。 システムシェルで次のようにすることでこれを実現することもできます。

shell> ndb_mgm -e "SHOW"

ndb_restore で使用されるすべてのオプションの詳細は、次のリストを参照してください:

  • --allow-pk-changes

    コマンド行形式 --allow-pk-changes[=0|1]
    導入 8.0.21-ndb-8.0.21
    Integer
    デフォルト値 0
    最小値 0
    最大値 1

    このオプションが 1 に設定されている場合、ndb_restore では、テーブル定義の主キーをバックアップ内の同じテーブルの主キーと異なるものにすることができます。 これは、複数のテーブルで主キーが変更されている異なるスキーマバージョン間でバックアップおよびリストアを行う場合に望ましいことがあり、テーブルスキーマおよびデータのリストア後に多くの ALTER TABLE ステートメントを発行するよりも、ndb_restore を使用してリストア操作を実行する方が単純または効率的であるようです。

    --allow-pk-changes では、主キー定義の次の変更がサポートされています:

    • 主キーの拡張: バックアップ内のテーブルスキーマに存在する NULL 以外のカラムは、データベース内のテーブル主キーの一部になります。

      重要

      テーブルの主キーを拡張する場合、バックアップの実行中に主キーの一部となるカラムは更新しないでください。ndb_restore によって検出された更新によって、値が変更されなくてもリストア操作は失敗します。 場合によっては、--ignore-extended-pk-updates オプションを使用してこの動作をオーバーライドできます。詳細は、このオプションの説明を参照してください。

    • 主キーの契約 (1) : すでにバックアップスキーマのテーブル主キーの一部であるカラムは、主キーの一部ではなくなりますが、テーブルには残ります。

    • 主キーの契約 (2) : すでにバックアップスキーマのテーブル主キーの一部であるカラムは、テーブルから完全に削除されます。

    これらの違いは、ステージングテーブルの使用を必要とする BLOB カラムやテキストカラムの変更など、ndb_restore でサポートされている他のスキーマの違いと組み合せることができます。

    主キースキーマの変更を使用する一般的なシナリオの基本ステップを次に示します:

    1. ndb_restore --restore-meta を使用したテーブルスキーマのリストア

    2. 必要なスキーマに変更するか、スキーマを作成

    3. 目的のスキーマのバックアップ

    4. 前のステップのバックアップを使用して ndb_restore --disable-indexes を実行し、インデックスおよび制約を削除

    5. ndb_restore --allow-pk-changes を (--ignore-extended-pk-updates--disable-indexes および必要に応じてその他のオプションとともに) 実行して、すべてのデータをリストア

    6. 目的のスキーマで作成されたバックアップを使用して ndb_restore --rebuild-indexes を実行し、インデックスおよび制約を再構築

    主キーを拡張する場合、リストア操作中に ndb_restore で一時セカンダリ一意インデックスを使用して、古い主キーから新しい主キーにマップする必要がある場合があります。 このようなインデックスは、バックアップログから拡張主キーを持つテーブルにイベントを適用する必要がある場合にのみ作成されます。 このインデックスは NDB$RESTORE_PK_MAPPING という名前で、それを必要とする各テーブルに作成されます。必要に応じて、パラレルで実行されている ndb_restore インスタンスの複数のインスタンスで共有できます。 (リストアプロセスの最後に ndb_restore --rebuild-indexes を実行すると、このインデックスは削除されます。)

  • --append

    コマンド行形式 --append

    --tab および --print-data オプションとともに使用すると、同じ名前の既存のファイルにデータが追加されます。

  • --backup-path=dir_name

    コマンド行形式 --backup-path=dir_name
    ディレクトリ名
    デフォルト値 ./

    バックアップディレクトリへのパスは必須です。これは、--backup-path オプションを使用して ndb_restore に提供され、リストアするバックアップの ID バックアップに対応するサブディレクトリを含める必要があります。 たとえば、データノードの DataDir/var/lib/mysql-cluster である場合、バックアップディレクトリは /var/lib/mysql-cluster/BACKUP であり、ID 3 のバックアップのバックアップファイルは /var/lib/mysql-cluster/BACKUP/BACKUP-3 にあります。 パスは、絶対パスまたは ndb_restore 実行可能ファイルが配置されているディレクトリへの相対パスで、必要に応じて backup-path= を接頭辞として付けることができます。

    作成されたデータベースとは異なる構成のデータベースにバックアップをリストアできます。 たとえば、2 および 3 というノード ID を持つ 2 つのストレージノードを持つクラスタに作成された、バックアップ ID が 12 のバックアップを、4 つのノードを持つクラスタにリストアするとします。 その後、バックアップが作成されたクラスタ内のストレージノードごとに、ndb_restore を 2 回実行する必要があります。 ただし、ndb_restore はあるバージョンの MySQL で実行されているクラスタから作成されたバックアップを、別のバージョンの MySQL で実行されているクラスタに常に復旧できるとはかぎりません。

    重要

    古いバージョンの ndb_restore を使用して新しいバージョンの NDB Cluster から作成されたバックアップを復元することはできません。 新しいバージョンの MySQL から作成されたバックアップを古いクラスタに復元できますが、そのためには新しい NDB Cluster バージョンの ndb_restore のコピーを使用する必要があります。

    たとえば、NDB Cluster 7.5.21 を実行しているクラスタから取得したクラスタバックアップを NDB Cluster 7.4.31 を実行しているクラスタに復元するには、NDB Cluster 7.5.21 ディストリビューションに付属の ndb_restore を使用する必要があります。

    リストアをより高速にするために、十分な数のクラスタ接続が使用できる場合は、データを並列でリストアできます。 より正確に言うと、複数のノードを並列でリストアする場合は、各並列 ndb_restore プロセスに使用できる [api] または [mysqld] セクションがクラスタ config.ini ファイルに存在する必要があります。 ただし、データファイルは常にログの前に適用する必要があります。

  • --backup-password=password

    コマンド行形式 --backup-password=string
    導入 8.0.22-ndb-8.0.22
    文字列
    デフォルト値 [none]

    このオプションは、--decrypt オプションを使用して暗号化バックアップを復号化するときに使用するパスワードを指定します。 これは、バックアップの暗号化に使用されたパスワードと同じである必要があります。

    パスワードは 256 文字以内で、一重引用符または二重引用符で囲む必要があります。 文字コード 32、35、38、40-91、93、95 および 97-126 を持つ ASCII 文字を含めることができます。つまり、!, ', ", $, %, \および ^ 以外の印刷可能な ASCII 文字を使用できます。

  • --backupid=#, -b

    コマンド行形式 --backupid=#
    数値
    デフォルト値 none

    このオプションは、バックアップの ID または順序番号を指定するために使用され、バックアップの完了時に表示される Backup backup_id completed メッセージに管理クライアントによって表示される番号と同じです。 (セクション23.5.8.2「NDB Cluster 管理クライアントを使用したバックアップの作成」を参照してください。)

    重要

    クラスタバックアップをリストアするときは、同じバックアップ ID を持つバックアップからすべてのデータノードをリストアする必要があります。 異なるバックアップのファイルを使用すると、クラスタが一貫性のない状態にリストアされ、完全に失敗する可能性があります。

    NDB 8.0.15 以降では、このオプションは必須です。

  • --connect, -c

    コマンド行形式 --connect
    文字列
    デフォルト値 localhost:1186

    --ndb-connectstring のエイリアス。

  • --decrypt

    コマンド行形式 --decrypt
    導入 8.0.22-ndb-8.0.22

    --backup-password オプションで指定されたパスワードを使用して、暗号化バックアップを復号化します。

  • --disable-indexes

    コマンド行形式 --disable-indexes

    ネイティブ NDB バックアップからのデータのリストア中にインデックスのリストアを無効にします。 その後、--rebuild-indexes を使用してマルチスレッドでインデックスを作成することで、すべてのテーブルのインデックスを一度にリストアできます。これは、非常に大きなテーブルのインデックスを同時に再構築するより高速である必要があります。

  • --dont-ignore-systab-0, -f

    コマンド行形式 --dont-ignore-systab-0

    通常、テーブルデータおよびメタデータをリストアする場合、ndb_restore は、バックアップに存在する NDB システムテーブルのコピーを無視します。--dont-ignore-systab-0 により、システムテーブルがリストアされます。 このオプションは、実験および開発での使用のみが意図されており、本番環境には推奨されていません

  • --exclude-databases=db-list

    コマンド行形式 --exclude-databases=db-list
    文字列
    デフォルト値

    リストアしない 1 つ以上のデータベースのカンマ区切りリスト。

    このオプションは、多くの場合、--exclude-tables と組み合せて使用されます。詳細および例は、そのオプションの説明を参照してください。

  • --exclude-intermediate-sql-tables[=TRUE|FALSE]

    コマンド行形式 --exclude-intermediate-sql-tables[=TRUE|FALSE]
    Boolean
    デフォルト値 TRUE

    ALTER TABLE のコピー操作を実行するときに、mysqld は中間テーブルを作成します (名前の前に #sql- が付けられます)。 TRUE の場合、--exclude-intermediate-sql-tables オプションは、ndb_restore がこれらの操作から残された可能性のあるテーブルをリストアしないようにします。 このオプションはデフォルトでは TRUE です。

  • --exclude-missing-columns

    コマンド行形式 --exclude-missing-columns

    このオプションを使用して、選択したテーブルのカラムのみをリストアできます。これにより、ndb_restore は、バックアップで見つかったテーブルのバージョンと比較して、リストアされるテーブルから欠落しているカラムを無視します。 このオプションはリストアされるすべてのテーブルに適用されます。 このオプションを選択したテーブルまたはデータベースにのみ適用する場合は、このセクションの他の場所で説明されている --include-* または --exclude-* のオプションと組み合せて使用し、これらのオプションの補完セットを使用して残りのテーブルにデータをリストアできます。

  • --exclude-missing-tables

    コマンド行形式 --exclude-missing-tables

    このオプションを使用して、選択したテーブルのみをリストアできます。これにより、ndb_restore は、ターゲットデータベースで見つからないバックアップのテーブルを無視します。

  • --exclude-tables=table-list

    コマンド行形式 --exclude-tables=table-list
    文字列
    デフォルト値

    除外する 1 つ以上のテーブルのリスト。各テーブル参照にはデータベース名を含める必要があります。 多くの場合、--exclude-databases とともに使用されます。

    --exclude-databases または --exclude-tables を使用した場合は、これらのオプションによって指定されたデータベースまたはテーブルのみが除外されます。ほかのすべてのデータベースおよびテーブルは ndb_restore によってリストアされます。

    このテーブルは、--exclude-* オプションを使用した ndb_restore のいくつかの呼び出し (わかりやすくするためにほかのオプションが省略されている可能性があります) と、これらのオプションが NDB Cluster バックアップからの復元に与える影響を示しています:

    表 23.41 --exclude-* オプションを使用した ndb_restore のいくつかの呼び出し、およびこれらのオプションが NDB Cluster バックアップからの復元に与える影響。

    オプション 結果
    --exclude-databases=db1 db1 を除くすべてのデータベース内のすべてのテーブルがリストアされます。db1 内のテーブルはリストアされません
    --exclude-databases=db1,db2 (または --exclude-databases=db1 --exclude-databases=db2) db1 および db2 を除くすべてのデータベース内のすべてのテーブルがリストアされます。db1 または db2 内のテーブルはリストアされません
    --exclude-tables=db1.t1 データベース db1 内の t1 を除くすべてのテーブルがリストアされます。db1 内のほかのすべてのテーブルはリストアされます。ほかのすべてのデータベース内のすべてのテーブルはリストアされます
    --exclude-tables=db1.t2,db2.t1 (または --exclude-tables=db1.t2 --exclude-tables=db2.t1) データベース db1 内の t2 を除くすべてのテーブル、およびデータベース db2 内の t1 を除くすべてのテーブルがリストアされます。db1 または db2 内のほかのテーブルはリストアされません。ほかのすべてのデータベース内のすべてのテーブルはリストアされます

    これらの 2 つのオプションは一緒に使用できます。 たとえば、次のようにすると、すべてのデータベースのすべてのテーブルが except for データベース db1 および db2 にリストアされ、データベース db3 のテーブル t1 および t2 がリストアされます:

    shell> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2

    (この例でも、わかりやすく簡潔にするために、必要となる可能性があるほかのオプションを省略しています)。

    --include-* オプションおよび --exclude-* オプションは、次のルールに従って一緒に使用できます。

    • すべての --include-* および --exclude-* オプションのアクションは累積されます。

    • すべての --include-* および --exclude-* オプションは、ndb_restore に渡された順序で右から左に評価されます。

    • 競合するオプションがある場合は、最初 (もっとも右側) のオプションが優先されます。 言い換えると、対象となるデータベースまたはテーブルと一致する最初のオプション (右から左に適用して) が適用されます

    たとえば、次の一連のオプションを指定すると、ndb_restore がデータベース db1db1.t1 を除くすべてのテーブルをリストアし、ほかのデータベースのほかのテーブルはリストアしません。

    --include-databases=db1 --exclude-tables=db1.t1

    ただし、前述のオプションの順序を逆にすると、データベース db1 のすべてのテーブルがリストアされます (db1.t1 は含まれますが、ほかのデータベースのテーブルは含まれません)。これは、もっとも右にある --include-databases オプションがデータベース db1 に対して最初に一致し、db1 または db1 内のテーブルと一致するその他のオプションより優先されるためです。

    --exclude-tables=db1.t1 --include-databases=db1
  • --fields-enclosed-by=char

    コマンド行形式 --fields-enclosed-by=char
    文字列
    デフォルト値

    各カラム値は、このオプションに渡される文字列で囲まれます (データ型に関係なく、--fields-optionally-enclosed-by の説明を参照)。

  • --fields-optionally-enclosed-by

    コマンド行形式 --fields-optionally-enclosed-by
    文字列
    デフォルト値

    このオプションに渡された文字列は、文字データが含まれているカラム値 (CHARVARCHARBINARYTEXTENUM など) を囲むために使用されます。

  • --fields-terminated-by=char

    コマンド行形式 --fields-terminated-by=char
    文字列
    デフォルト値 \t (tab)

    このオプションに渡された文字列は、カラム値を区切るために使用されます。 デフォルト値はタブ文字 (\t) です。

  • --hex

    コマンド行形式 --hex

    このオプションを使用すると、すべてのバイナリ値は 16 進形式で出力されます。

  • --ignore-extended-pk-updates

    コマンド行形式 --ignore-extended-pk-updates[=0|1]
    導入 8.0.21-ndb-8.0.21
    Integer
    デフォルト値 0
    最小値 0
    最大値 1

    --allow-pk-changes を使用する場合、バックアップの実行中にテーブルの主キーの一部になるカラムは更新しないでください。そのようなカラムは、値を含む行が削除されるまで、時間値から同じ値が挿入されたままにしておく必要があります。 ndb_restore がバックアップのリストア時にこれらのカラムの更新を検出すると、リストアは失敗します。 一部のアプリケーションでは、行の更新時にすべてのカラムの値が設定される場合があるため、一部のカラム値が変更されていない場合でも、実際には変更されていないカラムの更新に表示されるログイベントがバックアップに含まれることがあります。 このような場合は、--ignore-extended-pk-updates1 に設定して、ndb_restore でこのような更新を強制的に無視できます。

    重要

    これらの更新を無視する場合、ユーザーは主キーの一部になるカラムの値に対する更新がないことを確認する必要があります。

    詳細は、--allow-pk-changes の説明を参照してください。

  • --include-databases=db-list

    コマンド行形式 --include-databases=db-list
    文字列
    デフォルト値

    リストアする 1 つ以上のデータベースのカンマ区切りリスト。 多くの場合、--include-tables とともに使用されます。詳細および例は、そのオプションの説明を参照してください。

  • --include-stored-grants

    コマンド行形式 --include-stored-grants
    導入 8.0.19-ndb-8.0.19
    Boolean
    デフォルト値 FALSE

    NDB 8.0.19 以降では、ndb_restore はデフォルトで、ndb_sql_metadata テーブルへの共有ユーザーおよび権限付与 (セクション23.5.12「NDB_STORED_USER での分散 MySQL 権限」 を参照) を復元しません。 このオプションを指定すると、これが実行されます。

  • --include-tables=table-list

    コマンド行形式 --include-tables=table-list
    文字列
    デフォルト値

    リストアするテーブルのカンマ区切りリスト。各テーブル参照にはデータベース名を含める必要があります。

    --include-databases または --include-tables を使用すると、それらのオプションによって指定されたデータベースまたはテーブルのみがリストアされます。ほかのすべてのデータベースおよびテーブルは ndb_restore によって除外され、リストアされません。

    次のテーブルに、--include-* オプションを使用した ndb_restore のいくつかの呼び出し (わかりやすくするためにほかのオプションが省略されている可能性があります) と、NDB Cluster バックアップからの復元に対するそれらの影響を示します:

    表 23.42 --include-* オプションを使用した ndb_restore のいくつかの呼び出しと、NDB Cluster バックアップからの復元へのそれらの影響。

    オプション 結果
    --include-databases=db1 データベース db1 内のテーブルのみがリストアされます。ほかのすべてのデータベース内のすべてのテーブルは無視されます
    --include-databases=db1,db2 (または --include-databases=db1 --include-databases=db2) データベース db1 および db2 内のテーブルのみがリストアされます。ほかのすべてのデータベース内のすべてのテーブルは無視されます
    --include-tables=db1.t1 データベース db1 内のテーブル t1 のみがリストアされます。db1 またはその他のデータベース内のほかのテーブルはリストアされません
    --include-tables=db1.t2,db2.t1 (または --include-tables=db1.t2 --include-tables=db2.t1) データベース db1 内のテーブル t2 およびデータベース db2 内のテーブル t1 のみがリストアされます。db1db2、またはその他のデータベース内のほかのテーブルはリストアされません

    これらの 2 つのオプションは一緒に使用することもできます。 たとえば、次の場合は、データベース db1 および db2 内のすべてのテーブルに加えて、データベース db3 内のテーブル t1 および t2 がリストアされます (ほかのデータベースまたはテーブルはリストアされません)。

    shell> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2

    (この例でも、必要となる可能性があるほかのオプションを省略しています。)

    次に示す構文を使用して、--include-* (または --exclude-*) オプションなしで、選択したデータベースまたは選択したテーブルのみを単一のデータベースからリストアすることもできます:

    ndb_restore other_options db_name,[db_name[,...] | tbl_name[,tbl_name][,...]]

    言い換えると、次のいずれかをリストアすることを指定できます。

    • 1 つ以上のデータベースのすべてのテーブル

    • 単一データベースの 1 つ以上のテーブル

  • --lines-terminated-by=char

    コマンド行形式 --lines-terminated-by=char
    文字列
    デフォルト値 \n (linebreak)

    出力の各行を終了するために使用する文字列を指定します。 デフォルトは改行文字 (\n) です。

  • --lossy-conversions, -L

    コマンド行形式 --lossy-conversions
    Boolean
    デフォルト値 FALSE (オプションを使用しない場合)

    このオプションは、--promote-attributes オプションを補完することを意図しています。 --lossy-conversions を使用するときは、バックアップからデータをリストアするときにカラム値の不可逆変換 (型降格または符号の変更) が許可されます。 いくつかの例外はありますが、降格を制御するルールは MySQL レプリケーションの場合と同じです。属性降格によって現在サポートされる型変換については、セクション17.5.1.9.2「データ型が異なるカラムのレプリケーション」を参照してください。

    ndb_restore は、不可逆変換中に実行されるデータの切り捨てを属性およびカラムごとに報告します。

  • --no-binlog

    コマンド行形式 --no-binlog

    このオプションは、接続されている SQL ノードが ndb_restore によってリストアされるデータをバイナリログに書き込むことを阻止します。

  • --no-restore-disk-objects, -d

    コマンド行形式 --no-restore-disk-objects
    Boolean
    デフォルト値 FALSE

    このオプションは、ndb_restore による NDB Cluster ディスクデータオブジェクト (テーブルスペースやログファイルグループなど) の復元を停止します。これらの詳細は、セクション23.5.10「NDB Cluster ディスクデータテーブル」 を参照してください。

  • --no-upgrade, -u

    コマンド行形式 --no-upgrade

    ndb_restore を使用してバックアップをリストアする場合、古い固定長形式を使用して作成された VARCHAR カラムは、現在採用されている可変幅形式を使用してサイズ変更および再作成されます。 この動作は、--no-upgrade を指定することでオーバーライドできます。

  • --ndb-nodegroup-map=map, -z

    コマンド行形式 --ndb-nodegroup-map=map

    このオプションは、あるノードグループから取得されたバックアップを別のノードグループにリストアするために使用できます。 引数は、source_node_group, target_node_group という形式のリストです。

  • --nodeid=#, -n

    コマンド行形式 --nodeid=#
    数値
    デフォルト値 none

    バックアップが作成されたデータノードのノード ID を指定します。

    バックアップが作成されたものとは異なる数のデータノードを持つクラスタにリストアする場合、この情報は、特定のノードにリストアされるファイルの正しいセットを識別するのに役立ちます。 (このような場合、通常は複数のファイルを単一のデータノードに復元する必要があります。) 追加情報および例については、セクション23.4.23.2「異なる数のデータノードへの復元」を参照してください。

    NDB 8.0.15 以降では、このオプションは必須です。

  • --num-slices=#

    コマンド行形式 --num-slices=#
    導入 8.0.20-ndb-8.0.20
    Integer
    デフォルト値 1
    最小値 1
    最大値 1024

    スライスごとにバックアップを復元する場合、このオプションはバックアップを分割するスライスの数を設定します。 これにより、ndb_restore の複数のインスタンスで非結合サブセットをパラレルにリストアできるため、リストア操作の実行に必要な時間が短縮される可能性があります。

    スライスは、特定のバックアップ内のデータのサブセットです。つまり、--slice-id オプションを使用して指定された同じスライス ID を持つフラグメントのセットです。 2 つのオプションは常に一緒に使用する必要があり、--slice-id によって設定される値は常にスライスの数より小さくする必要があります。

    ndb_restore はフラグメントを検出し、各フラグメントにフラグメントカウンタを割り当てます。 スライスごとに復元する場合、スライス ID は各フラグメントに割り当てられます。このスライス ID は、スライスの数より 0 から 1 の範囲内にあります。 BLOB テーブルではないテーブルの場合、特定のフラグメントが属するスライスは、次に示す式を使用して決定されます:

    [slice_ID] = [fragment_counter] % [number_of_slices]

    BLOB テーブルの場合、フラグメントカウンタは使用されず、かわりにフラグメント番号が BLOB テーブルのメインテーブルの ID とともに使用されます (NDB では BLOB 値が内部的に別のテーブルに格納されることに注意してください)。 この場合、特定のフラグメントのスライス ID は次のように計算されます:

    [slice_ID] =
    ([main_table_ID] + [fragment_ID]) % [number_of_slices]

    したがって、N スライスによるリストアとは、ndb_restoreN インスタンスを実行し、すべて --num-slices= N (およびその他の必要なオプション) を使用し、それぞれに --slice-id=1, --slice-id=2, --slice-id=3 を使用して slice-id= N-1 を介して実行することです。

    例.  各データノードのノードファイルシステム上のデフォルトディレクトリ/var/lib/mysql-cluster/BACKUP/BACKUP-3 にある BACKUP-1 という名前のバックアップを、ノード ID 1、2、3、および 4 を持つ 4 つのデータノードを持つクラスタに復元するとします。 5 つのスライスを使用してこの操作を実行するには、次のリストに示す一連のコマンドを実行します:

    1. 次に示すように、ndb_restore を使用してクラスタメタデータをリストアします:

      shell> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups
    2. 次に示すように、ndb_restore を起動するデータノードにクラスタデータを復元します:

      shell> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      shell> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      shell> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      shell> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      shell> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

      クラスタへの接続に十分なスロットがある場合は、このステップで示したすべてのコマンドをパラレルで実行できます (--backup-path オプションの説明を参照)。

    3. 次に示すように、通常どおりにインデックスをリストアします:

      shell> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
    4. 最後に、次に示すコマンドを使用してエポックをリストアします:

      shell> ndb_restore -b 1 -n 1 --restore-epoch --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1

    スライスは、クラスタデータのリストアにのみ使用する必要があります。メタデータ、インデックスまたはエポック情報のリストア時に --num-slices または --slice-id を使用する必要はありません。 これらの復元を制御する ndb_restore オプションとともにこれらのオプションの一方または両方が使用されている場合、プログラムはそれらを無視します。

    --parallelism オプションを使用したリストア速度への影響は、ndb_restore の複数のインスタンスを使用したスライスまたはパラレルリストアによって生成されるものとは無関係です (--parallelismsingle ndb_restore スレッドによって実行されるパラレルトランザクションの数を指定します)。ただし、これらのいずれかまたは両方とともに使用できます。 --parallelism を増やすと、ndb_restore のクラスタに大きな負荷がかかることに注意してください。システムでこれを処理できる場合は、リストアをさらに迅速に完了する必要があります。

    --num-slices の値は、CPU または CPU コアの数、RAM の量などのハードウェアに関連する値に直接依存することはなく、LDM の数にも依存しません。

    同じリストアの一部として、異なるデータノードでこのオプションに異なる値を使用することもできます。そうしないと、それ自体で悪影響が生じることはありません。

  • --parallelism=#, -p

    コマンド行形式 --parallelism=#
    数値
    デフォルト値 128
    最小値 1
    最大値 1024

    ndb_restore では、単一行トランザクションを使用して多数の行を同時に適用します。 このパラメータは、ndb_restore のインスタンスが使用しようとするパラレルトランザクション (同時行) の数を決定します。 デフォルトでは、これは 128 であり、最小値は 1、最大値は 1024 です。

    挿入を実行する作業は、関係するデータノード内のスレッド間で並列化されます。 このメカニズムは、.Data ファイル (データのファジースナップショット) からバルクデータをリストアするために使用されます。インデックスの作成または再構築には使用されません。 変更ログはシリアルに適用されます。インデックスの削除および構築は DDL 操作であり、個別に処理されます。 リストアのクライアント側にスレッドレベルの並列性はありません。

  • --preserve-trailing-spaces, -P

    コマンド行形式 --preserve-trailing-spaces

    固定幅文字データ型を同等の可変幅に昇格させるとき、つまり CHAR カラム値を VARCHAR に昇格させるとき、または BINARY カラム値を VARBINARY に昇格させるときに、末尾の空白が保持されるようにします。 それ以外の場合は、新しいカラムに挿入されるときに、末尾の空白はそのようなカラム値から削除されます。

    注記

    CHAR カラムを VARCHAR に、および BINARY カラムを VARBINARY に昇格することはできますが、VARCHAR カラムを CHAR に、または VARBINARY カラムを BINARY に昇格することはできません。

  • --print

    コマンド行形式 --print
    Boolean
    デフォルト値 FALSE

    ndb_restore がすべてのデータ、メタデータ、およびログを stdout に出力します。 --print-data--print-meta および --print-log オプションを一緒に使用することと同等です。

    注記

    --print または --print_* オプションのいずれかを使用した場合は、仮実行をするときに有効になります。 これらのオプションのいずれかまたは複数を含めると、すべての出力が stdout にリダイレクトされます。このような場合、ndb_restore は NDB Cluster にデータまたはメタデータを復元しようとしません。

  • --print-data

    コマンド行形式 --print-data
    Boolean
    デフォルト値 FALSE

    ndb_restore がその出力を stdout に送信するようにします。 多くの場合、1 つ以上の --tab, --fields-enclosed-by, --fields-optionally-enclosed-by, --fields-terminated-by, --hex および --append とともに使用されます。

    TEXT および BLOB カラム値は常に切り捨てられます。 このような値は、出力の最初の 256 バイトに切り捨てられます。 現在、--print-data を使用している場合はオーバーライドできません。

  • --print-log

    コマンド行形式 --print-log
    Boolean
    デフォルト値 FALSE

    ndb_restore がログを stdout に出力するようにします。

  • --print-meta

    コマンド行形式 --print-meta
    Boolean
    デフォルト値 FALSE

    すべてのメタデータを stdout に出力します。

  • print-sql-log

    コマンド行形式 --print-sql-log
    Boolean
    デフォルト値 FALSE

    SQL ステートメントを stdout に記録します。 オプションを使用して有効にします。通常、この動作は無効になっています。 このオプションは、リストアされるすべてのテーブルに主キーが明示的に定義されているかどうかをログに記録する前にチェックします。NDB によって実装された非表示の主キーのみを持つテーブルに対するクエリーは、有効な SQL に変換できません。

    このオプションは、BLOB カラムを含むテーブルでは機能しません。

  • --progress-frequency=N

    コマンド行形式 --progress-frequency=#
    数値
    デフォルト値 0
    最小値 0
    最大値 65535

    バックアップの進行中に、ステータスレポートを N 秒ごとに出力します。0 (デフォルト) を指定すると、ステータスレポートは出力されません。 最大値は 65535 です。

  • --promote-attributes, -A

    コマンド行形式 --promote-attributes

    ndb_restore では、MySQL レプリケーションでサポートされているのとほぼ同じ方法で限定された属性プロモーションがサポートされます。つまり、特定のタイプのカラムからバックアップされたデータは、通常、「大規模、類似」タイプを使用してカラムにリストアできます。 たとえば、CHAR(20) カラムのデータは VARCHAR(20)VARCHAR(30)、または CHAR(30) として宣言されているカラムにリストアでき、MEDIUMINT カラムのデータは、INT または BIGINT 型のカラムにリストアできます。 属性昇格によって現在サポートされる型変換の表については、セクション17.5.1.9.2「データ型が異なるカラムのレプリケーション」を参照してください。

    ndb_restore による属性昇格は、次のように明示的に有効にする必要があります。

    1. バックアップをリストアするテーブルを準備します。ndb_restore を使用してオリジナルと異なる定義でテーブルを再作成することはできません。これは、テーブルを手動で作成するか、またはテーブルメタデータをリストアしたあとかつデータをリストアする前に昇格するカラムを ALTER TABLE を使用して変更する必要があることを意味します。

    2. テーブルデータをリストアするときに、--promote-attributes オプション (短縮形: -A) を指定してndb_restore を呼び出します。 このオプションを使用しない場合、属性昇格は行われず、リストア操作がエラーで失敗します。

    文字データ型と TEXT または BLOB の間で変換する場合は、文字型 (CHAR および VARCHAR) とバイナリ型 (BINARY および VARBINARY) の間の変換のみを同時に実行できます。 たとえば、同じ ndb_restore 呼び出しで、VARCHAR カラムを TEXT に昇格するときに、INT カラムを BIGINT に昇格できません。

    異なる文字セットを使用した TEXT カラム間の変換はサポートされておらず、明示的には許可されません。

    ndb_restore を使用して文字型またはバイナリ型から TEXT または BLOB への変換を実行するときに、table_name$STnode_id という名前の 1 つ以上のステージングテーブルが作成および使用されることに気付くことがあります。 これらのテーブルはその後必要ではなくなるため、通常はリストアが成功したあとに ndb_restore によって削除されます。

  • --rebuild-indexes

    コマンド行形式 --rebuild-indexes

    ネイティブ NDB バックアップのリストア中に、順序付けられたインデックスのマルチスレッド再構築を有効にします。 このオプションを使用して ndb_restore によって順序付けられたインデックスを構築するために使用されるスレッドの数は、BuildIndexThreads データノード構成パラメータと LDM の数によって制御されます。

    このオプションを使用する必要があるのは、ndb_restore の最初の実行の場合のみです。これにより、以降のノードをリストアするときに --rebuild-indexes をふたたび使用しなくても、すべての順序付けられたインデックスが再構築されます。 このオプションはデータベースに新しい行を挿入する前に使用してください。そうしないと、インデックスを再構築しようとするときに、挿入される行があとで一意制約違反になることがあります。

    順序付けされたインデックスの構築は、デフォルトで LDM の数で並列化されます。 ノードおよびシステムの再起動中に実行されるオフラインインデックス構築は、BuildIndexThreads データノード構成パラメータを使用して高速化できます。このパラメータは、オンラインで実行される ndb_restore によるインデックスの削除および再構築には影響しません。

    一意インデックスの再構築では、Redo ロギングおよびローカルチェックポイント処理のディスク書き込み帯域幅が使用されます。 この帯域幅が十分ではない場合、Redo バッファーオーバーロードエラーまたはログオーバーロードエラーになることがあります。 そのような場合は、ndb_restore --rebuild-indexes を再度実行できます。この処理はエラーが発生した箇所から再開されます。 これは、一時エラーが発生した場合にも実行できます。 ndb_restore --rebuild-indexes の実行は無期限に繰り返すことができます。このようなエラーは、--parallelism の値を減らすことで停止できる場合があります。 領域不足の場合は、redo ログのサイズ (FragmentLogFileSize ノード構成パラメータ) を増やすか、LCP の実行速度 (MaxDiskWriteSpeed および関連パラメータ) を上げて領域をより迅速に解放できます。

  • --remap-column=db.tbl.col:fn:args

    コマンド行形式 --remap-column=[db].[tbl].[col]:[fn]:[args]
    導入 8.0.21-ndb-8.0.21
    文字列
    デフォルト値 [none]

    このオプションを --restore-data とともに使用すると、示されたカラムの値に関数が適用されます。 引数文字列の値を次に示します:

    • db: --rewrite-database によって実行された名前の変更後のデータベース名。

    • tbl: テーブル名。

    • col: 更新するカラムの名前。 このカラムのタイプは、INT または BIGINT である必要があります。 カラムは UNSIGNED でもかまいませんが、必須ではありません。

    • fn: 関数名。現在サポートされている名前は offset のみです。

    • args: 関数に渡される引数。 現在、offset 関数によって追加されるオフセットのサイズである単一の引数のみがサポートされています。 負の値がサポートされています。 引数のサイズは、カラムタイプの符号付きバリアントのサイズを超えることはできません。たとえば、colINT カラムの場合、offset 関数に渡される引数の許容範囲は -2147483648 から 2147483647 (セクション11.1.2「整数型 (真数値) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT」 を参照) です。

      オフセット値をカラムに適用すると、オーバーフローまたはアンダーフローが発生する場合、リストア操作は失敗します。 これは、たとえば、カラムが BIGINT で、4294967291 + 8 = 4294967299 > 4294967295 以降、カラム値が 4294967291 である行にオフセット値 8 を適用しようとした場合に発生する可能性があります。

    このオプションは、NDB ネイティブバックアップ (セクション23.5.8.2「NDB Cluster 管理クライアントを使用したバックアップの作成」 を参照) と ndb_restore を使用してデータをマージし、主キーと一意キーの値がソースクラスタ間で重複しており、これらの値を重複しない範囲に再マップするプロセスの一環として、NDB Cluster の複数のソースインスタンスに格納されているデータを単一の宛先 NDB Cluster にマージする場合に役立ちます。 テーブル間の他の関係を保持する必要がある場合もあります。 このような要件を満たすために、次に示すように、ndb_restore の同じ起動でオプションを複数回使用して、異なるテーブルのカラムを再マップできます:

    shell> ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \
        --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000

    (ここに示されていない他のオプションも使用できます。)

    --remap-column を使用して、同じテーブルの複数のカラムを更新することもできます。 複数のテーブルとカラムの組合せが可能です。 次のように、同じテーブルの異なるカラムに異なるオフセット値を使用することもできます:

    shell> ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \
        --remap-column=hr.employee.hours:offset:-10

    マージしない重複テーブルがソースバックアップに含まれている場合は、--exclude-tables--exclude-databases またはアプリケーション内の他の方法を使用してこれを処理できます。

    マージされるテーブルの構造およびその他の特性に関する情報は、SHOW CREATE TABLEndb_desc ツール、MAX(), MIN(), LAST_INSERT_ID() およびその他の MySQL 関数を使用して取得できます。

    NDB Cluster の個別のインスタンスで、マージされたテーブルからマージされていないテーブル、またはマージされていないテーブルからマージされたテーブルへの変更のレプリケーションはサポートされていません。

  • --restore-data, -r

    コマンド行形式 --restore-data
    Boolean
    デフォルト値 FALSE

    NDB テーブルのデータおよびログを出力します。

  • --restore-epoch, -e

    コマンド行形式 --restore-epoch

    エポック情報をクラスタレプリケーションステータステーブルに追加 (またはリストア) します。 これは NDB Cluster レプリカでレプリケーションを開始する場合に役立ちます。 このオプションを使用すると、id カラムが 0 である mysql.ndb_apply_status 内の行が更新されます (存在する場合)。存在しない場合はそのような行が挿入されます (セクション23.6.9「NDB Cluster レプリケーションによる NDB Cluster バックアップ」を参照してください。)

  • --restore-meta, -m

    コマンド行形式 --restore-meta
    Boolean
    デフォルト値 FALSE

    このオプションを指定すると、ndb_restoreNDB テーブルメタデータを出力します。

    ndb_restore リストアプログラムを最初に実行するときは、メタデータもリストアする必要があります。 つまり、データベーステーブルを再作成する必要があります。これは、--restore-meta (-m) オプションを指定して実行することで実行できます。 メタデータのリストアは、単一のデータノードでのみ実行する必要があります。これは、クラスタ全体にリストアするのに十分です。

    古いバージョンの NDB Cluster では、このオプションを使用してスキーマが復元されたテーブルは、新しいクラスタとは異なる数のデータノードがあった場合でも、元のクラスタと同じ数のパーティションを使用していました。 NDB 8.0 では、メタデータを復元するときにこれは問題ではなくなりました。ローカルデータマネージャースレッドの数も元のクラスタ内のデータノードの数から変更されないかぎり、ndb_restore はターゲットクラスタのデフォルトのパーティション数を使用するようになりました。

    NDB 8.0.16 以降でこのオプションを使用する場合は、ndb_restore がメタデータの復元を完了するまで ndb_metadata_check=OFF を設定して自動同期を無効にすることをお勧めします。その後、NDB ディクショナリに新しく作成されたオブジェクトを同期するために再度有効にすることができます。

    注記

    バックアップのリストアを開始する場合、クラスタには空のデータベースが必要です。 (つまり、リストアを実行する前に、--initial を使用してデータノードを起動する必要があります。)

  • --restore-privilege-tables

    コマンド行形式 --restore-privilege-tables
    非推奨 8.0.16-ndb-8.0.16
    Boolean
    デフォルト値 FALSE (オプションを使用しない場合)

    ndb_restore は、NDB 7.6 以前で実装されている分散特権をサポートしていない、バージョン 8.0 より前の NDB Cluster のリリースで作成された分散 MySQL 特権テーブルをデフォルトで復元しません。 このオプションを選択すると、ndb_restore によってリストアされます。

    NDB 8.0.16 以降では、このようなテーブルはアクセス制御に使用されません。MySQL サーバーのアップグレードプロセスの一環として、サーバーはこれらのテーブルの InnoDB コピーをそれ自体に対してローカルに作成します。 詳細は、セクション23.2.7「NDB Cluster のアップグレードおよびダウングレード」 および セクション6.2.3「付与テーブル」 を参照してください。

  • --rewrite-database=olddb,newdb

    コマンド行形式 --rewrite-database=olddb,newdb
    文字列
    デフォルト値 none

    このオプションを指定すると、バックアップに使用された名前と異なる名前を持つデータベースにリストアできます。 たとえば、バックアップが products という名前のデータベースから作成された場合は、このオプションを次のように使用して (必要となる可能性があるほかのオプションを省略しています)、含まれているデータを inventory という名前のデータベースにリストアできます。

    shell> ndb_restore --rewrite-database=product,inventory

    このオプションは、ndb_restore の単一呼び出しで複数回指定できます。 このため、--rewrite-database=db1,db2 --rewrite-database=db3,db4 を使用して、db1 という名前のデータベースから db2 という名前のデータベースに、および db3 という名前のデータベースから db4 という名前のデータベースに同時にリストアできます。 複数の --rewrite-database 発生箇所の間にほかの ndb_restore オプションを指定できます。

    複数の --rewrite-database オプションで競合が発生した場合は、左から右に読んで最後に使用されている --rewrite-database オプションが有効となります。 たとえば、--rewrite-database=db1,db2 --rewrite-database=db1,db3 が使用された場合、--rewrite-database=db1,db3 のみが有効となり、--rewrite-database=db1,db2 は無視されます。 複数のデータベースから単一データベースにリストアすることもできるため、--rewrite-database=db1,db3 --rewrite-database=db2,db3 を指定すると、データベース db1 および db2 のすべてのテーブルおよびデータがデータベース db3 にリストアされます。

    重要

    --rewrite-database を使用して複数のバックアップデータベースから単一ターゲットデータベースにリストアする場合、テーブル名またはその他のオブジェクト名間の競合はチェックされず、行がリストアされる順序は保証されません。 これは、そのような場合に行が上書きされて更新が失われることがあることを意味します。

  • --skip-broken-objects

    コマンド行形式 --skip-broken-objects

    このオプションを指定すると、ndb_restore がネイティブ NDB バックアップを読み取るときに破損しているテーブルを無視して、残りのテーブル (破損していない) のリストアを続行します。 現在のところ、--skip-broken-objects オプションは BLOB パーツテーブルが欠けている場合にのみ機能します。

  • --skip-table-check, -s

    コマンド行形式 --skip-table-check

    テーブルメタデータをリストアせずにデータをリストアできます。 デフォルトでは、テーブルデータとテーブルスキーマの間に不一致が見つかった場合、ndb_restore はエラーで失敗します。このオプションはその動作をオーバーライドします。

    ndb_restore を使用してデータをリストアするときのカラム定義内の不一致に関する制限の一部が緩和されています。それらのタイプの不一致のいずれかが発生しても、ndb_restore は以前のようにエラーで停止しなくなり、代わりにデータを受け入れてターゲットテーブルに挿入し、これが行われているという警告をユーザーに発行します。 この動作は、--skip-table-check オプションまたは --promote-attributes オプションが使用されているかどうかにかかわらず、実行されます。 カラム定義でのこれらの違いには次のタイプがあります。

    • 異なる COLUMN_FORMAT 設定 (FIXEDDYNAMICDEFAULT)

    • 異なる STORAGE 設定 (MEMORYDISK)

    • 異なるデフォルト値

    • 異なる配布キー設定

  • --skip-unknown-objects

    コマンド行形式 --skip-unknown-objects

    このオプションを指定すると、ndb_restore がネイティブ NDB バックアップを読み取るときに、認識されないスキーマオブジェクトを無視します。 これは、NDB 7.6 を実行しているクラスタから NDB Cluster 7.5 を実行しているクラスタに作成されたバックアップを復元するために使用できます。

  • --slice-id=#

    コマンド行形式 --slice-id=#
    導入 8.0.20-ndb-8.0.20
    Integer
    デフォルト値 0
    最小値 0
    最大値 1023

    スライスで復元する場合、これは復元するスライスの ID です。 このオプションは常に --num-slices とともに使用され、その値は常に --num-slices の値より小さくする必要があります。

    詳細は、このセクションの他の場所にある --num-slices の説明を参照してください。

  • --tab=dir_name, -T dir_name

    コマンド行形式 --tab=dir_name
    ディレクトリ名

    --print-data がダンプファイルをテーブルごとに作成し、それぞれに tbl_name.txt という名前を付けます。 ファイルを保存すべきディレクトリへのパスを引数が必要です。現在のディレクトリの場合は . を使用します。

  • --verbose=#

    コマンド行形式 --verbose=#
    数値
    デフォルト値 1
    最小値 0
    最大値 255

    出力の冗長性のレベルを設定します。 最小値は 0 であり、最大値は 255 です。 デフォルト値は 1 です。

エラー報告.  ndb_restore は一時的および永続的エラーの両方を報告します。 一時エラーの場合は、それらからリカバリできる場合があり、そのようなときには「Restore successful, but encountered temporary error, please look at configuration」と報告されます。

重要

ndb_restore を使用して循環レプリケーションで使用する NDB Cluster を初期化したあと、レプリカとして機能する SQL ノード上のバイナリログは自動的に作成されないため、手動で作成する必要があります。 バイナリログを作成させるには、START SLAVE を実行する前に、その SQL ノードで SHOW TABLES ステートメントを発行します。 これは NDB Cluster の既知の問題です。