准备:
main-pg
建立postgres用户,能够免密登录到backup-pg
backup-pg
建立postgres用户
1) main-pg修改配置,开启归档模式
不开启,产生少量wal文件
开启,产生完整wal文件
mkdir /home/postgres/archive_wals_hospitalname
mkdir /home/postgres/base_hospitalname
wal_level = replica
archive_mode = on
archive_command = 'scp %p postgres@backupip:/home/postgres/archive_wals_hospitalname/%f' 或(backip=depot.phmedtech.com或者ip)
重启 systemctl status postgresql-11
验证 postgres=# show archive_command ;
建立基本备份:
pg_basebackup -Ft -Pv -Xf -z -Z5 -D /home/postgres/base_hospitalname
pg_basebackup -D /home/postgres/base -Ft -R -z -v
写入一些数据,执行psql命令行下select pg_switch_wal();
检查:
ll /home/postgres/base_hospitalname
ll /home/postgres/archive_wals_hospitalname
将基本数据发送到:
scp -r /home/postgres/base_hospitalname postgres@backupip:/home/postgres/base_hospitalname
往表中再插入10条数据,使得总数据为20:
insert into foo values(generate_series(1,10));
2) 停止backup-pg
mkdir /home/postgres/base_hospitalname
备份旧的数据目录
mv /var/lib/pgsql/11/data /var/lib/pgsql/11/data.bak
mkdir /var/lib/pgsql/11/data && chmod 0700 /var/lib/pgsql/11/data
cd /var/lib/pgsql/11/data
mv /home/postgres/base_hospitalname/base.tar.gz /var/lib/pgsql/11/data
tar -zxvf /base.tar.gz
现在已经从备份中恢复了整个数据目录,接下来,你需要部分或全部删除数据目录中的下列文件,如果它们存在:
(1) postmaster.pid rm -rf postmaster.pid
(2) pg_wal中的文件 rm -rf pg_wal
mkdir -p pg_wal/archive_status
cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf
vi /var/lib/pgsql/11/data/recovery.conf
修改 recovery.conf, 修改以下配置信息:
restore_command = 'cp /home/postgres/archive_wals_hospitalname/%f %p'
recovery_target_timeline = 'latest' #最新的时间线
启动backu-pg验证。