PostgreSQL全量备份与增量备份命令与脚本(包含数据库安装在docker)
全量示例:
pg_dump -Fc -h 113.57.121.225 -p 5432 -U postgres test > /opt/backup_linux/db_data/pgsql.bak;
执行条件
1.有PostgreSQL环境,在数据库本机执行不用多说数据库自带命令。如果是备份远程数据库,只需要在对应执行环境安装PostgreSQL_client 即可
2.列如上面命令指向的地址/opt/backup_linux/db_data,需要提前创建对应目录,并给予权限
**chmod 777 -R /opt/backup_linux/db_data**
3.如果数据库安装在docker中 只需要在备份命令前面加上docker exec -i pgsql /bin/bash 即可
全量脚本
#!/bin/bash
echo "开始执行 PostgreSql 数据库postgres的备份!-----liunx版本"
#密码配置到临时环境变量中就不需要输入密码了,pg_dump 命令是没有密码参数的
export PGPASSWORD="123456"
chmod 777 -R /opt/backup_linux
echo "backup ing -------------------"
nowtime=$(date +%F)
# 文件名称
FILENAME=$4.bak
#入参
ip=$1
post=$2
d=$3
pg_dump -Fc -h $ip -p $post -U postgres $d > /opt/backup_linux/db_data/$FILENAME
echo "backup end -------------------"
echo "生成文件 $FILENAME"
echo "数据库备份结束!"
exit;
执行命令
可以看到已经生成对应的文件,这样就完成了全量备份
增量备份:
docker inspect postgres /如果安装在宿主机直接找到安装目录的配置即可
获取挂载目录,修改postgresql.conf配置文件
开启归档模式
开启后重启服务
查看是否启动wal归档 on为开启 off关闭
show archive_mode;
手动触发开档:
10.0前
select pg_switch_xlog()
10.0后
select pg_switch_wal()
查看生成,可以看到已经生成对应的记录