From 44c9a1e198e3e5b20f5b43c61c52eee502ece725 Mon Sep 17 00:00:00 2001 From: chenzhikai <895543892@qq.com> Date: Mon, 14 Oct 2024 14:26:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=A4=87=E6=9C=BA=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E9=9C=80=E8=A6=81=E9=87=8D=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/zh/blogs/Carl/figures/0001.png | Bin 0 -> 65408 bytes ...00\350\246\201\351\207\215\345\273\272.md" | 143 ++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 app/zh/blogs/Carl/figures/0001.png create mode 100644 "app/zh/blogs/Carl/\345\210\244\346\226\255\345\244\207\346\234\272\346\230\257\345\220\246\351\234\200\350\246\201\351\207\215\345\273\272.md" diff --git a/app/zh/blogs/Carl/figures/0001.png b/app/zh/blogs/Carl/figures/0001.png new file mode 100644 index 0000000000000000000000000000000000000000..995f78bd210c42b863ae885c66ac7aded6b4e9e3 GIT binary patch literal 65408 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

EF$0tB< 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 literal 0 HcmV?d00001 diff --git "a/app/zh/blogs/Carl/\345\210\244\346\226\255\345\244\207\346\234\272\346\230\257\345\220\246\351\234\200\350\246\201\351\207\215\345\273\272.md" "b/app/zh/blogs/Carl/\345\210\244\346\226\255\345\244\207\346\234\272\346\230\257\345\220\246\351\234\200\350\246\201\351\207\215\345\273\272.md" new file mode 100644 index 00000000..54451d54 --- /dev/null +++ "b/app/zh/blogs/Carl/\345\210\244\346\226\255\345\244\207\346\234\272\346\230\257\345\220\246\351\234\200\350\246\201\351\207\215\345\273\272.md" @@ -0,0 +1,143 @@ +--- +title: '判断备机是否需要重建' +date: '2024-10-21' +category: 'blog' +tags: ['判断备机是否需要重建'] +archives: '2024-10-21' +author: 'Carl' +summary: '判断备机是否需要重建' +times: '9:30' +--- + +# 判断备机是否需要重建 + +- 前置条件 + - 传统主备1主n备集群 + +# gs_ctl build -b check介绍 + + build -b check 是openGauss提供的检查备机是否需要重建的命令,当备机发生故障恢复后,我们可以通过该命令检查备机是否需要重建。 + build check的返回接口有三种:增量,全量,不需要重建。 + auto build检验逻辑与build check一致,只不过auto build会自动执行build命令。 + +# 流程 + 1.读取主机和备机的pg_control的ckpt + 2.通过ckpt 开始去寻找最大的共同分叉点 + 3.如果找不到公共分叉点,证明主机日志已经被回收,需要做全量build + 4.如果能找到最大公共分叉点,且这一点与备机ckptrec相等,则证明日志无分叉,只是落后,无需build + 5.能找到日志分叉点,且这一点不是备机最大ckpt,需要做增量build + +![](./figures/0001.png) + +# 使用效果 + 1. 全量build 这里手动删除部分xlog,模拟日志被回收的情况 + +``` +[czk@openGauss82 ~]$ gs_ctl build -b check +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: gs_ctl build check ,datadir is /opt/czk/install/data/dn +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: fopen build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: fprintf build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: fsync build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: stop failed, killing gaussdb by force ... +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: command [ps c -eo pid,euid,cmd | grep gaussdb | grep -v grep | awk '{if($2 == curuid && $1!="-n") print "/proc/"$1"/cwd"}' curuid=`id -u`| xargs ls -l | awk '{if ($NF=="/opt/czk/install/data/dn") print $(NF-2)}' | awk -F/ '{print $3 }' | xargs kill -9 >/dev/null 2>&1 ] path: [/opt/czk/install/data/dn] +[2024-10-11 09:15:54.637][1678748][][gs_ctl]: server stopped +[2024-10-11 09:15:54.638][1678748][][gs_ctl]: current workdir is (/home/czk). +[2024-10-11 09:15:54.640][1678748][dn_6001_6002][gs_ctl]: Get repl_auth_mode is and repl_uuid is +[2024-10-11 09:15:54.680][1678748][dn_6001_6002][gs_ctl]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.750][1678748][dn_6001_6002][gs_rewind]: connected to server: host=20.20.20.79 port=19219 dbname=postgres application_name=gs_rewind connect_timeout=5 rw_timeout=600 +[2024-10-11 09:15:54.754][1678748][dn_6001_6002][gs_rewind]: connect to primary success +[2024-10-11 09:15:54.754][1678748][dn_6001_6002][gs_rewind]: find last checkpoint at 0/18003860 and checkpoint redo at 0/18003860 from target control file +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: get primary pg_control success +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: target server was interrupted in mode 1. +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: sanityChecks success +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: find last checkpoint at 0/180036A0 and checkpoint redo at 0/18003620 from source control file +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: find max lsn success, find max lsn rec (0/18003860) success. +[2024-10-11 09:15:54.756][1678748][dn_6001_6002][gs_rewind]: Get repl_auth_mode is and repl_uuid is +[2024-10-11 09:15:54.795][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.795][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/180036A0 and its crc(source, target):[1158223492, 3927131982] +[2024-10-11 09:15:54.840][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.840][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/18003580 and its crc(source, target):[3680505096, 799574682] +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/18003460 and its crc(source, target):[545018517, 545018517] +[2024-10-11 09:18:51.453][1755902][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:18:51.453][1755902][dn_6001_6002][gs_rewind]: request lsn is 0/160002E8 and its crc(source, target):[0, 1075449653] +[2024-10-11 09:18:51.492][1755902][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:18:51.492][1755902][dn_6001_6002][gs_rewind]: request lsn is 0/160001C8 and its crc(source, target):[0, 649075532] +[2024-10-11 09:18:51.518][1755902][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:18:51.518][1755902][dn_6001_6002][gs_rewind]: request lsn is 0/160000A8 and its crc(source, target):[0, 1029292914] +…… +[2024-10-11 09:18:51.519][1755902][dn_6001_6002][gs_rewind]: could not find previous WAL record at 0/15000058: read xlog page failed at 0/15000058 + +gs_rewind receive FATAL, it will exit +[2024-10-11 09:18:51.519][1755902][dn_6001_6002][gs_rewind]: Build check result : full build +[2024-10-11 09:18:51.519][1755902][dn_6001_6002][gs_rewind]: build check failed(/opt/czk/install/data/dn). +``` + + 2. 增量build + +``` +[czk@openGauss82 ~]$ gs_ctl build -b check +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: gs_ctl build check ,datadir is /opt/czk/install/data/dn +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: fopen build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.559][1678748][][gs_ctl]: fprintf build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: fsync build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: stop failed, killing gaussdb by force ... +[2024-10-11 09:15:54.587][1678748][][gs_ctl]: command [ps c -eo pid,euid,cmd | grep gaussdb | grep -v grep | awk '{if($2 == curuid && $1!="-n") print "/proc/"$1"/cwd"}' curuid=`id -u`| xargs ls -l | awk '{if ($NF=="/opt/czk/install/data/dn") print $(NF-2)}' | awk -F/ '{print $3 }' | xargs kill -9 >/dev/null 2>&1 ] path: [/opt/czk/install/data/dn] +[2024-10-11 09:15:54.637][1678748][][gs_ctl]: server stopped +[2024-10-11 09:15:54.638][1678748][][gs_ctl]: current workdir is (/home/czk). +[2024-10-11 09:15:54.640][1678748][dn_6001_6002][gs_ctl]: Get repl_auth_mode is and repl_uuid is +[2024-10-11 09:15:54.680][1678748][dn_6001_6002][gs_ctl]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.750][1678748][dn_6001_6002][gs_rewind]: connected to server: host=20.20.20.79 port=19219 dbname=postgres application_name=gs_rewind connect_timeout=5 rw_timeout=600 +[2024-10-11 09:15:54.754][1678748][dn_6001_6002][gs_rewind]: connect to primary success +[2024-10-11 09:15:54.754][1678748][dn_6001_6002][gs_rewind]: find last checkpoint at 0/18003860 and checkpoint redo at 0/18003860 from target control file +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: get primary pg_control success +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: target server was interrupted in mode 1. +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: sanityChecks success +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: find last checkpoint at 0/180036A0 and checkpoint redo at 0/18003620 from source control file +[2024-10-11 09:15:54.755][1678748][dn_6001_6002][gs_rewind]: find max lsn success, find max lsn rec (0/18003860) success. +[2024-10-11 09:15:54.756][1678748][dn_6001_6002][gs_rewind]: Get repl_auth_mode is and repl_uuid is +[2024-10-11 09:15:54.795][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.795][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/180036A0 and its crc(source, target):[1158223492, 3927131982] +[2024-10-11 09:15:54.840][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.840][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/18003580 and its crc(source, target):[3680505096, 799574682] +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: request lsn is 0/18003460 and its crc(source, target):[545018517, 545018517] +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: find common checkpoint 0/18003460 +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: find diverge point success +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: Build check result : incremental build +[2024-10-11 09:15:54.869][1678748][dn_6001_6002][gs_rewind]: build check completed(/opt/czk/install/data/dn). +``` + + 3. 不需要build + +``` +[czk@openGauss82 ~]$ gs_ctl build -b check +[2024-10-14 14:05:31.218][2966707][][gs_ctl]: gs_ctl build check ,datadir is /opt/czk/install/data/dn +[2024-10-14 14:05:31.218][2966707][][gs_ctl]: fopen build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-14 14:05:31.218][2966707][][gs_ctl]: fprintf build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-14 14:05:31.239][2966707][][gs_ctl]: fsync build pid file "/opt/czk/install/data/dn/gs_build.pid" success +[2024-10-14 14:05:31.239][2966707][][gs_ctl]: stop failed, killing gaussdb by force ... +[2024-10-14 14:05:31.239][2966707][][gs_ctl]: command [ps c -eo pid,euid,cmd | grep gaussdb | grep -v grep | awk '{if($2 == curuid && $1!="-n") print "/proc/"$1"/cwd"}' curuid=`id -u`| xargs ls -l | awk '{if ($NF=="/opt/czk/install/data/dn") print $(NF-2)}' | awk -F/ '{print $3 }' | xargs kill -9 >/dev/null 2>&1 ] path: [/opt/czk/install/data/dn] +[2024-10-14 14:05:31.290][2966707][][gs_ctl]: server stopped +[2024-10-14 14:05:31.290][2966707][][gs_ctl]: current workdir is (/home/czk). +[2024-10-14 14:05:31.292][2966707][dn_6001_6002][gs_ctl]: Get repl_auth_mode is and repl_uuid is +[2024-10-14 14:05:31.322][2966707][dn_6001_6002][gs_ctl]: build try host(20.20.20.79) port(19219) success +[2024-10-14 14:05:31.391][2966707][dn_6001_6002][gs_rewind]: connected to server: host=20.20.20.79 port=19219 dbname=postgres application_name=gs_rewind connect_timeout=5 rw_timeout=600 +[2024-10-14 14:05:31.398][2966707][dn_6001_6002][gs_rewind]: connect to primary success +[2024-10-14 14:05:31.398][2966707][dn_6001_6002][gs_rewind]: find last checkpoint at 0/2F4C6AE0 and checkpoint redo at 0/2F4C6A60 from target control file +[2024-10-14 14:05:31.399][2966707][dn_6001_6002][gs_rewind]: get primary pg_control success +[2024-10-14 14:05:31.399][2966707][dn_6001_6002][gs_rewind]: target server was interrupted in mode 2. +[2024-10-14 14:05:31.399][2966707][dn_6001_6002][gs_rewind]: sanityChecks success +[2024-10-14 14:05:31.399][2966707][dn_6001_6002][gs_rewind]: find last checkpoint at 0/2F4C6AE0 and checkpoint redo at 0/2F4C6A60 from source control file +[2024-10-14 14:05:31.411][2966707][dn_6001_6002][gs_rewind]: find max lsn success, find max lsn rec (0/2F4C6AE0) success. +[2024-10-14 14:05:31.411][2966707][dn_6001_6002][gs_rewind]: Get repl_auth_mode is and repl_uuid is +[2024-10-14 14:05:31.437][2966707][dn_6001_6002][gs_rewind]: build try host(20.20.20.79) port(19219) success +[2024-10-14 14:05:31.437][2966707][dn_6001_6002][gs_rewind]: request lsn is 0/2F4C6AE0 and its crc(source, target):[757210003, 757210003] +[2024-10-14 14:05:31.437][2966707][dn_6001_6002][gs_rewind]: find common checkpoint 0/2F4C6AE0 +[2024-10-14 14:05:31.437][2966707][dn_6001_6002][gs_rewind]: find diverge point success +[2024-10-14 14:05:31.437][2966707][dn_6001_6002][gs_rewind]: Build check result : needless build +[2024-10-14 14:05:31.438][2966707][dn_6001_6002][gs_rewind]: build check completed(/opt/czk/install/data/dn). +``` + + +***作者:Carl*** -- Gitee