sstableloader
クラスターへの外部データの一括読み込み、異なるノード数または異なるレプリケーション・ストラテジを持つ別のクラスターへの既存のSSTableの読み込み、およびスナップショットの復元を行います。
- 外部データをクラスターに一括で読み込む。
- ノードの数またはレプリケーション・ストラテジの異なるクラスターに既存のSSTableを読み込む。
- スナップショットを復元する。
sstableloaderは一連のSSTableデータ・ファイルを稼働中のクラスターにストリーミングします。一連のSSTableを各ノードに単にコピーするのではなく、クラスターのレプリケーション・ストラテジに合わせて、関連するデータ部分を各ノードに転送します。データの読み込み先のテーブルは空でなくてもかまいません。
- 必要に応じて、SSTableバージョンをDSEの最新バージョンに対応するバージョンにアップグレードします。
表 1. SSTableの互換性とアップグレード・バージョン DSEバージョン SSTableバージョン sstableloader サポートされているバージョン sstableupgrade およびnodetool upgradesstablesでサポートされているバージョン 4.0 jb jbのみ(アップグレードして読み込む必要があります) i*のみ 4.5 4.6 4.7 ka kaおよびjb j*のみ 4.8 5.0.x ma kaおよびma k*のみ 5.0.x mb ka、ma、およびmb kaおよびma 5.0.x mc ka、ma、mb、およびmc ka、ma、およびmb 5.1.x - 異なるクラスターに読み込まれたテーブルをリペアしても、ソース・テーブルはリペアされません。
始める前に
- sstableloaderにより読み込まれるソース・データは、SSTable内になければなりません。
- sstableloaderはストリーミング・プロトコルを使用するため、ポート7000(ストレージ・ポート)を介して各接続ノードに直接接続する必要があります。
SSTableの生成
sstableloaderを使用して外部データを読み込む場合は、まず外部データをSSTableに置く必要があります。
SSTableWriterは、クラスターに一括読み込みする生のデータ・ファイルをローカルで作成するAPIです。ソース・コードには、SSTableファイルを外部データから作成するためのCQLSSTableWriter実装が含まれています。この実装では、これらのファイルが基盤のストレージ・エンジンにどのようにマッピングされるかの詳細を理解する必要がありません。org.apache.cassandra.io.sstable.CQLSSTableWriterクラスをインポートし、インポートするデータのスキーマ、スキーマのライター、およびINSERTプリペアド・ステートメントを定義します。
DataStax Enterpriseスナップショットの復元
sstableloaderインポート用のスナップショットのプリペアに関する詳細については、「一元化されたバックアップからの復元」を参照してください。
既存のクラスターからのSSTableのインポート
既存のSSTableをインポートする前に、各ソース・ノードでnodetool flushを実行して、memtable内のデータがディスク上のSSTableに書き込まれるようにします。
ターゲット環境のプリペア
データを読み込む前に、CQLを使用してターゲット・テーブルのスキーマを定義する必要があります。
使用法
$ sstableloader -d host_url (,host_url ...)[options] path_to_keyspace
installation_location/resources/cassandra/bin
短いオプション | 長いオプション | 説明 |
---|---|---|
-alg | --ssl-alg <ALGORITHM> | クライアントSSLアルゴリズム(デフォルト:SunX509)。 |
-ap | --auth-provider <auth provider class name> | サード・パーティ認証プロバイダーの使用を許可します。この認証プロバイダーがプレーン・テキスト認証情報をサポートしている場合は、-u <username>および-pw <password>と組み合わせることができます。 |
-ciphers | --ssl-ciphers <CIPHER-SUITES> | クライアントSSL。暗号化スイートのコンマ区切りリスト。 |
-cph | --connections-per-host <connectionsPerHost> | ホストごとの同時接続の数。 |
-d | --nodes <initial_hosts> | 必須。初期のクラスター情報を得るために、(コンマで区切られた)ホストのリストに接続します。 |
-f | --conf-path <path_to_config_file> | ストリーミング・スループットおよびクライアント/サーバーSSLのcassandra.yamlパスのパス。 |
-h | --help | ヘルプを表示します。 |
-i | --ignore <NODES> | コンマで区切られたこのノードのリストにはストリーミングしません。 |
-idct | --inter_dc_throttle_mbits <MBPS> | データ・センター間のスロットル速度、メガビット/秒(デフォルトは無制限)。 |
-ks | --keystore <KEYSTORE> | クライアントSSL。キーストアのフルパス。 |
-kspw | --keystore-password <KEYSTORE-PASSWORD> |
クライアントSSL。キーストア用のパスワード。 cassandra.yaml内のclient_encryption_optionsオプションをオーバーライドします |
--no-progress | 進行状況を表示しません。 | |
-p | --port <rpc port> | RPCポート(デフォルト:9160 [Thrift])。 |
-prtcl | --ssl-protocol <PROTOCOL> |
クライアントSSL。使用する接続プロトコル(デフォルト:TLS)。 cassandra.yaml内のserver_encryption_optionsオプションをオーバーライドします |
-pw | --password <password> | 認証パスワード。 |
-sp | --storage_port <port_num> | ノード間通信に使用されるポート(デフォルト:7000)。 |
-ssp | --ssl_storage_port | TLSノード間通信に使用されるポート(デフォルト:7001)。 |
-st | --store-type <STORE-TYPE> | クライアントSSL。ストアのタイプ。 |
-t | --throttle <throttle> |
スロットル速度、メガビット/秒(デフォルト:無制限)。 cassandra.yaml内のstream_throughput_outbound_megabits_per_secオプションをオーバーライドします |
-t | --throttle_mbits <MBPS> | スロットル速度、メガビット/秒(デフォルトは無制限) |
-ts | --truststore <TRUSTSTORE> | クライアントSSL。トラストストアのフルパス。 |
-tspw | --truststore-password <TRUSTSTORE-PASSWORD> | クライアントSSL。トラストストアのパスワード。 |
-u | --username <username> | 認証のユーザー名。 |
-v | --verbose | 詳細出力。 |
sstableloaderは、指定したディレクトリーで見つかったSSTableを、指定したターゲット・クラスターに一括読み込みします。このディレクトリーでは、示されているターゲット・クラスターに対して、パスの親ディレクトリーがターゲット・キースペースとテーブル名に使用されています。
ls /var/lib/cassandra/data/Keyspace1/Standard1/
Keyspace1-Standard1-jb-60-CRC.db
Keyspace1-Standard1-jb-60-Data.db
...
Keyspace1-Standard1-jb-60-TOC.txt
sstableloaderオプションの詳細については、「sstableloaderオプション」を参照してください。
sstableloaderの使用
- 他のソースからスナップショット・データを復元する場合:スナップショット・ファイルが、ターゲットの
keyspace/tablename
の名前と一致するkeyspace/tablenameディレクトリー・パスにあることを確認します。この例では、スナップショット・ファイルは/Keyspace/Standard1/にあります。 - SSTableの場所に移動します。
$ cd /var/lib/cassandra/data/Keyspace1/Standard1/
- キースペースの内容を表示するには、以下のように入力します。
$ ls
Keyspace1-Standard1-jb-60-CRC.db Keyspace1-Standard1-jb-60-Data.db ... Keyspace1-Standard1-jb-60-TOC.txt
- ファイルを一括読み込みするには、-dフラグを使用してターゲット・クラスター内の1つ以上のノードを指定し(-dフラグは、IPアドレスまたはホスト名のコンマ区切りリストを取ります)、ソース・マシンの../Keyspace1/Standard1/へのパスを指定します。
sstableloader -d 110.82.155.1 /var/lib/cassandra/data/Keyspace1/Standard1/ ## package installation
installation_location/bin/sstableloader -d 110.82.155.1 /var/lib/cassandra/data/Keyspace1/Standard1/ ## tarball installation
このコマンドにより、すべてのファイルが一括して読み込まれます。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra.yaml |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra.yaml |