无法使用Postgres WAL文件还原数据

问题描述

我是Postgresql的新手。 我正在尝试设置流式复制(Postgresql 9.1)。 我想在本地测试备份和还原。 我也使用pg_basebackup成功制作了备份文件(我认为是) 但是无法还原数据。 这是我设置数据库方法

  • server1(主服务器)上的Postgres

    配置文件:/var/lib/pgsql/9.1/data/postgresql.conf

     # WRITE AHEAD LOG
     wal_level = hot_standby
    
     # - Archiving -
     archive_mode = on
     archive_command = 'cp %p /var/lib/pgsql/9.1/wal-archive/%f'
    
     # - Master Server -
     max_wal_senders = 5
     wal_keep_segments = 32
    
     # - Standby Servers -
     hot_standby = on
    
  • 启动母版并插入一些数据

  • 服务器2上的Postgres(从服务器)

    配置文件:/var/lib/pgsql/9.1/data/postgresql.conf(内容与主文件相同)

  • 在从属服务器上创建recovery.conf文件

     // vi /var/lib/pgsql/9.1/data/recovery.conf
     standby_mode = 'on'
     primary_conninfo = 'host={master_hostname} port=5432 user=repl_user password={my_password}'
    
  • 启动从属=>,数据自动与主控同步

  • 创建WAL备份

     // slave
     service postgresql-9.1 stop
     rm -rf /var/lib/pgsql/9.1/data/*
     su - postgres
     pg_basebackup -h {master_hostname} -p 5432 -U repl_user -D /var/lib/pgsql/9.1/data --xlog --checkpoint=spread --progress
    
  • 在从属服务器上执行/var/lib/pgsql/9.1/wal-archive后,将在主服务器上的pg_basebackup生成WAL文件

     // something like this
     000000070000000000000013
     000000070000000000000014
     000000070000000000000015
     000000070000000000000015.00000020.backup
    
  • 丢一张桌子(主人)

     DROP TABLE {table_name}
    
  • 使用WAL文件(主文件)恢复删除的表

     service postgresql-9.1 stop 
     vi /var/lib/pgsql/9.1/data/recovery.conf
    
     // add this line to recovery.conf
     restore_command = 'cp /var/lib/pgsql/9.1/wal-archive/%f %p'
    
  • 再次启动母版

     service postgresql-9.1 start
    

但是该删除的表无法在主服务器上还原。我不知道为什么 我还尝试添加一些其他选项,但是一切都不起作用。

recovery_target_time = '2020-10-29 08:20:00 UTC'
recovery_target_inclusive = false

请帮助您如何使用WAL文件还原数据。

如果我不小心将表放到master上,如何使用WAL文件还原它?我应该在recovery.conf文件上设置哪种配置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)