PG数据库流同步恢复

1,复制缺失的WAL文件或压缩文件到一个新建指定目录,如果是pgbackrest压缩的文件,一般是在/var/lib/pgbackrest/archive/MES2_DB/17-1/

cd /var/lib/pgbackrest/archive/MES2_DB/17-1
ls -l //查看目录 并按照文件夹时间找到对应缺失的WAL范围,如涉及多个文件夹,每个执行cp
cp * /pgdump/backwal/

2,删除已同步过的WAL文件,如果是压缩文件,需要对文件进行处理

rm 00000001000002980000000*
gunzip *.gz //解压所有,解压后默认删除原压缩文件

3,如是解压文件,则执行重命名,可以另外建一个目录,使用.sh批量执行mv命令并重命名

sudo chmod 777 xxx.sh //需要先给执行权限
./xxx.sh //执行sh

============.sh内容==============
for file in backwal/*; do
  mv "$file" "cpwal/${file%%-*}"
done

//${file%%-*} 表示将原文件名中-字符之后的替换掉(即截取-前面)

4,在处理后的文件夹中,执行scp远程复制命令

 scp /pgdump/cpwal/backwal/* postgres@192.168.xxx.xx:/var/lib/postgresql/17/main/pg_wal/

5,检查目标备机 /var/log/postgresql 下的日志 或 在主数据库查看

select * from pg_stat_replication

SELECT  pg_wal_lsn_diff(A .c1, replay_lsn) /(1024 * 1024) AS slave_latency_MB
        FROM
        	pg_stat_replication,
        	pg_current_wal_lsn() AS A(c1)
        ORDER BY
        	slave_latency_MB
        LIMIT 1;

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部