vb_ctl
功能描述
vb_ctl是Vastbase提供的数据库服务控制工具,可以用来启停数据库服务和查询数据库状态。
vb_ctl工具由数据库安装用户执行,具有以下功能:
启动、停止、重启Vastbase节点。
在不停止数据库的情况下,重新加载配置文件(postgresql.conf,pg_hba.conf)。
主备切换、主备状态查询、重建和重建状态查询。
语法格式
初始化数据库。
vb_ctl init[db] [-D DATADIR] [-s] [-o "OPTIONS"]
启动/停止/重启数据库。
vb_ctl start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"] [-M SERVERMODE] vb_ctl stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] vb_ctl restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o "OPTIONS"]
在主机上重建备实例或级联备实例。
vb_ctl build [-D DATADIR] [-b MODE] [-r SECS] [-C CONNECTOR] [-q] [-M SERVERMODE]
重载配置文件(postgresql.conf, pg_hba.conf)。
vb_ctl reload [-D DATADIR] [-s]
显示数据库运行状态。
vb_ctl status [-D DATADIR]
数据库包括以下三种运行状态:
- server is running (PID: xxx):Vastbase服务已启动。
- no server running:Vastbase服务已关闭。
- single-user server is running (PID: xxx):Vastbase数据库支持通过single单用户模式登录,该状态仅在Vastbase G100 V2.2 Build 12及以后版本支持。
主机故障时,备机停止回放,强制升主。
vb_ctl finishredo [-D DATADIR] [-s]
在主机异常时,将备机切换为主机。
vb_ctl failover [-W] [-t SECS] [-D DATADIR] [-U USERNAME] [-P PASSWORD] [-T TERM]
在主备机正常时,出于维护的需要,将备机切换为主机,可保证切换过程中数据不丢失。
- 必须在要切换为主机的备机上执行switchover命令才会生效。在主机上执行switchover命令,仅作查询使用。
- switchover命令下发后,命令如果超时返回,后台进程的执行状态可能处于不可确定状态。
vb_ctl switchover [-W] [-D DATADIR] [-m SWITCHOVER-MODE] [-U USERNAME] [-P PASSWORD] [-f]
查询主备机之间的状态信息。
vb_ctl query [-D DATADIR] [-U USERNAME] [-P PASSWORD] [-L lsn]
启动后再指定主备机。
vb_ctl notify -M SERVERMODE [-D DATADIR] [-U USERNAME] [-P PASSWORD]
给指定的进程发送信号量。允许用于kill的信号名称包括:ABRT、HUP、INT、QUIT、TERM、USR1、USR2。
vb_ctl kill SIGNALNAME PID
查看数据库的重建进度。
vb_ctl querybuild [-D DATADIR]
基于共享存储的双中心容灾模式,进行xlog日志拷贝。
vb_ctl copy [-D DATADIR] [-Q COPYMODE]
统计数据库系统的历史使用情况。
Vastbase为了方便用户查阅数据库历史使用情况,提供了
vb_ctl statistic
功能,可以通过参数控制查询的时间段,最终输出一个HTML文件,HTML文件以图形化方式展示出数据库历史使用情况。vb_ctl statistic [-D DATADIR] [-p OUTPUT_PATH] {[-d DAYS] | [-m MONTHS]| [-r STARTDATE,STOPDATE]}
- 使用该功能需要开启GUC参数enable_wdr_snapshot,否则生成的HTML文件内容为空。
- 该功能仅在数据库版本为V2.2 Build 15(Patch No.4)及以上版本支持。
获取vastbase的调用栈。
vb_ctl stack [-D DATADIR] [-I lwtid]
集群规模在线调整。
vb_ctl member [-O OPERATION] [-u DCF-NODE-ID] [-i DCF-NODE-IP] [-e DCF-NODE-PORT] [-D PRIMARY-DATADIR]
DCF模式下,将角色为primary的修改为passive或者follower。
vb_ctl changerole [-R DCF-ROLE] [-D DATADIR] [-t SEC]
集群支持少数派强起功能。
vb_ctl setrunmode [-x XMODE] [-v VOTE-NUM] [-D PRIMARY-DATADIR]
参数说明
vb_ctl参数可分为如下几类:
- 公共参数,详细请参见表1 公共参数。
- start和restart模式的参数,详细请参见表2 start,stop或restart相关参数。
- xlog copy参数,详细请参见表3 xlog copy参数。
- DCF参数,详细请参见表4 DCF参数。
- stack参数,详细请参见表5 stack参数。
- switchover参数,详细请参见表6 switchover参数。
- 资源池化build参数,详细请参见表7 资源池化build参数。
- 系统使用情况statistic参数,详细请参见表8 系统使用情况statistic参数。
参数 | 参数说明 | 取值范围 |
---|---|---|
-b, --mode=MODE | 指定重建备机的模式。 | mode的取值如下:
- 增量重建适用于主备双主等因日志造成的不一致场景。 -增量重建不适用于一主一备并且没有开启最大高可用的场景,此种场景下需要使用全量重建或者开启最大高可用后再进行增量重建。 -备机数据文件损坏、数据目录丢失等故障通过增量重建的方式无法修复,此时可通过全量重建的方式重新修复备机。 说明:重建级联备机需要加上 |
-D, --pgdata=DATADIR | 指定数据目录的位置。若指定目录中包含配置文件postgresql.conf,且配置文件内data_directory值与-D指定目录不同,将优先按data_directory目录执行。 | DATADIR的取值必须为有效的数据目录。 |
-s, --silent | 对reload、restart、stop命令仅打印部分提示信息,对其他命令不生效。 |
- |
-t, --timeout=SECS | 等待数据库启动、关闭或者主备切换完成的最大秒数。如果等待超时,命令会结束退出,并通知不再等待。 | 取值范围:整型(秒)。 默认值:等待数据库启动、停止或者主备切换完成:60秒。 |
-V , --version | 打印vb_ctl的版本信息然后退出。 | - |
-w | 用户执行启动或者关闭数据库的操作后,会等待事务操作的完成后再执行。 | 默认值:省略此参数时,默认会等待事务操作完成。 |
-W | 用户执行启动或者关闭数据库的操作后,会强制完成启动或者关闭,不等待事务操作完成。 | - |
-M | -M后面需要跟SERVERMODE参数,表示在启动时指定数据库的启动模式。 说明: 当前主机处于一主零备,或单机环境时,不支持-M参数。 |
SERVERMODE的取值范围: |
-T | -T 后面跟term,升主命令时会用此term作为主机term,build时会连接大于等于此term的主机进行build | term的取值范围,无符号整型。 |
-q | 重建结束后,是否自动重启。 |
无参数 |
-d | 打印更多调试信息。 | 无参数 |
-L | 查询lsn并展示最大长度。 | - |
-P PASSWORD | 与-U参数配合使用,指定连接本地数据库的用户密码。 说明: 当省略-U参数,且认证方法为trust时,-P参数无效。 |
- |
-U USERNAME | 指定连接数据库的用户。此参数只能与notify、query、failover、switchover和querybuild参数配合使用。 对于域用户,使用DOMAIN\username格式。 |
取值范围:Vastbase中存在的用户。 默认值:省略此参数则使用与当前操作系统用户同名的用户。 |
-Z NODE-TYPE | 参数可以设置为 "single_node"。 说明:在完全单机的情况下,如果wal_level是WAL_LEVEL_MINIMAL,或者max_wal_senders<1,并且数据库启动模式是primary/standby/pending模式,则vb_ctl start命令需要加-Z single_node参数。 |
- |
-?, -h, --help | 显示关于vb_ctl命令行参数的帮助信息。 | - |
参数 | 参数说明 | 取值范围 |
---|---|---|
-c, --core-file | 允许Vastbase进程产生内核文件。 | - |
-l, --log=FILENAME | 把服务器日志输出附加在FILENAME文件上。 | FILENAME的取值为启动数据库服务的用户有权限的文件。 例如,data目录下的某文件。 |
-o "OPTIONS" | 声明要直接传递给由Vastbase执行的Vastbase的命令行选项。 参数通常都用单或者双引号包围以保证它们作为一个整体传递。 |
Vastbase支持的参数。 |
-p PATH-TO-POSTGRES | 声明Vastbase可执行文件的位置。 | 默认值:vb_ctl自身所在目录。 |
-m, --mode=MODE | 声明关闭模式。 | mode的取值如下:
|
参数 | 参数说明 | 取值范围 |
---|---|---|
-Q, --mode=MODE | 指定xlog日志拷贝方向。 |
|
参数 | 参数说明 | 取值范围 |
---|---|---|
-O, --operation=OPERATION | vastbase数据库实例,DCF模式下,增删节点的操作。 |
|
-u, --nodeid=DCF-NODE-ID | 新增节点的DCF NODE ID。 | 无符号整型。 |
-i, --ip=DCF-NODE-IP | 新增节点与数据库实例DCF模块通信的IP。 | 字符串。 |
-e, --port=DCF-NODE-PORT | 新增节点与数据库实例DCF模块通信的port。 | 整型。 |
-R, --role=DCF-NODE-ROLE | Vastbase数据库实例,DCF模式下节点角色(需要在角色为primary的节点上使用)。 |
|
-v, --votenum=VOTE-NUM | 投票个数。 | 无符号整型。 |
-x, --xmode=XMODE | 运行模式(在少数派的DN节点上使用)。 | |
-G | DCF模式下,group的值。 | 0~2147483647 |
--priority | DCF模式下,节点选举的优先级。 | 0~2147483647 |
参数 | 参数说明 | 取值范围 |
---|---|---|
-I lwtid | 指用于指定需要获取调用栈的线程的lwtid。 | 正整数 |
参数 | 参数说明 | 取值范围 |
---|---|---|
-f | 指定进行-f类型switchover。不等待客户端中断连接,所有活跃事务都被回滚并且客户端都被强制断开,然后服务器将被切换,且不做checkpoint。使用方式:vb_ctl switchover -n NODEID -D DATADIR -f 。 |
无参数 |
-m SWITCHOVER-MODE | 声明双机主备实例正常时切换的切换模式。 | mode的取值如下: |
参数 | 参数说明 | 取值范围 |
---|---|---|
-r, --recvtimeout=INTERVAL | 指定重建过程中备机日志接收等待主机响应的超时时间。 | 取值范围:整型(秒)。 默认值:120秒 提示:超时时间需根据业务繁忙程度设置,业务繁忙等待主机的响应时间需加长,建议超时时间=checkpoint的执行时间+1min。 |
-C, connector | 到源端DN的连接串,通过连接源端DN进行本节点上DN的重建。只支持备机到备机的连接。 | 连接串包含本节点待重建DN的IP和端口和源端DN的IP和端口,格式如下:'localhost=Local DN IP localport=Local DN Port+1 remotehost=DN IP remoteport=DN Port+1' |
--enable-dss | 开启资源池化开关。 | 无参数 |
--vgname | 卷组名。可选,未指定时由系统自动识别。 | 数据类型:字符串 。 例如:一个卷组“+data”或者两个卷组中间用“,”连接“+data,+log”。 |
--socketpath=socketpath | dss实例进程使用的socket文件路径。可选,未指定时由系统自动识别。 | 实际的文件路径。 |
-b MODE | 指定重建备机的模式。 | mode的取值:
|
时间范围参数[-d DAYS]、[-m MONTHS]、[-r STARTDATE,STOPDATE]三者是互斥的,不能同时指定两个或两个以上参数。
参数 | 参数说明 | 取值范围 |
---|---|---|
-D DATADIR | 指定要查询的数据库实例的路径。 | 含义同$PGDATA。 |
-p OUTPUT_PATH | 输出的HTML文件路径。 | 文件路径(绝对路径)。 |
-d DAYS | 输出之前N天(包含查询当日)的统计情况,结果按照天为单位进行汇总。 | [1,180] |
-m MONTHS | 输出之前N月(包含查询当月)的统计情况,结果按照月为单位进行汇总。 | [1,36] |
-r STARTDATE,STOPDATE | 查询置顶日期范围的统计情况,结果按照天为单位进行汇总。 | STARTDATE和STOPDATE为date类型,时间差不能超过180天。 |
使用示例
启动/停止数据库
启动数据库。
vb_ctl start
使用端口5432端口启动数据库,而且不带fsync(强制刷盘)运行。
vb_ctl -o "-F -p 5432" start
关闭数据库(使用
-m
选项控制数据库以fast方式关闭)。vb_ctl stop -m fast
显示数据库状态
vb_ctl status
vb_ctl状态输出如下:
[2023-04-10 16:09:13.131][29655][][vb_ctl]: vb_ctl status,datadir is /home/vb_210/data/vastbase
vb_ctl: server is running (PID: 29381)
/home/vb_210/local/vastbase/bin/vastbase "-F" "-p" "5432"
重新加载配置文件
在配置文件中改变参数后,需要使用如下命令使参数生效。
vb_ctl reload
实例主备切换
将数据库主实例切换为备实例。
1、操作系统用户vastbase登录数据库任意节点,执行如下命令,检查主备节点状态。
vb_ctl query
2、以操作系统用户vastbase登录需要升主的备节点,执行如下命令进行主备切换。
vb_ctl switchover
返回结果为:
vb_ctl switchover ,datadir is /home/vastbase/data/vastbase
switchover term (1)
waiting for server to switchover.......
switchover completed (/home/vastbase/data/vastbase)
3、当主节点故障时,登录备节点,将备节点提升为主节点。
vb_ctl failover
返回结果为:
[2022-08-02 10:37:53.887][28312][][vb_ctl]: vb_ctl failover ,datadir is /home/vastbase/data/vastbase
[2022-08-02 10:37:53.887][28312][][vb_ctl]: failover term (1)
[2022-08-02 10:37:53.893][28312][][vb_ctl]: waiting for server to failover...
[2022-08-02 10:37:53.894][28312][][vb_ctl]: done
[2022-08-02 10:37:53.894][28312][][vb_ctl]: failover completed (/home/vastbase/data/vastbase)
统计数据库使用情况
1、打开GUC参数enable_wdr_snapshot。
ALTER SYSTEM SET enable_wdr_snapshot TO on;
2、使用vb_ctl工具获取数据库使用情况统计信息。
vb_ctl statistic -D $PGDATA -p /tmp/mystatistic.html -d 30
上述命令执行成功后,会在/tmp
路径下生成HTML文件mystatistic.html,用浏览器打卡后显示如下内容: