一、概述
gs_ctl -M
-M后面需要跟SERVERMODE参数,表示在启动时指定数据库的启动模式。
SERVERMODE are:
primary database system run as a primary server, send xlog to standby server
standby database system run as a standby server, receive xlog from primary server
cascade_standby database system run as a cascade standby server, receive xlog from standby server
pending database system run as a pending server, wait for promoting to primary or demoting to standby
Only used in start command
SERVERMODE的取值范围:
primary:本端以主机模式启动。
standby:本端以备机模式启动。
cascade_standby:本端以级联备机模式启动。
pending:本端处于等待状态,等待提升为主机或者备机。
比较常见的是在搭建主备时使用primary及standby这两个值,本文只讨论这两种值,其它值的后续文章会探讨
默认启动模式
如果我们使用gs_ctl启动服务时不指定SERVERMODE,默认会使用primary模式启动服务,这个在单机模式下是合适的。
二、primary及standby模式
相比PostgreSQL主备搭建的方式,MogDB并不是在备库单独创建一个standby的触发文件,然后启动服务。
MogDB需要在主库和备库以不同的模式启动,主库是primary模式启动,备库是standby启动。
主库启动命令:
gs_ctl start -D data -M primary
启动完成之后查看进程可以看到启动模式为primary
备库启动命令:
gs_ctl start -D data -M standby
启动完成之后查看进程可以看到启动模式为standby
如果备库我们没有使用-M启动模式,或者启动模式不是standby,则不会建立主备关系,此时我们不能简单通过关闭,重新以standby模式来恢复主备关系,只能使用build操作来重建备库。
所以在主备环境下启动备库一定要注意使用standby模式启动。
三、附录build
build
在主机上重建备实例或级联备实例。
参数
-b MODE 指定重建备机的模式。
mode的取值:
● full:通过全量镜像的方式重新同步 主机的数据目录。
● incremental:通过解析Xlog日志获 取主备机差异的数据进行增量修复备机。
说明:
增量重建适用于主备双主等因日志造成的不一致场景。
● 增量重建不适用于一主一备并且没有开启最大高可用的场景,此种场景下需要使用全量重建或者开启最大高可用后再进行增量重建。
● 备机数据文件损坏、数据目录丢失 等故障通过增量重建的方式无法修复,此时可通过全量重建的方式重 新修复备机。
● auto(不指定):先增量,根据失败 后是否可以再增量选择继续增量或 者全量,三次增量失败后进行全 量。
● standby_full:通过指定的备机ip和port全量重建故障备机。使用该参数时需要同时使用-C蚕食指定镜像的ip和port。
默认值:auto
说明:
重建级联备机需要加上-M cascade_standby参数。
-r, --recvtimeout=INTERVAL 指定重建过程中备机日志接收等待主机响应的超时时间。
取值范围:整型(秒)。
默认值:120秒
提示:超时时间需根据业务繁忙程度设置,业务繁忙等待主机的响应时间需加长,建议超时时间=checkpoint的执行时间+1min。
-q
重建结束后,是否自动重启。
指定参数场合,不自动重启。
未指定场合,自动重启,重启默认最大等待时间是60秒。如果在此时间内数据库未能启动成功,就会报不再等待,命令退出。
此后可以通过gs_om -t status --detail或其他查看数据库状态的命令,来确认数据库是否启动成功。