主要问题:
从表中选择时获取"ERROR: missing chunk number 0 for toast value 37946637 in pg_toast_2619"
。
导致问题的步骤:
-使用主数据库中的pg_basebackup
并尝试将其还原到开发主机上。
-执行pg_resetxlog -f /${datadir}
并启动Dev db。
-在启动Dev db之后,当我查询varchar列时,会得到:
psql> select text_col_name from big_table;
ERROR: missing chunk number 0 for toast value 37946637 in pg_toast_2619
这似乎发生在恢复的数据库中的大多数varchar列上。
还有人看到了吗?
有人知道为什么会发生这种情况以及如何解决吗?
最佳答案
pg_resetxlog是一个有点万不得已的实用程序,您不应该使用它。进行完全工作备份的最简单方法是使用pg_basebackup和-X s
选项。这是一个大写的X。它的作用是basebackup打开两个连接。一个用于复制所有数据文件,另一个用于接收备份期间写入的所有wal。这样你就不会遇到你需要的部分wal已经被删除的问题。