メインコンテンツまでスキップ

クラスターのアップグレード

Dorisは、FEおよびBEノードの段階的なアップグレードを可能にし、ダウンタイムを最小化し、アップグレード処理中にシステムが動作し続けることを保証するローリングアップグレード機能を提供しています。

バージョン互換性

Dorisのバージョニングは3つの構成要素から成ります:最初の桁はメジャーマイルストーンバージョンを表し、2番目の桁は機能バージョンを示し、3番目の桁はバグ修正に対応します。バグ修正バージョンでは新機能は導入されません。例えば、Dorisバージョン2.1.3では、「2」は2番目のマイルストーンバージョンを示し、「1」はこのマイルストーンの下での機能バージョンを表し、「3」はこの機能バージョンの3番目のバグ修正を表します。

バージョンアップグレード時には、以下の規則が適用されます:

  • 3桁バージョン: 最初の2桁が同じバージョンは、3桁バージョン間で直接アップグレードできます。例えば、バージョン2.1.3はバージョン2.1.7に直接アップグレードできます。

  • 2桁および1桁バージョン: 互換性の懸念により、2桁バージョンのクロスバージョンアップグレードは推奨されません。各2桁バージョンを順次アップグレードすることが推奨されます。例えば、バージョン3.0から3.3へのアップグレードは、3.0 -> 3.1 -> 3.2 -> 3.3の順序に従う必要があります。

詳細なバージョン情報は、versioning rulesで確認できます。

アップグレードの注意事項

アップグレードを実行する際は、以下に注意してください:

  • バージョン間の動作変更: アップグレード前にRelease 注を確認し、互換性の問題を特定してください。

  • クラスター内のタスクにリトライメカニズムを追加: アップグレード中はノードが順次再起動されます。タスクの失敗を避けるため、クエリタスクとStream Load importジョブにリトライメカニズムが用意されていることを確認してください。flink-doris-connectorまたはspark-doris-connectorを使用したRoutine Loadジョブには、既にコードにリトライメカニズムが含まれており、追加のロジックは不要です。

  • レプリカ修復およびバランス機能を無効化: アップグレード処理中はこれらの機能を無効にしてください。アップグレードの結果に関係なく、アップグレード完了後にこれらの機能を再有効化してください。

メタデータ互換性テスト

Note

本番環境では、高可用性のために少なくとも3つのFEノードを構成することが推奨されます。FEノードが1つしかない場合は、アップグレード前にメタデータ互換性テストを実行する必要があります。メタデータ互換性は重要であり、非互換性によりアップグレードの失敗やデータ損失を引き起こす可能性があります。各アップグレード前にメタデータ互換性テストを実施することが推奨されており、以下に留意してください:

  • FEノードの使用を避けるため、可能な限り開発マシンやBEノードでメタデータ互換性テストを実行してください。

  • FEノードでテストを実施する必要がある場合は、非MasterノードでMasterでないノードを使用し、元のFEプロセスを停止してください。

アップグレード前に、メタデータの非互換性による失敗を防ぐためにメタデータ互換性テストを実施してください。

  1. メタデータ情報のバックアップ:

    アップグレードを開始する前に、Master FEノードのメタデータをバックアップしてください。

    show frontendsコマンドを使用し、IsMaster列を参照してMaster FEノードを特定してください。FEメタデータは、FEノードを停止せずにホットバックアップできます。デフォルトでは、FEメタデータはfe/doris-metaディレクトリに格納されます。これは、fe.conf設定ファイルのmeta_dirパラメータで確認できます。

  2. テストFEノードのfe.conf設定ファイルを変更:

    vi ${DORIS_NEW_HOME}/conf/fe.conf

以下のポート情報を変更し、すべてのポートが本番環境のものと異なることを確認し、clusterIDパラメータを更新してください:

...
## modify port
http_port = 18030
rpc_port = 19020
query_port = 19030
arrow_flight_sql_port = 19040
edit_log_port = 19010

## modify clusterIP
clusterId=<a_new_clusterIP, such as 123456>
...
  1. バックアップされたMaster FEメタデータを新しい互換性テスト環境にコピーします。

    cp ${DORIS_OLD_HOME}/fe/doris-meta/* ${DORIS_NEW_HOME}/fe/doris-meta
  2. コピーしたメタデータディレクトリのVERSIONファイルを編集して、cluster_idを新しいクラスターIPに更新します。例えば、例に示すように123456に変更します:

    vi ${DORIS_NEW_HOME}/fe/doris-meta/image/VERSION
    clusterId=123456
  3. テスト環境でFEプロセスを開始します。

    sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon --metadata_failure_recovery

2.0.2より前のバージョンでは、FEプロセスを開始する前にfe.confファイルにmetadata_failure_recoveryパラメータを追加してください:

echo "metadata_failure_recovery=true" >> ${DORIS_NEW_HOME}/conf/fe.conf
sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon
  1. 上記で言及したクエリポート19030を使用するなど、MySQLコマンドを使用して現在のFEに接続することで、FEプロセスが正常に開始されたことを確認します。

    mysql -uroot -P19030 -h127.0.0.1

アップグレード手順

アップグレードの詳細なプロセスは以下の通りです:

  1. レプリカ修復およびバランス機能を無効にする

  2. BEノードをアップグレードする

  3. FEノードをアップグレードする

  4. レプリカ修復およびバランス機能を有効にする

アップグレードプロセス中は、最初にBEノードをアップグレードし、その後FEノードをアップグレードするという原則に従う必要があります。FEをアップグレードする際は、最初にObserver FEおよびFollower FEノードをアップグレードし、その後Master FEノードをアップグレードします。

注意

一般的に、FEディレクトリ下の/binおよび/libディレクトリと、BEディレクトリ下の/binおよび/libディレクトリのみをアップグレードする必要があります。

バージョン2.0.2以降では、FEおよびBEデプロイメントパス下にcustom_lib/ディレクトリが追加されています(存在しない場合は手動で作成できます)。custom_lib/ディレクトリは、hadoop-lzo-*.jarorai18n.jarなどのユーザー定義のサードパーティjarファイルを格納するために使用されます。このディレクトリはアップグレード中に置換する必要はありません。

ステップ1:レプリカ修復およびバランス機能を無効にする

アップグレードプロセス中、ノードが再起動され、不要なクラスターバランシングおよびレプリカ修復ロジックがトリガーされる可能性があります。まず以下のコマンドを使用してこれらの機能を無効にします:

admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");

Step 2: BEノードのアップグレード

Note:

データの安全性を確保するため、アップグレードの誤りや失敗によるデータ損失を避けるために、3つのレプリカを使用してデータを保存してください。

  1. マルチレプリカクラスターでは、1つのBEノードでプロセスを停止し、段階的アップグレードを実行することができます:

    sh ${DORIS_OLD_HOME}/be/bin/stop_be.sh
  2. BEディレクトリ内の /bin および /lib ディレクトリの名前を変更します:

    mv ${DORIS_OLD_HOME}/be/bin ${DORIS_OLD_HOME}/be/bin_back
    mv ${DORIS_OLD_HOME}/be/lib ${DORIS_OLD_HOME}/be/lib_back
  3. 新しいバージョンの /bin/lib ディレクトリを元のBEディレクトリにコピーします:

    cp -r ${DORIS_NEW_HOME}/be/bin ${DORIS_OLD_HOME}/be/bin
    cp -r ${DORIS_NEW_HOME}/be/lib ${DORIS_OLD_HOME}/be/lib
  4. BEノードを起動します:

    sh ${DORIS_OLD_HOME}/be/bin/start_be.sh --daemon
  5. クラスターに接続してノード情報を確認します:

    show backends\G

BEノードのaliveステータスがtrueで、Versionの値が新しいバージョンである場合、ノードのアップグレードが正常に完了しています。

ステップ3: FEノードのアップグレード

  1. 複数FEノード構成では、アップグレード用にMaster以外のノードを選択し、まずそれを停止します:

    sh ${DORIS_OLD_HOME}/fe/bin/stop_fe.sh
  2. FEディレクトリ内の /bin/lib、および /mysql_ssl_default_certificate ディレクトリの名前を変更します:

    mv ${DORIS_OLD_HOME}/fe/bin ${DORIS_OLD_HOME}/fe/bin_back
    mv ${DORIS_OLD_HOME}/fe/lib ${DORIS_OLD_HOME}/fe/lib_back
    mv ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate_back
  3. 新しいバージョンの /bin/lib、および /mysql_ssl_default_certificate ディレクトリを元のFEディレクトリにコピーします:

    cp -r ${DORIS_NEW_HOME}/fe/bin ${DORIS_OLD_HOME}/fe/bin
    cp -r ${DORIS_NEW_HOME}/fe/lib ${DORIS_OLD_HOME}/fe/lib
    cp -r ${DORIS_NEW_HOME}/fe/mysql_ssl_default_certificate ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate
  4. FEノードを開始します:

    sh ${DORIS_OLD_HOME}/fe/bin/start_fe.sh --daemon
  5. クラスターに接続してノード情報を確認します:

    show frontends\G

FE ノードの alive ステータスが true で、Version 値が新しいバージョンの場合、ノードは正常にアップグレードされています。

  1. 他の FE ノードを順次アップグレードし、最後に Master ノードをアップグレードします。

ステップ 4: レプリカ修復とバランス機能の有効化

アップグレードが完了し、すべての BE ノードのステータスが Alive になったら、クラスターのレプリカ修復とバランス機能を有効にします:

admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");