主要问题:
从表中选择时获取 “错误:pg_toast_2619 中 toast 值 37946637 缺少 block 编号 0”
。
导致问题的步骤:
- 使用主数据库中的 pg_basebackup
并尝试将其恢复到开发主机上。
- 执行了 pg_resetxlog -f/${datadir}
并启动了开发数据库。
- 启动 Dev 数据库后,当我查询 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 是一个不得已而为之的工具,您最好不要使用它。制作完整工作备份的最简单方法是使用带有 -X s
选项的 pg_basebackup。那是一个大写的 X。它所做的是 basebackup 打开两个连接。一个用于复制所有数据文件,一个用于接收在备份期间写入的所有 wal。这样你就不会遇到你需要的部分 wal 已经被删除的问题。
关于postgresql - pg_toast_2619 中 toast 值 37946637 缺少 block 号 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486711/