
前提条件
リバランスを開始する前に、クラスターの正常なリバランスを確実に行うために、以下のステップを実行してください。1. ETLジョブと競合しない時間帯にリバランスをスケジューリングします。
2. データベースをバックアップします。
3. 古い、あるいは、未使用のテーブルパーティションを削除します。
4. ローカルセグメンテーションが無効であることを確認します。ローカルセグメンテーションが無効になっていない場合、このコマンドを実行して無効にします。
=> SELECT DISABLE_LOCAL_SEGMENTS();
5. vioperfとvnetperfを使用して、CPUとネットワークの帯域幅をそれぞれ確認します。
使用可能な帯域幅が初期ベンチマークの値よりも小さい場合、システム管理者に連絡して、性能が低下している原因となる問題を見つけて修正してください。6. リバランスを実行するために、データベースのサイズの少なくとも40%のストレージが使用可能であるかどうかを確認します。ストレージの使用状況を確認するには、次のクエリを実行します。
=> SELECT node_name,
storage_path,
disk_space_used_mb,
disk_space_free_mb
FROM DISK_STORAGE;
Linuxファイルシステムで使用可能なディスク容量を確認します。
$ df -h
HOST_RESOURCESシステムテーブルから各ノードのスナップショットを取得します。
=> SELECT host_name, disk_space_used_mb, disk_space_total_mb FROM HOST_RESOURCES;
ストレージが不足している場合、カタログサイズを縮小するための手順を実行してください。
ビルトインのREFRESHリソースプールの設定を確認します。
=> SELECT name, is_internal, plannedconcurrency, maxmemorysize FROM RESOURCE_POOLS WHERE name='REFRESH';
必要に応じて、リバランス処理が滞りなく実行できるように、リソースプール設定を調整します。
7. リバランス対象のテーブルに対するDML処理(COPY、INSERT、UPDATE、DELETE)を最小限に抑えます。リバランスがテーブルのロックを保持している場合、ロードは失敗します。ロードがテーブルをロックしている場合、リバランスは一時停止します。 リバランスがETLジョブと競合していると考えられる場合、LockTimeout値を増やしてください。デフォルト値は、300秒(5分)です。
=> SELECT SET_CONFIG_PARAMETER('LockTimeOut, 600)
8. Purging Deleted Data の説明にしたがって、DeleteされたデータをPurgeします。
9. クラスターに追加するホストを構成します。
10. ホストをクラスターに追加します。
11. データベースにノードを追加します。
注意:詳細については、Managing the Database を参照してください。
12. リバランスを途切れることなく実行するには、DMLCancelTMパラメーターをfalseに設定して、リバランスプロセスを優先します。
=> SELECT SET_CONFiG_PARAMETER('DMLCancelTM', 0);
これで、リバランス処理を開始する準備が整いました。ここでは、リバランスを開始し、プロセスが正常に完了するのをモニタリングするための手順を示します。
Rebalancing Data Using SQL Functions の説明に従って、リバランスを開始します。
ステップ | タスク | 結果 |
---|---|---|
1 | Verticaがリバランスを実行しているテーブルをモニタリングします。
=> SELECT * FROM REBALANCE_TABLE_STATUS;
|
このクエリは、Verticaがリバランス実行しているテーブルと、転送されたデータの量に関する情報を返します。 |
2 | DML処理またはDDL処理で特定のテーブルのリバランスが妨げられた場合、次のようなエラーメッセージが表示されます。
ERROR 3007: DDL statement interfered with this statement |
このエラーが表示された場合、DML処理またはDDL処理を停止し、リバランスを再開してください。
あるいは、これらの処理が実行されない時間帯までリバランスを延期します。 |
3 | 次のシステムテーブルをモニタリングして、個々のテーブルとプロジェクションの進捗状況を確認します。
SELECT
table_name,
separated_percent,
transferred_percent
FROM REBALANCE_TABLE_STATUS;
SELECT
anchor_table_name,
separated_percent,
transferred_percent
FROM REBALANCE_PROJECTION_STATUS; |
パーセントの値をモニタリングします。期待通りに進まない場合、リバランスが遅延する可能性があります。
リバランスが遅い場合、リバランス処理を停止し、このチェックリストの冒頭のステップを使用して、新規リバランスの実行を準備することを検討してください。 |
4 | リバランスが正常に完了したかどうかを確認します。
=> SELECT operation_status FROM REBALANCE_OPERATIONS;
「operation_status = COMPLETE」の場合、 リバランスはエラーなく完了しています。 |
クラスター内のすべてのノードがリバランスされている場合、このチェックリストは終了です。
クラスター内のノードがリバランスされていない場合、次の事項を試行します。 |
5 | K-safetyが正しいかどうかを確認します。 | K-safetyが1または2に設定されていない場合、Designing for K-Safety の内容に従ってください。 |
6 | リバランス後のデータベースのパフォーマンスを評価します。 | パフォーマンスが大幅に低下した場合、Verticaテクニカルサポートまでお問い合わせください。 |