はじめに
Verticaの起動時に、”Startup Failed, ASR Required”が発生し起動に失敗する場合があります。本記事では、同エラーが発生した場合のトラブルシューティングをご紹介します。”Startup Failed, ASR Required”エラーの発生例
$ admintools -t start_db -d test -p test
Starting nodes:
v_test_node0001 (XXX.XXX.XX.XX)
v_test_node0002 (XXX.XXX.XX.XX)
v_test_node0003 (XXX.XXX.XX.XX)
Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
:
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
Found these errors in startup.logs on hosts:
hosts [‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’] report: Startup Failed, ASR Required
Do you want to continue waiting? (yes/no) [yes] yes
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
:
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
Found these errors in startup.logs on hosts:
hosts [‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’] report: Startup Failed, ASR Required
Do you want to continue waiting? (yes/no) [yes] yes
:
Starting nodes:
v_test_node0001 (XXX.XXX.XX.XX)
v_test_node0002 (XXX.XXX.XX.XX)
v_test_node0003 (XXX.XXX.XX.XX)
Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
:
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
Found these errors in startup.logs on hosts:
hosts [‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’] report: Startup Failed, ASR Required
Do you want to continue waiting? (yes/no) [yes] yes
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
:
Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN)
Found these errors in startup.logs on hosts:
hosts [‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’, ‘XXX.XXX.XX.XX’] report: Startup Failed, ASR Required
Do you want to continue waiting? (yes/no) [yes] yes
:
原因
本事象は、Verticaが不正に停止されたことよって、データが不完全な状態になった場合に発生します。お客様からは、Verticaを停止しない状態でOSを停止した場合に、本事象のお問い合わせをいただくことがあります。OSを停止する場合は、事前に「admintools」や「Management Console」を使用して、正しい手順でVerticaを停止してください。
対処方法
restart_dbコマンドに”-e last”オプションを付与して実行し、DBを再起動します。”-e last”オプションを使用するとリカバリが可能な最も直近のポイント(LGE:Last Good Epoch)の情報を使用しVerticaを起動します。手順概要
Step1:ステータスがDOWNであることを確認
Step2:プロセスが残存していないことを確認
Step3:復旧可能時間を確認
Step4:”-e last”を指定して起動
Step5:ステータスがUPであることを確認
Step1:ステータスがDOWNであることを確認
以下のコマンドで、Verticaの全ノードが停止していることを確認します。
1 2 3 4 5 6 |
$ admintools -t list_allnodes Node | Host | State | Version | DB -----------------+---------------+-------+------------------+------- v_test_node0001 | xxx.xxx.xx.xx | DOWN | vertica-24.2.0.1 | test v_test_node0002 | xxx.xxx.xx.xx | DOWN | vertica-24.2.0.1 | test v_test_node0003 | xxx.xxx.xx.xx | DOWN | vertica-24.2.0.1 | test |
Step2:プロセスが残存していないことを確認
以下のコマンドを実行し、Verticaのプロセスが残存していないことを確認します。※残存している場合は、Verticaのプロセスをkillしてください。
1 |
# ps -ef | grep -i "vertica -D" | grep -v grep | grep -v java |
Step3:復旧可能時間を確認
epoch.logのLast good epochより最後にepochが書き込まれた時刻(復旧可能時刻)を確認します。※epoch.logはVertica停止時に作成され、Vertica起動時に自動削除されます。
1 2 |
## epoch.log の出力先 ## /"カタログディレクトリ"/"DB名"/"ノード名"_catalog/epoch.log |
1 2 3 4 5 6 |
## epoch.log の確認結果 ## $ cat /home/dbadmin/test/v_test_node0001_catalog/Epoch.log Last good epoch: 0x13 ended at ★'2024-07-02 17:58:51.007828+09' Last good catalog version: 0x2dc K-safety: 1 AHM: 0x13 ended at '2024-07-02 17:58:51.007828+09' |
上記は、2024-07-02 17:58:51.007828+09時点まで復旧が可能です。「2024-07-02 17:58:51.007828+09」以降にデータの追加/更新をおこなっている場合は、DB復旧後、処理を再実行してください。
Step4:”-e last”を指定して起動
restart_dbコマンドに”-e last”オプションを付与してVerticaを起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ admintools -t restart_db -d "DB名" -p "パスワード" -e last *** Restarting database test at '2024-07-02 17:58:51.007828+09' epoch 19 *** Starting nodes: v_test_node0001 (xxx.xxx.xx.xx) v_test_node0002 (xxx.xxx.xx.xx) v_test_node0003 (xxx.xxx.xx.xx) Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize. Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN) Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN) Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN) Node Status: v_test_node0001: (DOWN) v_test_node0002: (DOWN) v_test_node0003: (DOWN) Node Status: v_test_node0001: (RECOVERING) v_test_node0002: (RECOVERING) v_test_node0003: (RECOVERING) Node Status: v_test_node0001: (UP) v_test_node0002: (UP) v_test_node0003: (UP) Database startup successful |
Step5:ステータスがUPであることを確認
以下のコマンドで、Verticaの全ノードが起動していることを確認します。
1 2 3 4 5 6 7 |
$ admintools -t list_allnodes Node | Host | State | Version | DB -----------------+---------------+-------+------------------+------- v_test_node0001 | xxx.xxx.xx.xx | UP | vertica-24.2.0.1 | test v_test_node0002 | xxx.xxx.xx.xx | UP | vertica-24.2.0.1 | test v_test_node0003 | xxx.xxx.xx.xx | UP | vertica-24.2.0.1 | test |