当您的 Vertica 数据库从故障中恢复时,监控恢复过程非常重要。有多种方法可以监控数据库恢复:
1 - 查看每个节点的日志文件
在数据库恢复期间,Vertica 会向每个主机上的
vertica.log
添加日志记录消息。每个消息均标有字符串 [Recover]
。
使用 tail
命令查看相关状态消息以监控恢复进度,如下所示。
$ tail -f catalog-path/database-name/node-name_catalog/vertica.log
01/23/08 10:35:31 thr:Recover:0x2a98700970 [Recover] <INFO> Changing host v_vmart_node0001 startup state from INITIALIZING to RECOVERING
01/23/08 10:35:31 thr:CatchUp:0x1724b80 [Recover] <INFO> Recovering to specified epoch 0x120b6
01/23/08 10:35:31 thr:CatchUp:0x1724b80 [Recover] <INFO> Running 1 split queries
01/23/08 10:35:31 thr:CatchUp:0x1724b80 [Recover] <INFO> Running query: ALTER PROJECTION proj_tradesquotes_0 SPLIT v_vmart_node0001 FROM 73911;
2 - 使用系统表来监控恢复
使用以下系统表来监控恢复:
具体来讲,recovery_status
系统表包括有关正在恢复的节点、要恢复的时期、当前恢复阶段以及运行状态的信息:
=>select node_name, recover_epoch, recovery_phase, current_completed, is_running from recovery_status;
node_name | recover_epoch | recovery_phase | current_completed | is_running
---------------------+---------------+-------------------+-------------------+--------------
v_vmart_node0001 | | | 0 | f
v_vmart_node0002 | 0 | historical pass 1 | 0 | t
v_vmart_node0003 | 1 | current | 0 | f
projection_recoveries
系统表维护投影恢复的历史记录。若要检查恢复状态,可汇总正在恢复的节点的数据,并多次运行同一查询以查看计数是否发生变化。计数不同表示正在执行恢复工作,所有丢失的数据正在恢复中。
=> select node_name, status , progress from projection_recoveries;
node_name | status | progress
-----------------------+-------------+---------
v_vmart_node0001 | running | 61
若要查看 projection_recoveries
系统表中的单个记录,请向查询中添加限值 1。
恢复完成后,Vertica 继续存储这些表中的最近恢复的信息。
3 - 查看群集状态和恢复状态
使用 admintools view_cluster
工具从命令行查看群集状态:
$ /opt/vertica/bin/admintools -t view_cluster
DB | Host | State
---------+--------------+------------
<data_base> | 112.17.31.10 | RECOVERING
<data_base> | 112.17.31.11 | UP
<data_base> | 112.17.31.12 | UP
<data_base> | 112.17.31.17 | UP
________________________________
4 - 监控恢复后的群集状态
恢复完成时:
-
启动管理工具。
-
从“主菜单 (Main Menu)”中选择查看数据库群集状态 (View Database Cluster State),然后单击确定 (OK)。
实用程序将节点状态报告为
UP
。