diff --git a/app/zh/blogs/zhangxb/images/image-20241116160530106.png b/app/zh/blogs/zhangxb/images/image-20241116160530106.png new file mode 100644 index 0000000000000000000000000000000000000000..e52929f301a7d13c617bba27573d233ab874a685 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116160530106.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164149089.png b/app/zh/blogs/zhangxb/images/image-20241116164149089.png new file mode 100644 index 0000000000000000000000000000000000000000..8379750237226032da86ee77d9c0cc26bbbcc600 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164149089.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164406357.png b/app/zh/blogs/zhangxb/images/image-20241116164406357.png new file mode 100644 index 0000000000000000000000000000000000000000..969f10eaacb6d422954665571508186a707327d1 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164406357.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164525914.png b/app/zh/blogs/zhangxb/images/image-20241116164525914.png new file mode 100644 index 0000000000000000000000000000000000000000..23d208ddbee2e97c37d123910c2bc37978b26e4c Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164525914.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164540158.png b/app/zh/blogs/zhangxb/images/image-20241116164540158.png new file mode 100644 index 0000000000000000000000000000000000000000..c042faf8665a07d9b914afb4849711b2282c04e4 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164540158.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164552916.png b/app/zh/blogs/zhangxb/images/image-20241116164552916.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fd4109baad71a9e7bc8e4ea36399bd61ecb6d4 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164552916.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164559596.png b/app/zh/blogs/zhangxb/images/image-20241116164559596.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fd4109baad71a9e7bc8e4ea36399bd61ecb6d4 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164559596.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116164814225.png b/app/zh/blogs/zhangxb/images/image-20241116164814225.png new file mode 100644 index 0000000000000000000000000000000000000000..db702a41326e1288bbfced98106cf3a19fb9fd22 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116164814225.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116165046356.png b/app/zh/blogs/zhangxb/images/image-20241116165046356.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1f5cef7d326dd6ad2ef976e20511ba9f2b1814 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116165046356.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116165048957.png b/app/zh/blogs/zhangxb/images/image-20241116165048957.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1f5cef7d326dd6ad2ef976e20511ba9f2b1814 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116165048957.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116171607162.png b/app/zh/blogs/zhangxb/images/image-20241116171607162.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5db4af88f9cfdeff56fed3806033cc3f0e25ad Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116171607162.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116171615741.png b/app/zh/blogs/zhangxb/images/image-20241116171615741.png new file mode 100644 index 0000000000000000000000000000000000000000..3f82defeb8021da14d1dc2ddd9f9d77a6de7ebab Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116171615741.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116171919192.png b/app/zh/blogs/zhangxb/images/image-20241116171919192.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f35d1d18b12d90040a9d3e2d2212e59a59172a Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116171919192.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116172253115.png b/app/zh/blogs/zhangxb/images/image-20241116172253115.png new file mode 100644 index 0000000000000000000000000000000000000000..17a77457560e8ec64030985e642d4438aed85475 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116172253115.png differ diff --git a/app/zh/blogs/zhangxb/images/image-20241116173744831.png b/app/zh/blogs/zhangxb/images/image-20241116173744831.png new file mode 100644 index 0000000000000000000000000000000000000000..84823a4f06966a0fc800bcbd502690ae8d05bb99 Binary files /dev/null and b/app/zh/blogs/zhangxb/images/image-20241116173744831.png differ diff --git "a/app/zh/blogs/zhangxb/openGauss\345\256\271\347\201\276\351\233\206\347\276\244\345\273\272\347\253\213\345\245\275\344\272\206\345\220\216\344\277\256\346\224\271\345\257\206\347\240\201.md" "b/app/zh/blogs/zhangxb/openGauss\345\256\271\347\201\276\351\233\206\347\276\244\345\273\272\347\253\213\345\245\275\344\272\206\345\220\216\344\277\256\346\224\271\345\257\206\347\240\201.md" new file mode 100644 index 0000000000000000000000000000000000000000..26743aedfb66033e35bd98a47e6da32dde43a8dc --- /dev/null +++ "b/app/zh/blogs/zhangxb/openGauss\345\256\271\347\201\276\351\233\206\347\276\244\345\273\272\347\253\213\345\245\275\344\272\206\345\220\216\344\277\256\346\224\271\345\257\206\347\240\201.md" @@ -0,0 +1,108 @@ +--- +title: 'openGauss容灾集群建立好了后修改密码' +date: '2024-11-16' +category: 'blog' +tags: ['openGauss容灾集群建立好了后修改密码'] +archives: '2024-11-16' +author: 'zhangxb' +summary: 'openGauss容灾集群建立好了后修改密码' +img: '/zh/blogs/zhangxb/title/img.png' +times: '18:40' +--- + +# openGauss容灾集群建立好了后修改密码 + +## 前提 + +资料里面介绍灾备建立好了后不可以修改密码,如果要修改密码需要重新搭建灾备关系。 主要是在于该操作风险比较高,漏改等会导致灾备无法建联。 + +![image-20241116172253115](.//images/image-20241116172253115.png) + +## 1. 搭建灾备集群 + +``` +gsql -d postgres -p 2400 -c "create user sdru1 with replication password 'opengauss@123';" + + gs_sdr -t start -m primary -X /opt/sdrmain.xml --time-out=7200 -U 'sdru1' -W 'opengauss@123' +``` + +![image-20241116160530106](.//images/image-20241116160530106.png) + +## 2. 直接修改密码(重启灾备后会导致无法建联) + +![image-20241116164149089](.//images/image-20241116164149089.png) + +修改密码完成后,删掉灾备节点数据库进程(模拟重启操作) + +![image-20241116164406357](.//images/image-20241116164406357.png) + +灾备无法拉起来,数据库日志报错walreceiver连接密码错误,尝试10次失败后sdr用户被锁定。 集群状态无法恢复。 + +![image-20241116164559596](.//images/image-20241116164559596.png) + +![image-20241116164525914](.//images/image-20241116164525914.png) + +![image-20241116164540158](.//images/image-20241116164540158.png) + +## 3. 说明 + +om工具在搭建灾备涉及加密的如下几步: + +1. 生成hadr加密需要的前缀(hadr.key.cipher 和 hadr.key.rand),放在 $GAUSSHOME/bin下(该操作不涉及用户密码) + + ``` + gs_guc generate -S default -o hadr -D /data2/zzzog/openGauss/app/bin/ + ``` + + + +2. 对用户和密码明文加密(需要借助上一步生产的hadr.key.*,会从 bin目录下查找) + + ``` + gs_encrypt -f 'hadr' "sdru1|test@123456" + ``` + + + +3. 将加密的密文设置保存到CONFIGURATION系统表里面,walreceiver从这里获取进行连接认证 + + ``` + select value from gs_global_config where name='hadr_user_info'; + ALTER GLOBAL CONFIGURATION with(hadr_user_info ='kPuk8ITNo1JKS3xrs/VgQhJim4sGVkGkj8hxxNBvtibC6Du26xdRe8N5WuYPITAGdeYxAgTnsAlAOjhsouB7/Q=='); + ``` + + ![image-20241116173744831](.//images/image-20241116173744831.png) + +## 4. 修改密码步骤 + +基于上面的说明,修改密码需要两步: + +1. 在主节点修改sdr用户密码 + + ``` + alter user sdru1 password 'abc@1234567'; + ``` + +2. 生成密码的密文,保存在系统表里面 + +``` +gs_encrypt -f 'hadr' "sdru1|abc@1234567" +ALTER GLOBAL CONFIGURATION with(hadr_user_info ='kPuk8ITNo1JKS3xrs/VgQhJim4sGVkGkj8hxxNBvtibC6Du26xdRe8N5WuYPITAGdeYxAgTnsAlAOjhsouB7/Q=='); +``` + +**注意** + +1. 修改密码时候必须保证当前主集群和灾备连接正常,保证主机修改后灾备可以同步修改。 如果灾备连接有问题,会导致两者不一致,后面就无法建立连接,只能重新搭建 +2. 生成密码需要的前缀文件(hadr.key.cipher 和 hadr.key.rand),修改密码时候可以不需要重新生成。在密码生成密文后就不能再去改该文件,否则会导致密文解析失败,也会影响链接。 + +## 5. 修改密码后验证 + +1. 灾备重启可以正常连接 + +![image-20241116171607162](.//images/image-20241116171607162.png) + +![image-20241116171615741](.//images/image-20241116171615741.png) + +2. 灾备切换正常 + +![image-20241116171919192](.//images/image-20241116171919192.png) \ No newline at end of file diff --git "a/app/zh/blogs/zhangxb/openGauss\347\232\204xlog\344\270\215\345\233\236\346\224\266\345\216\237\345\233\240\345\222\214\344\277\256\345\244\215\346\226\271\346\241\210.md" "b/app/zh/blogs/zhangxb/openGauss\347\232\204xlog\344\270\215\345\233\236\346\224\266\345\216\237\345\233\240\345\222\214\344\277\256\345\244\215\346\226\271\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..8bdce73cb2bdf37b05891fcdfbe30dd71b136c65 --- /dev/null +++ "b/app/zh/blogs/zhangxb/openGauss\347\232\204xlog\344\270\215\345\233\236\346\224\266\345\216\237\345\233\240\345\222\214\344\277\256\345\244\215\346\226\271\346\241\210.md" @@ -0,0 +1,104 @@ +--- +title: 'openGauss的xlog不回收原因和修复方案' +date: '2024-10-16' +category: 'blog' +tags: ['openGauss的xlog不回收原因和修复方案'] +archives: '2024-10-16' +author: 'zhangxb' +summary: 'openGauss的xlog不回收原因和修复方案' +img: '/zh/blogs/zhangxb/title/img.png' +times: '14:20' +--- + +## openGauss的xlog不回收原因和修复方案 + +介绍几种导致xlog不回收问题的原因。 + +### 问题现象 + +数据库的pg_xlog目录大小一直增长,目录下的xlog文件不回收。超过了阈值,存在空间写满的风险。 + +### 原因分析 + +通常xlog会保留 wal_keep_segments + checkpoint_segments * 2 + 1 个xlog文件,每个文件16MB。 + +以wal_keep_segments=1024 和 checkpoint_segments=1024为例,大约会保留:(wal_keep_segments+checkpoint_segments * 2 + 1) * 16MB = (1024 + 1024 * 2 + 1) * 16MB = 48GB, 大约会在50GB左右。如果远远超过了这个大小,那么就是有存在xlog不回收问题。 + +数据库会1min对日志进行一次清理,pg_log里面关键字(attempting to remove WAL),如果长时间日志里面清理xlog文件都是同一个,就有异常导致清理受到阻塞。 + +常见以下几个方面会引起xlog不回收: + +#### 1. 备机故障引起主机xlog不回收 + +开启enable_xlog_prune=on,在配置备机实例宕掉后,主机需要给备机保留xlog。max_size_for_xlog_prune配置最大保留的xlog目录大小。 + +备机是否有异常,使用 ` gs_ctl query -D [数据目录] ` 来确定,再和下面的备机个数以及状态对比下: + +![](./ops/xlogclear1.png) + +max_size_for_xlog_prune需要设置个合理的值,备机故障时候不会导致xlog无限膨胀。 + +**案例:** 一个一主2备集群,用户手动把备机去掉,但是postgresql.conf里面的replconninfo还在,xlog目录日志持续写入不回收。 + +![](./ops/xlogclear2.png) + +这时候由于replconninfo在,即主机认为有2个备机需要连,但是异常了没连接上,会给备机保留日志。 + +后面手动注释掉配置文件里面的replconninfo已经下掉的备机配置。 + +#### 2. 复制槽不推进引起主备节点xlog均不回收 + +常见于逻辑复制不推进,主机需要为逻辑复制保留xlog数据。出问题首先查询逻辑复制视图: + +``` +select * from pg_replication_slots ; +``` + +关注active和restart_lsn这两列。 + +![](./ops/xlogclear3.png) + +处理方式: + +如果逻辑复制在用,需要应用侧启动正常推进复制槽位点。 + +确认不再用的删除逻辑复制槽 + +```select pg_drop_replication_slot('slot name'); ``` + +#### 3. 开启xlog日志归档,但是归档目录异常,导致归档所在节点xlog不回收 + +开启归档archive_mode=on,但是归档路径不存在或者路径权限不正确,pg_xlog下的日志文件无法移动到归档目录下,也会导致xlog目录大小持续增加。 + +到归档目录下检查下日志拷贝是否正常来确认归档是否有问题。 + +#### 4. 备机逻辑复制槽残留导致备机xlog不回收 + +这种不是正常行为,第二点里面 (2)复制槽不推进引起主备节点xlog均不回收 + +通过删除逻辑复制槽可以清理。 但是如果主机的删掉了,备机上由于某些故障没有删除逻辑复制槽,那会存在主机上xlog正常清理,但是备机上xlog不回收。 + +此时需要仅删除备机上的逻辑复制槽,需要从物理层面删除。 + +(1) 停止该备机:(主机是否带CM停止和启动单个实例命令不同) + +``` +gs_ctl stop -D /ogdata/data/dn1  ## 不带CM + +cm_ctl stop -n 5 -D /ogdata/data/dn1  ## 带CM, -n 5为第几个实例。 +``` + +(2) 到数据目录下的 pg_replslot物理删除逻辑复制目录 + +``` +cd /ogdata/data/dn1/pg_replslot +删除对应复制槽: rm -rf  xxxx +``` + +(3) 拉起该备机 + +``` +gs_ctl start -D /ogdata/data/dn1 -M standby  ## 不带CM + +cm_ctl start -n 5 -D /ogdata/data/dn1   ## 带CM +``` diff --git a/app/zh/blogs/zhangxb/ops/xlogclear1.png b/app/zh/blogs/zhangxb/ops/xlogclear1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6363bccfd02a47d2c91f209c8eb1de61ff75e3 Binary files /dev/null and b/app/zh/blogs/zhangxb/ops/xlogclear1.png differ diff --git a/app/zh/blogs/zhangxb/ops/xlogclear2.png b/app/zh/blogs/zhangxb/ops/xlogclear2.png new file mode 100644 index 0000000000000000000000000000000000000000..648d5c3784026a701da876a9c86580bad76470fe Binary files /dev/null and b/app/zh/blogs/zhangxb/ops/xlogclear2.png differ diff --git a/app/zh/blogs/zhangxb/ops/xlogclear3.png b/app/zh/blogs/zhangxb/ops/xlogclear3.png new file mode 100644 index 0000000000000000000000000000000000000000..9a740954883083fdd1833b928444055e5cc711e4 Binary files /dev/null and b/app/zh/blogs/zhangxb/ops/xlogclear3.png differ