1.日志备份 接着课程之前的环境继续配置,由于本人的data的目录在/usr/local/pgsql/data。 cd /usr/local/pgsql/data 直接进入到data目录下的postgresql.conf进行配置, %p表示xlog文件名$PGDATA的相对路径, 如pg_xlog/00000001000000190000007D %f 表示xlog文件名, 如00000001000000190000007D
archive_command = 'DATE=date +%Y%m%d
; DIR="home/arch/$DATE"; (test -d $DIR || mkdir -p $DIR) && cp /usr/local/pgsql/data/%p $DIR/%f'
wal_level = logical
之后就可登录在命令行下执行 插入测试数据 create table t10(id int); insert into t10 select generate_series(1,10);
执行 checkpoint; select pg_switch_xlog();
在data目录下面的pg_xlog可以看到相关产地日志文件
在data下面的home/arch有产出当天的复制文件
#执行热备 /usr/local/pgsql/bin/psql -c"select pg_start_backup('hot_backup');"
#对日志名称进行修改 DATE=date +%Y%m%d
#压缩日志 tar -cf /usr/local/pgsql/data/home/arch/$DATE.backup.tar /usr/local/pgsql/data/
#停止热备 /usr/local/pgsql/bin/psql -c "select pg_stop_backup();"
#追加停止之后日志到压缩包 tar -rf /usr/local/pgsql/data/home/arch/$DATE.backup.tar /usr/local/pgsql/data/home/arch/$DATE/
2.备份还原 用postgres用户登录,然后进行以下操作,果然全部删除data,直接用直接备份的压缩包还原即可。我是直接删除日志,根据日志备份进行还原
关闭数据库 /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile stop
清空/data/pg_xlog/目录下所有文件 rm –r /usr/local/pgsql/data/pg_xlog/
创建/pg_xlog/及其下面的archive_status目录 mkdir /usr/local/pgsql/data/pg_xlog/ mkdir /usr/local/pgsql/data/pg_xlog/archive_status
在/data/目录下创建recovery.conf vim /usr/local/pgsql/data/recovery.conf,编辑内容,进行保存 restore_command = 'cp /usr/local/pgsql/data/home/arch/20161211/%f %p'
启动数据库 /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
查询数据 select * from t10;
可以看到数据还在