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
形式 | 説明 | 追加、非推奨、または削除された |
---|---|---|
テーブルの主キーを構成するカラムセットの変更を許可 | 追加: NDB 8.0.21 |
|
タブ区切りファイルへのデータの追加 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
--decrypt を使用して暗号化バックアップを復号化するためのパスワードを指定します。許可される値については、ドキュメントを参照してください | 追加: NDB 8.0.22 |
|
バックアップファイルディレクトリへのパス | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
この ID を持つバックアップからのリストア | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
--connectstring のエイリアス | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
暗号化バックアップを復号化します。--backup-password が必要です | 追加: NDB 8.0.22 |
|
バックアップからのインデックスが無視されます。データのリストアに必要な時間が短縮される可能性があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
リストア中はシステムテーブルを無視しないでください。実験のみで、本番での使用には使用しません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
1 つ以上の除外するデータベースのリスト (指定されていないものを含めます) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
TRUE (デフォルト) の場合、ALTER TABLE 操作のコピーから残された中間テーブル (接頭辞'#sql-'が付いた名前) をリストアしません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データベースのテーブルのバージョンから欠落しているテーブルのバックアップバージョンのカラムは無視されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データベースから欠落しているバックアップからのテーブルは無視されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
除外する 1 つ以上のテーブルのリスト (名前のない同じデータベース内のテーブルを含む)。各テーブル参照にはデータベース名が含まれている必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
フィールドはこの文字で囲まれています | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
フィールドはオプションでこの文字で囲まれます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
フィールドはこの文字で終了 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バイナリタイプを 16 進形式で出力します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
現在拡張主キーに含まれているカラムの更新を含むログエントリを無視 | 追加: NDB 8.0.21 |
|
1 つ以上のリストアするデータベースのリスト (指定されていないものを除外します) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
共有ユーザーおよび権限を ndb_sql_metadata テーブルにリストア | 追加: NDB 8.0.19 |
|
リストアする 1 つ以上のテーブルのリスト (名前のない同じデータベース内のテーブルを除く)。各テーブル参照にはデータベース名を含める必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
行はこの文字で終了 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バックアップからデータをリストアするときに、カラム値の不可逆変換 (型の昇格または符号の変更) を許可します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
mysqld が接続され、バイナリロギングを使用している場合は、復元されたデータをログに記録しません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ディスクデータに関連するオブジェクトをリストアしません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
VAR データがまだサイズ変更されていない可変サイズ属性の配列タイプをアップグレードせず、カラム属性を変更しません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
NDBCLUSTER ストレージエンジンのノードグループマップ;構文: リスト (source_nodegroup、destination_nodegroup) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バックアップが作成されたノードの ID | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
スライスごとの復元時に適用するスライスの数 | 追加: NDB 8.0.20 |
|
データのリストア中に使用する並列トランザクションの数 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
固定幅文字列型を可変幅型に昇格するときに、末尾の空白 (パディングを含む) を維持することを許可します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
メタデータ、データおよびログを stdout に出力します (--print-meta --print-data --print-log と同等) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データを stdout に出力します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
stdout へのログの出力 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
メタデータを stdout に出力します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
SQL ログを stdout に書き込みます。デフォルトは FALSE です | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
指定された秒数ごとに復元のステータスを出力 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バックアップからデータをリストアするときに、属性の昇格を許可します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バックアップで見つかった順序付けられたインデックスをマルチスレッドで再構築します。使用されるスレッドの数は、BuildIndexThreads の設定によって決定されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
指定された関数および引数を使用して、指定されたカラムの値にオフセットを適用 | 追加: NDB 8.0.21 |
|
NDB API を使用してテーブルデータを復元し、NDB Cluster にログイン | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
エポック情報をステータステーブルにリストアします。レプリカクラスタでレプリケーションを開始する場合に役立ちます。ID 0 の mysql.ndb_apply_status の行を更新または挿入 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
NDB API を使用した NDB Cluster へのメタデータの復元 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
以前 NDB に移動された MySQL 権限テーブルをリストアします | 非推奨: NDB 8.0.16 |
|
別の名前のデータベースへのリストア | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
バックアップファイルで欠落している BLOB テーブルを無視 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
リストア中にテーブル構造チェックをスキップ | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
新しい NDB バージョンから古いバージョンにバックアップを復元するときに、ndb_restore で認識されないスキーマオブジェクトを無視 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
スライス ID(スライス別に復元する場合) | 追加: NDB 8.0.20 |
|
指定されたパスのテーブルごとにタブ区切りの .txt ファイルを作成 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
出力の冗長性レベル | (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_restore
は localhost: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[=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 でサポートされている他のスキーマの違いと組み合せることができます。
主キースキーマの変更を使用する一般的なシナリオの基本ステップを次に示します:
ndb_restore
--restore-meta
を使用したテーブルスキーマのリストア必要なスキーマに変更するか、スキーマを作成
目的のスキーマのバックアップ
前のステップのバックアップを使用して ndb_restore
--disable-indexes
を実行し、インデックスおよび制約を削除ndb_restore
--allow-pk-changes
を (--ignore-extended-pk-updates
、--disable-indexes
および必要に応じてその他のオプションとともに) 実行して、すべてのデータをリストア目的のスキーマで作成されたバックアップを使用して ndb_restore
--rebuild-indexes
を実行し、インデックスおよび制約を再構築
主キーを拡張する場合、リストア操作中に ndb_restore で一時セカンダリ一意インデックスを使用して、古い主キーから新しい主キーにマップする必要がある場合があります。 このようなインデックスは、バックアップログから拡張主キーを持つテーブルにイベントを適用する必要がある場合にのみ作成されます。 このインデックスは
NDB$RESTORE_PK_MAPPING
という名前で、それを必要とする各テーブルに作成されます。必要に応じて、パラレルで実行されている ndb_restore インスタンスの複数のインスタンスで共有できます。 (リストアプロセスの最後に ndb_restore--rebuild-indexes
を実行すると、このインデックスは削除されます。) -
-
コマンド行形式 --append
--tab
および--print-data
オプションとともに使用すると、同じ名前の既存のファイルにデータが追加されます。 -
コマンド行形式 --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=string
導入 8.0.22-ndb-8.0.22 型 文字列 デフォルト値 [none]
このオプションは、
--decrypt
オプションを使用して暗号化バックアップを復号化するときに使用するパスワードを指定します。 これは、バックアップの暗号化に使用されたパスワードと同じである必要があります。パスワードは 256 文字以内で、一重引用符または二重引用符で囲む必要があります。 文字コード 32、35、38、40-91、93、95 および 97-126 を持つ ASCII 文字を含めることができます。つまり、
!
,'
,"
,$
,%
,\
および^
以外の印刷可能な ASCII 文字を使用できます。 -
コマンド行形式 --backupid=#
型 数値 デフォルト値 none
このオプションは、バックアップの ID または順序番号を指定するために使用され、バックアップの完了時に表示される
Backup
メッセージに管理クライアントによって表示される番号と同じです。 (セクション23.5.8.2「NDB Cluster 管理クライアントを使用したバックアップの作成」を参照してください。)backup_id
completed重要クラスタバックアップをリストアするときは、同じバックアップ ID を持つバックアップからすべてのデータノードをリストアする必要があります。 異なるバックアップのファイルを使用すると、クラスタが一貫性のない状態にリストアされ、完全に失敗する可能性があります。
NDB 8.0.15 以降では、このオプションは必須です。
-
コマンド行形式 --connect
型 文字列 デフォルト値 localhost:1186
--ndb-connectstring
のエイリアス。 -
コマンド行形式 --decrypt
導入 8.0.22-ndb-8.0.22 --backup-password
オプションで指定されたパスワードを使用して、暗号化バックアップを復号化します。 -
コマンド行形式 --disable-indexes
ネイティブ
NDB
バックアップからのデータのリストア中にインデックスのリストアを無効にします。 その後、--rebuild-indexes
を使用してマルチスレッドでインデックスを作成することで、すべてのテーブルのインデックスを一度にリストアできます。これは、非常に大きなテーブルのインデックスを同時に再構築するより高速である必要があります。 -
コマンド行形式 --dont-ignore-systab-0
通常、テーブルデータおよびメタデータをリストアする場合、ndb_restore は、バックアップに存在する
NDB
システムテーブルのコピーを無視します。--dont-ignore-systab-0
により、システムテーブルがリストアされます。 このオプションは、実験および開発での使用のみが意図されており、本番環境には推奨されていません。 -
コマンド行形式 --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
このオプションを使用して、選択したテーブルのカラムのみをリストアできます。これにより、ndb_restore は、バックアップで見つかったテーブルのバージョンと比較して、リストアされるテーブルから欠落しているカラムを無視します。 このオプションはリストアされるすべてのテーブルに適用されます。 このオプションを選択したテーブルまたはデータベースにのみ適用する場合は、このセクションの他の場所で説明されている
--include-*
または--exclude-*
のオプションと組み合せて使用し、これらのオプションの補完セットを使用して残りのテーブルにデータをリストアできます。 -
コマンド行形式 --exclude-missing-tables
このオプションを使用して、選択したテーブルのみをリストアできます。これにより、ndb_restore は、ターゲットデータベースで見つからないバックアップのテーブルを無視します。
-
コマンド行形式 --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 がデータベース
db1
のdb1.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-optionally-enclosed-by
の説明を参照)。 -
--fields-optionally-enclosed-by
コマンド行形式 --fields-optionally-enclosed-by
型 文字列 デフォルト値 このオプションに渡された文字列は、文字データが含まれているカラム値 (
CHAR
、VARCHAR
、BINARY
、TEXT
、ENUM
など) を囲むために使用されます。 -
コマンド行形式 --fields-terminated-by=char
型 文字列 デフォルト値 \t (tab)
このオプションに渡された文字列は、カラム値を区切るために使用されます。 デフォルト値はタブ文字 (
\t
) です。 -
コマンド行形式 --hex
このオプションを使用すると、すべてのバイナリ値は 16 進形式で出力されます。
-
コマンド行形式 --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-updates
を1
に設定して、ndb_restore でこのような更新を強制的に無視できます。重要これらの更新を無視する場合、ユーザーは主キーの一部になるカラムの値に対する更新がないことを確認する必要があります。
詳細は、
--allow-pk-changes
の説明を参照してください。 -
コマンド行形式 --include-databases=db-list
型 文字列 デフォルト値 リストアする 1 つ以上のデータベースのカンマ区切りリスト。 多くの場合、
--include-tables
とともに使用されます。詳細および例は、そのオプションの説明を参照してください。 -
コマンド行形式 --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-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
のみがリストアされます。db1
、db2
、またはその他のデータベース内のほかのテーブルはリストアされませんこれらの 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
型 文字列 デフォルト値 \n (linebreak)
出力の各行を終了するために使用する文字列を指定します。 デフォルトは改行文字 (
\n
) です。 -
コマンド行形式 --lossy-conversions
型 Boolean デフォルト値 FALSE
(オプションを使用しない場合)このオプションは、
--promote-attributes
オプションを補完することを意図しています。--lossy-conversions
を使用するときは、バックアップからデータをリストアするときにカラム値の不可逆変換 (型降格または符号の変更) が許可されます。 いくつかの例外はありますが、降格を制御するルールは MySQL レプリケーションの場合と同じです。属性降格によって現在サポートされる型変換については、セクション17.5.1.9.2「データ型が異なるカラムのレプリケーション」を参照してください。ndb_restore は、不可逆変換中に実行されるデータの切り捨てを属性およびカラムごとに報告します。
-
コマンド行形式 --no-binlog
このオプションは、接続されている SQL ノードが ndb_restore によってリストアされるデータをバイナリログに書き込むことを阻止します。
-
コマンド行形式 --no-restore-disk-objects
型 Boolean デフォルト値 FALSE
このオプションは、ndb_restore による NDB Cluster ディスクデータオブジェクト (テーブルスペースやログファイルグループなど) の復元を停止します。これらの詳細は、セクション23.5.10「NDB Cluster ディスクデータテーブル」 を参照してください。
-
コマンド行形式 --no-upgrade
ndb_restore を使用してバックアップをリストアする場合、古い固定長形式を使用して作成された
VARCHAR
カラムは、現在採用されている可変幅形式を使用してサイズ変更および再作成されます。 この動作は、--no-upgrade
を指定することでオーバーライドできます。 -
コマンド行形式 --ndb-nodegroup-map=map
このオプションは、あるノードグループから取得されたバックアップを別のノードグループにリストアするために使用できます。 引数は、
という形式のリストです。source_node_group
,target_node_group
-
コマンド行形式 --nodeid=#
型 数値 デフォルト値 none
バックアップが作成されたデータノードのノード ID を指定します。
バックアップが作成されたものとは異なる数のデータノードを持つクラスタにリストアする場合、この情報は、特定のノードにリストアされるファイルの正しいセットを識別するのに役立ちます。 (このような場合、通常は複数のファイルを単一のデータノードに復元する必要があります。) 追加情報および例については、セクション23.4.23.2「異なる数のデータノードへの復元」を参照してください。
NDB 8.0.15 以降では、このオプションは必須です。
-
コマンド行形式 --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_restore のN
インスタンスを実行し、すべて--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 つのスライスを使用してこの操作を実行するには、次のリストに示す一連のコマンドを実行します:-
次に示すように、ndb_restore を使用してクラスタメタデータをリストアします:
shell> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups
-
次に示すように、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
オプションの説明を参照)。 -
次に示すように、通常どおりにインデックスをリストアします:
shell> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
-
最後に、次に示すコマンドを使用してエポックをリストアします:
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 の複数のインスタンスを使用したスライスまたはパラレルリストアによって生成されるものとは無関係です (--parallelism
は single ndb_restore スレッドによって実行されるパラレルトランザクションの数を指定します)。ただし、これらのいずれかまたは両方とともに使用できます。--parallelism
を増やすと、ndb_restore のクラスタに大きな負荷がかかることに注意してください。システムでこれを処理できる場合は、リストアをさらに迅速に完了する必要があります。--num-slices
の値は、CPU または CPU コアの数、RAM の量などのハードウェアに関連する値に直接依存することはなく、LDM の数にも依存しません。同じリストアの一部として、異なるデータノードでこのオプションに異なる値を使用することもできます。そうしないと、それ自体で悪影響が生じることはありません。
-
-
コマンド行形式 --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
型 Boolean デフォルト値 FALSE
ndb_restore がすべてのデータ、メタデータ、およびログを
stdout
に出力します。--print-data
、--print-meta
および--print-log
オプションを一緒に使用することと同等です。注記--print
または--print_*
オプションのいずれかを使用した場合は、仮実行をするときに有効になります。 これらのオプションのいずれかまたは複数を含めると、すべての出力がstdout
にリダイレクトされます。このような場合、ndb_restore は NDB Cluster にデータまたはメタデータを復元しようとしません。 -
コマンド行形式 --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
型 Boolean デフォルト値 FALSE
ndb_restore がログを
stdout
に出力するようにします。 -
コマンド行形式 --print-meta
型 Boolean デフォルト値 FALSE
すべてのメタデータを
stdout
に出力します。 -
コマンド行形式 --print-sql-log
型 Boolean デフォルト値 FALSE
SQL ステートメントを
stdout
に記録します。 オプションを使用して有効にします。通常、この動作は無効になっています。 このオプションは、リストアされるすべてのテーブルに主キーが明示的に定義されているかどうかをログに記録する前にチェックします。NDB
によって実装された非表示の主キーのみを持つテーブルに対するクエリーは、有効な SQL に変換できません。このオプションは、
BLOB
カラムを含むテーブルでは機能しません。 -
コマンド行形式 --progress-frequency=#
型 数値 デフォルト値 0
最小値 0
最大値 65535
バックアップの進行中に、ステータスレポートを
N
秒ごとに出力します。0 (デフォルト) を指定すると、ステータスレポートは出力されません。 最大値は 65535 です。 -
コマンド行形式 --promote-attributes
ndb_restore では、MySQL レプリケーションでサポートされているのとほぼ同じ方法で限定された属性プロモーションがサポートされます。つまり、特定のタイプのカラムからバックアップされたデータは、通常、「「大規模、類似」」タイプを使用してカラムにリストアできます。 たとえば、
CHAR(20)
カラムのデータはVARCHAR(20)
、VARCHAR(30)
、またはCHAR(30)
として宣言されているカラムにリストアでき、MEDIUMINT
カラムのデータは、INT
またはBIGINT
型のカラムにリストアできます。 属性昇格によって現在サポートされる型変換の表については、セクション17.5.1.9.2「データ型が異なるカラムのレプリケーション」を参照してください。ndb_restore による属性昇格は、次のように明示的に有効にする必要があります。
バックアップをリストアするテーブルを準備します。ndb_restore を使用してオリジナルと異なる定義でテーブルを再作成することはできません。これは、テーブルを手動で作成するか、またはテーブルメタデータをリストアしたあとかつデータをリストアする前に昇格するカラムを
ALTER TABLE
を使用して変更する必要があることを意味します。テーブルデータをリストアするときに、
--promote-attributes
オプション (短縮形:-A
) を指定してndb_restore を呼び出します。 このオプションを使用しない場合、属性昇格は行われず、リストア操作がエラーで失敗します。
文字データ型と
TEXT
またはBLOB
の間で変換する場合は、文字型 (CHAR
およびVARCHAR
) とバイナリ型 (BINARY
およびVARBINARY
) の間の変換のみを同時に実行できます。 たとえば、同じ ndb_restore 呼び出しで、VARCHAR
カラムをTEXT
に昇格するときに、INT
カラムをBIGINT
に昇格できません。異なる文字セットを使用した
TEXT
カラム間の変換はサポートされておらず、明示的には許可されません。ndb_restore を使用して文字型またはバイナリ型から
TEXT
またはBLOB
への変換を実行するときに、
という名前の 1 つ以上のステージングテーブルが作成および使用されることに気付くことがあります。 これらのテーブルはその後必要ではなくなるため、通常はリストアが成功したあとに ndb_restore によって削除されます。table_name
$STnode_id
-
コマンド行形式 --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
関数によって追加されるオフセットのサイズである単一の引数のみがサポートされています。 負の値がサポートされています。 引数のサイズは、カラムタイプの符号付きバリアントのサイズを超えることはできません。たとえば、col
がINT
カラムの場合、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 TABLE
、ndb_desc ツール、MAX()
,MIN()
,LAST_INSERT_ID()
およびその他の MySQL 関数を使用して取得できます。NDB Cluster の個別のインスタンスで、マージされたテーブルからマージされていないテーブル、またはマージされていないテーブルからマージされたテーブルへの変更のレプリケーションはサポートされていません。
-
コマンド行形式 --restore-data
型 Boolean デフォルト値 FALSE
NDB
テーブルのデータおよびログを出力します。 -
コマンド行形式 --restore-epoch
エポック情報をクラスタレプリケーションステータステーブルに追加 (またはリストア) します。 これは NDB Cluster レプリカでレプリケーションを開始する場合に役立ちます。 このオプションを使用すると、
id
カラムが0
であるmysql.ndb_apply_status
内の行が更新されます (存在する場合)。存在しない場合はそのような行が挿入されます (セクション23.6.9「NDB Cluster レプリケーションによる NDB Cluster バックアップ」を参照してください。) -
コマンド行形式 --restore-meta
型 Boolean デフォルト値 FALSE
このオプションを指定すると、ndb_restore が
NDB
テーブルメタデータを出力します。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
非推奨 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
このオプションを指定すると、ndb_restore がネイティブ
NDB
バックアップを読み取るときに破損しているテーブルを無視して、残りのテーブル (破損していない) のリストアを続行します。 現在のところ、--skip-broken-objects
オプションは BLOB パーツテーブルが欠けている場合にのみ機能します。 -
コマンド行形式 --skip-table-check
テーブルメタデータをリストアせずにデータをリストアできます。 デフォルトでは、テーブルデータとテーブルスキーマの間に不一致が見つかった場合、ndb_restore はエラーで失敗します。このオプションはその動作をオーバーライドします。
ndb_restore を使用してデータをリストアするときのカラム定義内の不一致に関する制限の一部が緩和されています。それらのタイプの不一致のいずれかが発生しても、ndb_restore は以前のようにエラーで停止しなくなり、代わりにデータを受け入れてターゲットテーブルに挿入し、これが行われているという警告をユーザーに発行します。 この動作は、
--skip-table-check
オプションまたは--promote-attributes
オプションが使用されているかどうかにかかわらず、実行されます。 カラム定義でのこれらの違いには次のタイプがあります。異なる
COLUMN_FORMAT
設定 (FIXED
、DYNAMIC
、DEFAULT
)異なる
STORAGE
設定 (MEMORY
、DISK
)異なるデフォルト値
異なる配布キー設定
-
コマンド行形式 --skip-unknown-objects
このオプションを指定すると、ndb_restore がネイティブ
NDB
バックアップを読み取るときに、認識されないスキーマオブジェクトを無視します。 これは、NDB 7.6 を実行しているクラスタから NDB Cluster 7.5 を実行しているクラスタに作成されたバックアップを復元するために使用できます。 -
コマンド行形式 --slice-id=#
導入 8.0.20-ndb-8.0.20 型 Integer デフォルト値 0
最小値 0
最大値 1023
スライスで復元する場合、これは復元するスライスの ID です。 このオプションは常に
--num-slices
とともに使用され、その値は常に--num-slices
の値より小さくする必要があります。詳細は、このセクションの他の場所にある
--num-slices
の説明を参照してください。 -
コマンド行形式 --tab=dir_name
型 ディレクトリ名 --print-data
がダンプファイルをテーブルごとに作成し、それぞれに
という名前を付けます。 ファイルを保存すべきディレクトリへのパスを引数が必要です。現在のディレクトリの場合はtbl_name
.txt.
を使用します。 -
コマンド行形式 --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 の既知の問題です。