暂无图片
误删pg_xlog下的文件导致数据库无法正常启动
我来答
分享
手机用户4446
2023-12-24
误删pg_xlog下的文件导致数据库无法正常启动

问题描述
误删pg_xlog文件下的子文件,想用pg_resetxlog /gaussdb/data进行恢复
出现pg_resetxlog:could not open file "global/pg_control" for reading: No such file or directoryIf you are sure the data directory path is correct,executetouch global/pg_controlandtry again
【操作系统和硬件信息】(查询命令: cat /etc/system-release, uname -a):
运行在virtualbox,操作系统为CentOS Linux release 7.6.2003 (Core)
【测试环境】(单机/1主x备x级联备):
单机
【被测功能】:
恢复xlog文件
【测试类型】:
功能测试
【数据库版本】(查询命令: gaussdb -V):
gaussdb (openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:04:03 commit 0 last mr
【预置条件】:

  1. 学校给了我们一个centos_openGauss.ova,我把它导入到virtualbox了
  2. 然后就是通过学校指定的root账号和密码登录
  3. 输入ifconfig,用enmp0s3的网卡IP分别在Xshell和Xftp建立连接

【操作步骤】(请填写详细的操作步骤):

  1. 以操作系统用户omm登录数据库主节点
  2. 启动数据库服务时出现
    image.png
  3. 原因应该是我误删pg_xlog下的文件了,经过百度后尝试恢复,却失败了
    image.png尝试恢复过程如下
    image.png

【预期输出】:
能够恢复pg_xlog,从而打开数据库服务
【实际输出】:
报错
【原因分析】

  1. 上面报错说global/pg_control不存在,但是我却找到了该文件,怀疑pg_resetxlog可能引用pg_control的位置不对
    image.png
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
yBmZlQzJ
2023-12-24

这个问题是因为在执行pg_resetxlog /gaussdb/data时,找不到global/pg_control文件。你可以尝试以下步骤来解决这个问题:

  1. 确保数据目录路径正确。你可以使用psql -c "SHOW data_directory;"命令来查看当前的数据目录路径。如果路径不正确,你需要修改postgresql.conf文件中的data_directory配置项,然后重启PostgreSQL服务。

  2. 如果数据目录路径正确,那么可能是global/pg_control文件丢失了。你可以手动创建一个空的global/pg_control文件,然后再次尝试执行pg_resetxlog /gaussdb/data。创建空文件的命令如下:

        

bash复制代码

touch global/pg_control

  1. 如果上述方法都无法解决问题,你可能需要从备份中恢复数据。首先,确保你有一个有效的备份,然后使用pg_basebackup命令从备份中恢复数据。例如:
        

bash复制代码

pg_basebackup -h 备份服务器IP -U 用户名 -D 目标数据目录 -P --wal-method=fetch --wal-level=replica

注意:请将备份服务器IP用户名目标数据目录替换为实际的值。

暂无图片 评论
暂无图片 有用 12
打赏 0
sg1234
2023-12-26


暂无图片 评论
暂无图片 有用 0
打赏 0
一只dba
2023-12-26

重新初始化一个新data出来,用备份的库恢复,生成的控制文件,再拷贝出来,替换旧的

暂无图片 评论
暂无图片 有用 1
打赏 0
subverter
2024-01-30

注意点:
1、这个是整个库进行了回滚,回滚到指定的事务LSN 号的位置,所以生存环境不会使用这个方法进行恢复。
2、pg_resetwal恢复之后,WAL日志整体被清理,原有的日志(单机)会被归并,原有的日志都没有了。
3、truncate无法进行恢复,因为truncate之后表对应的物理文件发生改变,回滚之后会报错ERROR: could not open file "base/13593/24761": No such file or directory ,且这样回滚之后,就只能通过备份恢复数据库了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏