gaussdb 双机维护【重建双机】【05】

重建双机

       重建双机是双机高可靠性的体现,它可以使用主机来恢复备机,或者使用备机来恢复级联备机。

重建方式

       以一主一备为例说明重建双机的两种方式。

全量重建

  • 会删除备机所有的数据文件,但是保留自己的配置文件(postgresql.conf)。
  • 将主机的数据文件拷贝到备机,但是不会覆盖备机的配置文件。全量重建完毕后,主机和备机的数据文件相同。

增量重建

  • 对主机和备机的数据文件进行校验,只拷贝主机上与备机有差异的数据文件,增量重建完毕后,主备机数据文件也会相同。
  • 如果主机的数据量很大,采用这种方式重建双机可以节省重建时间。

背景信息

  • 双机初次配置,需要通过重建,使得两边数据库保持一致。
  • 当主备机不同步时,需要重建主备机的双机关系;当备机与级联备机不同步时,需要重建备机与级联备机的双机关系。

说明

  • 当双机关系未建立时,用 gs_ctl query 命令查询,返回的结果中 DB_STATE 字段的取值为 NeedRepair,表明需要重建双机。
  • GaussDB 自身不会自动进行双机重建的操作,数据库只提供状态监控接口告诉应用者双机状态是否正常,然后由应用者决定是否需要重建和何时重建。
  • 重建双机时,备机或者级联备机无法在数据目录的子目录下进行重建

注意事项
       主机处于崩溃恢复或者rman恢复时,需要调用select pg_is_in_recovery(); 判断恢复是否结束,只有恢复结束,备机才能进行build操作。

示例

       分别以gaussdba用户登录GaussDB服务器主机、备机、级联备机和次级联备机,查询备机或者级联备机的状态信息。

gs_ctl query

说明: 查询结果中如果发现DB_STATE : NeedRepair说明需要重建双机关系。

分两种情况重建双机。

情况一:一主一备或者一主双备
主备机未同步,在备机上执行以下命令,进行全量重建。

gs_ctl build -b full -M standby

在备机上执行以下命令,进行增量重建。

gs_ctl build -b incremental -M standby

说明: 重建双机时不加-b、-M参数默认为备机的全量重建,即gs_ctl build默认为备机的全量重建。

情况二:一主一备一级联一次级联
如果主备机未同步,需重建备机,即在备机上执行以下命令,进行全量重建。

gs_ctl build -b full -M standby

在备机上执行以下命令,进行增量重建。

gs_ctl build -b incremental -M standby

如果备机和级联备机未同步,需重建级联备机,即在级联备机上执行以下命令,进行全量重建。

gs_ctl build -b full -M cascadestandby

在级联备机上执行以下命令,进行增量重建。

gs_ctl build -b incremental -M cascadestandby

如果级联备机和次级联备机未同步,需重建次级联备机,即在次级联备机上执行以下命令,进行全量重建。

gs_ctl build -b full -M cascadestandby1

在次级联备机上执行以下命令,进行增量重建。

gs_ctl build -b incremental -M cascadestandby1

再次查询主机、备机或者级联备机的状态信息,看他们之间是否建立起双机同步状态。

gs_ctl query
重建查询

重建过程中,可以使用 gs_ctl querybuild 进行重建状态查询。该命令查询结果如下:

 Ha state:
        LOCAL_ROLE                     : Standby
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : Building
        DETAIL_INFORMATION             : 58%

LOCAL_ROLE表示当前数据库运行模式;
STATIC_CONNECTIONS表示配置文件中的双机链路数;
DB_STATE表示重建状态,包括正在重建Building、重建完成 Build Completed、待修复NeedRepair;
DETAIL_INFORMATION表示重建百分比或重建失败信息BuildFailed。

示例
用 gs_ctl query 命令在备机上查询与主机的同步状态。

 Ha state:
        LOCAL_ROLE                     : Standby
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : NeedRepair
        DETAIL_INFORMATION             : repl1: SystemIDNotMatched  repl2: ModeNotMatched

 Senders info:
        No information
 Receiver info:
        No information

说明:可以看到DB_STATE : NeedRepair, 表示需要重建备机。

用 gs_ctl query 命令在级联备机上查询与备机的同步状态。

 Ha state:
        LOCAL_ROLE                     : CascadeStandby
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : NeedRepair
        DETAIL_INFORMATION             : repl1: SystemIDNotMatched  repl2: ModeNotMatched

 Senders info:
        No information
 Receiver info:
        No information

说明:可以看到 DB_STATE : NeedRepair, 表示需要重建级联备机。

备机执行 gs_ctl build 命令进行重建。

waiting for server to shut down.... done
server stopped
xlog start point: 0/5000020
gs_ctl: starting background WAL receiver
22408/22408 kB (100%), 1/1 tablespace
xlog end point: 0/50000E0
gs_ctl: waiting for background process to finish streaming...
gs_ctl: build completed.
server starting.... done
server started

级联备机执行 gs_ctl build -M cascadestandby 命令进行重建。

waiting for server to shut down.... done
server stopped
xlog start point: 0/4000020
gs_ctl: starting background WAL receiver
22407/22407 kB (100%), 1/1 tablespace
xlog end point: 0/40000E0
gs_ctl: waiting for background process to finish streaming...
gs_ctl: build completed.
server starting.......... done
server started

用 gs_ctl query 命令在备机上查询与主机的同步关系。

 gaussdba@linux:~> gs_ctl query
 Ha state:
        LOCAL_ROLE                     : Standby
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : Normal
        DETAIL_INFORMATION             : Normal

 Senders info:
        SENDER_PID                     : 25249
        LOCAL_ROLE                     : Standby
        PEER_ROLE                      : CascadeStandby
        PEER_STATE                     : Normal
        STATE                          : streaming
        SENDER_SENT_LOCATION           : 0/9000000
        SENDER_WRITE_LOCATION          : 0/9000000
        SENDER_FLUSH_LOCATION          : 0/9000000
        SENDER_REPLAY_LOCATION         : 0/9000000
        RECEIVER_RECEIVED_LOCATION     : 0/9000000
        RECEIVER_WRITE_LOCATION        : 0/9000000
        RECEIVER_FLUSH_LOCATION        : 0/9000000
        RECEIVER_REPLAY_LOCATION       : 0/9000000
        SYNC_PERCENT                   : 100%
        SYNC_STATE                     : async
        SYNC_PRIORITY                  : 0
        CHANNEL                        : 10.144.197.189:1357 -->10.144.197.190:56188

 Receiver info:
        RECEIVER_PID                   : 23872
        LOCAL_ROLE                     : Standby
        PEER_ROLE                      : Primary
        PEER_STATE                     : Normal
        STATE                          : streaming
        SENDER_SENT_LOCATION           : 0/9000000
        SENDER_WRITE_LOCATION          : 0/9000000
        SENDER_FLUSH_LOCATION          : 0/9000000
        SENDER_REPLAY_LOCATION         : 0/9000000
        RECEIVER_RECEIVED_LOCATION     : 0/9000000
        RECEIVER_WRITE_LOCATION        : 0/9000000
        RECEIVER_FLUSH_LOCATION        : 0/9000000
        RECEIVER_REPLAY_LOCATION       : 0/9000000
        SYNC_PERCENT                   : 100%
        CHANNEL                        : 10.144.197.189:57385 <--10.144.197.188:1357

说明:可以看到DB_STATE:Normal ,说明主备机间的双机关系正常,重建成功。

用 gs_ctl query 命令在级联备机上查询与备机的同步状态。

 Ha state:
        LOCAL_ROLE                     : CascadeStandby
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : Normal
        DETAIL_INFORMATION             : Normal

 Senders info:
        No information
 Receiver info:
        RECEIVER_PID                   : 23840
        LOCAL_ROLE                     : CascadeStandby
        PEER_ROLE                      : Standby
        PEER_STATE                     : Normal
        STATE                          : streaming
        SENDER_SENT_LOCATION           : 0/9000000
        SENDER_WRITE_LOCATION          : 0/9000000
        SENDER_FLUSH_LOCATION          : 0/9000000
        SENDER_REPLAY_LOCATION         : 0/9000000
        RECEIVER_RECEIVED_LOCATION     : 0/9000000
        RECEIVER_WRITE_LOCATION        : 0/9000000
        RECEIVER_FLUSH_LOCATION        : 0/9000000
        RECEIVER_REPLAY_LOCATION       : 0/9000000
        SYNC_PERCENT                   : 100%
        CHANNEL                        : 10.144.197.190:56188 <--10.144.197.189:1357

说明:可以看到DB_STATE:Normal,说明备机与级联备机的双机关系正常,重建成功。

注意:执行重建时,指定了以某种模式重建后,则只能与该模式上一层模式进行双机重建,即备机只能与主机重建,级联备机只能与备机重建,次级联备机只能与级联备机重建。而有一种特殊情况,就是在deploymode为1的情况下,级联备机在重建时如果因某些特殊原因无法与备机建立连接,则此时级联备机可以连接到主机进行重建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值