Data Repository のデータ ディレクトリの移動

必要に応じて、Data Repository のデータ ディレクトリを既存の場所から同じ Vertica クラスタの別の場所に移動できます。
capm370
必要に応じて、Data Repository のデータ ディレクトリを既存の場所から同じ Vertica クラスタの別の場所に移動できます。
このプロセスには、以下の手順が含まれます。
  1. 新しい場所を作成します。
  2. データを移動します。
  3. 古い場所をドロップします。
詳細については、Vertica のドキュメントを参照してください。
以下の理由のため、Data Repository のデータ ディレクトリの移動が必要な場合があります。
  • 既存のサーバに新しいストレージを追加します。
  • サーバ ビルド テンプレートが更新されたため、古いマウント ポイントから新しいマウント ポイントにデータベースを移動したいとします。
以下のプロセスでは、移動中に
DX NetOps Performance Management
のダウンタイムが発生します。
以下の要因がダウンタイムの合計時間に影響を与えます。
  • データベースのサイズ
  • ストレージの入出力速度
以下のプロセスでは、Data Repository のデータ ディレクトリの移動のみがカバーされています。 あるサーバから別のサーバへの Data Repository データベースの移動の詳細については、「障害回復」を参照してください。
例:
  • 3 ノード クラスタのデータ ディレクトリを移動しています。
    • node0001
    • node0002
    • node0003
  • 現在のデータ ディレクトリ:
    /spare/dbdata/data
  • 新しいデータ ディレクトリ:
    /opt/application/CA/drdata
  • Vertica データベース名は
    drdata
    です。
  • Veritca の
    dbadmin
    ユーザは
    dradmin
    です。
  • このシナリオでは以下の最終目標が適用されます。
    /spare/dbdata/data/drdata/v_drdata_node0001_data >> /opt/application/CA/drdata/drdata/v_drdata_node0001_data
    /spare/dbdata/data/drdata/v_drdata_node0002_data >> /opt/application/CA/drdata/drdata/v_drdata_node0002_data
    /spare/dbdata/data/drdata/v_drdata_node0003_data >> /opt/application/CA/drdata/drdata/v_drdata_node0003_data
以下の手順に従います。
  1. 各ノードで、新しいデータ ディレクトリを作成します。
    mkdir -p /
    new_data_directory
    /
    dbname
    /v_
    dbname
    _node000
    x
    _data
    • new_data_directory
      新しいデータ ディレクトリを指定します。
    • dbname
      データベースの名前を指定します。
    • x
      既存のノード番号を指定します。
  2. 新しいデータ ディレクトリに権限を付与します。
    chown -R dradmin:verticadba /
    new_data_directory
    /
    dbname
  3. /
    new_data_directory
    /dbname へのパスの各親について、以下の権限を付与します。
    chown dradmin:verticadba /parent
  4. dradmin
    として、Vertica の各ノードに新しいストレージの場所を作成します。
    create location '/
    new_data_directory
    /
    dbname
    /v_
    dbname
    _node000
    x
    _data' NODE 'v_
    dbname
    _node000
    x
    ' USAGE 'DATA,TEMP' LABEL '
    TO_DATA_TEMP
    ';
    • TO_DATA_TEMP
      新しいストレージの場所のラベルを指定します。 オブジェクト ポリシーを設定する場合、このラベルは不要です。
  5. 新しいストレージ場所を確認します。
    select * from storage_locations;
  6. オブジェクト ポリシーを設定します。
    select set_object_storage_policy('
    schema_name
    ', '
    TO_DATA_TEMP
    ', true );
    • schema_name
      スキーマの名前を指定します。
      例:
      dauser
      利用可能なスキーマのリストを表示するには、以下のコマンドを実行します。
      dradmin=> \dn
    • TO_DATA_TEMP
      新しいストレージの場所を作成したときに使用したのと同じラベルを指定します。
  7. オブジェクトの移動をトリガします。
    select enforce_object_storage_policy('
    schema_name
    ');
  8. ポリシーが適用されていることを確認します。
    select * from storage_policies;
  9. 各ノードの古いストレージの場所を廃棄します。
    select retire_location('/
    existing_data_directory
    /
    dbname
    /v_
    dbname
    _node000
    x
    _data', 'v_
    dbname
    _node000
    x
    ', true);
    • existing_data_directory
      既存のデータの場所を指定します。
  10. 古いストレージの場所が廃棄されていることを確認します。
    select is_retired, location_path from storage_locations;
  11. 各ノードの古いストレージの場所をドロップします。
    select drop_location('/
    existing_data_directory
    /
    dbname
    /v_
    dbname
    _node000
    x
    _data', 'v_
    dbname
    _node000
    x
    ');
  12. ストレージ ポリシーをクリアします。
    select clear_object_storage_policy( '
    schema_name
    ' );
  13. 各ノードの新しいストレージの場所からラベルを削除します。
    select alter_location_label('/
    new_data_directory
    /
    dbname
    /v_
    dbname
    _node000
    x
    _data', 'v_
    dbname
    _node000
    x
    _data', '');