Skip to content

Commit 71627b6

Browse files
digoal zhoudigoal zhou
authored andcommitted
new doc
1 parent e07dacf commit 71627b6

File tree

6 files changed

+63
-6
lines changed

6 files changed

+63
-6
lines changed

201012/20101210_01.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## PostgreSQL single-user mode usage,like Repair Database
1+
## PostgreSQL single-user mode 单用户模式修复 database is not accepting commands to avoid wraparound data loss in database "...." 问题 - usage,like Repair Database
22
33
### 作者
44
digoal
@@ -46,7 +46,7 @@ HINT: To avoid a database shutdown, execute a database-wide VACUUM in "mydb".
4646
提示需要手工的消除这些警告,如果忽略不去处理的话,后面数据库可能需要关闭来处理,下面会提到.处理的方法是使用超级用户
4747

4848
```
49-
VACUUM mydb.
49+
VACUUM freeze mydb.
5050
```
5151

5252
(这里用到超级用户的原因是需要更新系统表的datfrozenxid列值)
@@ -67,15 +67,21 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb".
6767
```
6868
# su - postgres
6969
(确保数据库已经关闭)
70+
71+
进某个database的单用户模式, 每个库都要跑一遍(包括postgres, template1)
7072
$ postgres --single mydb_name
7173
7274
postgres@db-bak-192-168-105-35-> postgres --single rmt_rescue
7375
PostgreSQL stand-alone backend 9.0.1
74-
backend> vacuum full; (不带任何参数的VACUUM将对所有当前用户有权限的表进行操作)
76+
77+
backend> vacuum freeze ;
7578
backend> Ctrl+D 退出单用户模式.
79+
80+
重复其他database
81+
注意: 如果自动freeze未降年龄的原因是未结束的2PC事务或未消费的logical replication SLOT造成的, 那么需要先结束2pc,删除slot, 再跑vacuum freeze;
7682
```
7783

78-
通常可以进入单用户模式后,查出最大年龄的表,对表进行vacuum freeze.
84+
如果数据库很大, vacuum freeze耗时可能很长, 为了尽快能修复问题, 可以进入单用户模式后,查出最大年龄的表,只对造成问题的表进行vacuum freeze.
7985

8086
```
8187
backend> select nspname, relname, age(relfrozenxid) from pg_class t1 , pg_namespace t2 where t1.relnamespace=t2.oid and relkind in ('r','t','m') order by age(relfrozenxid) desc limit 10;

201012/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
### 文章列表
44
----
55
##### 20101230_01.md [《PostgreSQL HOT STANDBY using log shipping》](20101230_01.md)
6-
##### 20101210_01.md [《PostgreSQL single-user mode usage,like Repair Database》](20101210_01.md)
6+
##### 20101210_01.md [《PostgreSQL single-user mode 单用户模式修复 database is not accepting commands to avoid wraparound data loss in database "...." 问题 - usage,like Repair Database》](20101210_01.md)

202103/20210329_01.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ PG 社区版作为培训基本版本, 增加国产数据库品牌内容。
245245
企业最佳实践沉淀.
246246
企业得到解决方案, 技术咨询,
247247
PG独特性实践+生产力案例宣传, 突出企业收益、企业第一责任团队价值、数据库价值, 多赢推动宣传.
248+
付费企业会员可享受: 企业内部培训、专家咨询、活动分享席位、活动免费参加席位等.
248249

249250
9、建立高校版块, 走进高校, 影响下一代:
250251
进入高校搞企业或行业数据库专场, 吸引学生参加

202104/20210419_01.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
## BUG: vacuum freeze 报错 ERROR: found xmin ...... from before relfrozenxid .... 处理方法
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2021-04-19
8+
9+
### 标签
10+
PostgreSQL , freeze , bug , relcache
11+
12+
----
13+
14+
## 背景
15+
16+
```
17+
template1=> vacuum freeze template1.pg_catalog.pg_authid;
18+
ERROR: found xmin 1988747257 from before relfrozenxid 2810153180
19+
```
20+
21+
vacuum freeze报错的问题:
22+
- 10.2,9.6.7,9.5.11,9.4.16以后 到 修复版本之间 的版本的PG都会存在相关问题。
23+
- 10.5, 9.6.10, 9.5.14, 9.4.19 对这个问题进行了修复。
24+
25+
bugfix patch如下:
26+
- https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=817f9f9a8a1932a0cd8c6bc5c9d3e77f6a80e659
27+
28+
可以通过以下任意方式进行修复:
29+
1、重启数据库,重启后会重新读入新数据内容到relcache中,相当于刷新relcache。
30+
2、删除```$PGDATA/global/pg_internal.init```,这个文件就是存储的relcache的内容,有新的连接连入会创建新的```pg_internal.init```文件。
31+
32+
33+
34+
#### [PostgreSQL 许愿链接](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
35+
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。[开不开森](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216").
36+
37+
38+
#### [9.9元购买3个月阿里云RDS PostgreSQL实例](https://www.aliyun.com/database/postgresqlactivity "57258f76c37864c6e6d23383d05714ea")
39+
40+
41+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
42+
43+
44+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
45+
46+
47+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
48+

202104/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
### 文章列表
44
----
5+
##### 20210419_01.md [《BUG: vacuum freeze 报错 ERROR: found xmin ...... from before relfrozenxid .... 处理方法》](20210419_01.md)
56
##### 20210418_01.md [《喜马拉雅 和 B站 很多学习内容 值得推荐》](20210418_01.md)
67
##### 20210417_04.md [《直播 SaaS行业需要什么样的数据库? - 案例: 智赢跨境电商ERP, 家庭主妇年薪百万的秘密》](20210417_04.md)
78
##### 20210417_03.md [《PostgreSQL 国内外信息获取渠道 - 新闻、研发、软件、用户组、FAQ、博客、会议、相关项目、开源代码、JOB、安全信息、技能评估、培训等》](20210417_03.md)

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ digoal's|PostgreSQL|文章|归类
8383

8484
### 所有文档如下
8585
----
86+
##### 202104/20210419_01.md [《BUG: vacuum freeze 报错 ERROR: found xmin ...... from before relfrozenxid .... 处理方法》](202104/20210419_01.md)
8687
##### 202104/20210418_01.md [《喜马拉雅 和 B站 很多学习内容 值得推荐》](202104/20210418_01.md)
8788
##### 202104/20210417_04.md [《直播 SaaS行业需要什么样的数据库? - 案例: 智赢跨境电商ERP, 家庭主妇年薪百万的秘密》](202104/20210417_04.md)
8889
##### 202104/20210417_03.md [《PostgreSQL 国内外信息获取渠道 - 新闻、研发、软件、用户组、FAQ、博客、会议、相关项目、开源代码、JOB、安全信息、技能评估、培训等》](202104/20210417_03.md)
@@ -3138,7 +3139,7 @@ digoal's|PostgreSQL|文章|归类
31383139
##### 201101/20110104_01.md [《PostgreSQL HOT STANDBY using Stream replication》](201101/20110104_01.md)
31393140
----
31403141
##### 201012/20101230_01.md [《PostgreSQL HOT STANDBY using log shipping》](201012/20101230_01.md)
3141-
##### 201012/20101210_01.md [《PostgreSQL single-user mode usage,like Repair Database》](201012/20101210_01.md)
3142+
##### 201012/20101210_01.md [《PostgreSQL single-user mode 单用户模式修复 database is not accepting commands to avoid wraparound data loss in database "...." 问题 - usage,like Repair Database》](201012/20101210_01.md)
31423143
----
31433144
##### 201011/20101129_01.md [《PostgreSQL 不同版本的保留字不同引发的逻辑备份异常处理 - pg_dump ERROR: syntax error at or near "old"》](201011/20101129_01.md)
31443145
----

0 commit comments

Comments
 (0)