Vertica 数据库的启动和关闭¶
1 关闭数据库¶
1.1 使用admintools正常关闭数据库¶
1.1.1 停业务¶
首先需要把连接到数据库的调度、BI等一切与Vertica数据库相关的业务停止,防止在停库的时候因为业务的影响一直关不掉数据库。
1.1.2 关闭数据库连接¶
--关闭数据库连接,设置为0后,dbadmin用户仍然可以有5个连接可用。
select set_config_parameter('maxclientsessions',0);
--关闭数据库所有的session
select close_all_sessions();
--检查session是否全部关闭,结果应该=1
select count(*) from sessions;
--推进数据库AHM
select make_ahm_now();
--检查当前的AHM、current_epoch等
select get_ahm_epoch(),get_ahm_time(),get_last_good_epoch(),get_current_epoch();
get_ahm_epoch | get_ahm_time | get_last_good_epoch | get_current_epoch
---------------+------------------------------------------------+---------------------+-------------------
17 | Current AHM Time: 2024-03-09 08:08:08.95707+08 | 17 | 18
(1 row)
get_ahm_time: 应该接近当前系统时间。
get_ahm_epoch与get_last_good_epoch应该相等。
get_current_epoch比get_last_good_epoch大1。
1.1.3 使用admintools关闭数据库¶
首先登陆到集群任意一个节点的dbadmin用户:
使用admintools命令关闭数据库:[dbadmin@v001 ~]$
[dbadmin@v001 ~]$ admintools -t stop_db -d <dbname> -p <password> -F
Running shutdown metafunction...
Shutdown metafunction complete. Polling until database processes have stopped.
Database vmart stopped successfully
[dbadmin@v001 ~]$
[dbadmin@v001 ~]$
1.2 非常规关闭数据库¶
有时候数据库在停机的时候会花费比较长的时间,大部分原因是因为有夯死的session无法正常关闭,导致停库任务一直无法完成,此时只要保证AHM=LGE,就可以通过手动杀掉每个节点Vertica进程的方式来关闭数据库。
检查数据库AHM和LGE:
--推进数据库AHM
select make_ahm_now();
--检查当前的AHM、current_epoch等
select get_ahm_epoch(),get_ahm_time(),get_last_good_epoch(),get_current_epoch();
get_ahm_epoch | get_ahm_time | get_last_good_epoch | get_current_epoch
---------------+------------------------------------------------+---------------------+-------------------
17 | Current AHM Time: 2024-03-09 08:08:08.95707+08 | 17 | 18
(1 row)
强制关闭Vertica进程: 方法1:使用kill -9命令杀掉进程,需要登陆每个节点进程操作:
[dbadmin@v001 ~]$ pgrep vertica$
2873220
[dbadmin@v001 ~]$ kill -9 2873220
[dbadmin@v001 ~]$ pgrep vertica$
[dbadmin@v001 ~]$
cls_run "ps -ef | grep 'agent.conf' | grep -v grep"
cls_run "ps -ef | grep 'agent.conf' | grep -v grep|cut -c 9-15"
cls_run "hostname;ps -ef | grep 'agent.conf' | grep -v grep|cut -c 9-15|xargs kill -9 2> /dev/null"
杀掉vbr进程:
ps -ef|grep "/opt/vertica/bin/vbr" |grep -v grep |grep -v spread|grep -v "vertica -D"|awk '{print $2}'|xargs kill -9
杀掉agent进程:
cls_run "ps -ef|grep '/opt/vertica/agent/agent.sh' |grep -v grep |grep -v spread|grep -v 'vertica -D'"
cls_run "ps -ef|grep '/opt/vertica/agent/agent.sh' |grep -v grep |grep -v spread|grep -v 'vertica -D'|awk '{print \$2}'|xargs kill -9"
方法2:使用admintools命令行:
[dbadmin@v001 ~]$ admintools -t kill_host -s v001 #如果为多个节点,则使用逗号分隔hostname传入
Sending signal 'KILL' to ['10.211.55.6']
Successfully sent signal 'KILL' to hosts ['10.211.55.6'].
Details:
Host: 10.211.55.6 - Success - PID: 2874854 Signal KILL
Checking for processes to be down
All processes are down.
Details:
Host 10.211.55.6 Success process 2874854 is down
2 关闭某个、某几个节点¶
Vertica是MPP数据库,可以单独关闭某些节点(非逻辑相邻节点)而不影响数据库的正常运行。 方法1:使用kill -9关闭进程
方法2:使用admintools工具关闭节点如下两种都可以:
[dbadmin@v001 ~]$ admintools -t stop_node -s v001
[dbadmin@v001 ~]$ admintools -t stop_host -s v001
3、启动某个、某几个节点¶
使用admintools命令启动:
4、启动数据库¶
使用admintools命令启动数据库:
恢复数据库设置:5、一些日志文件¶
| 文件名 | 描述 |
|---|---|
| /data/vmart/v_vmart_node0001_catalog/startup.log | 可监控数据库节点启动进度。 |
| /opt/vertica/log/adminTools.log | admintools工具日志 |
| /opt/vertica/log/adminTools.errors | admintools工具错误日志 |
扩展阅读¶
- Vertica 维护前准备 Checklist — 维护前安全关机完整流程
- 节点恢复状态检查 — 节点宕机后的恢复状态验证
- Vertica 节点恢复过程 — 节点恢复原理详解