目的:
实现每周备份一次数据库
新建一个sh文件
#!/bin/bash
# 定义参数
DB_USER="wangzhezhizuo"
DB_PASSWORD="wangzhezhizuo123"
DB_NAME="mydb"
DB_SCHEME="public"
DB_PORT="5432"
REMOTE_IP="192.168.0.1"## 定义备份目录和文件名
BACKUP_DIR="/www/bak/"
BACKUP_FILE="$BACKUP_DIR/db_backup_$(date +\%Y\%m\%d).sql"export PGPASSWORD=$DB_PASSWORD
pg_dump -U $DB_USER -h $REMOTE_IP -p $DB_PORT -n $DB_SCHEME -f $BACKUP_FILE $DB_NAME# 压缩备份文件
#gzip $BACKUP_FILE# 备份到远程服务器
#scp -r $BACKUP_FILE ${REMOTE_USER}@${REMOTE_IP}:/${REMOTE_PATH}/${DB_NAME}/
然后通过java代码定时执行即可
遇到的问题, 基本上各大参数根据提示的错误修修改改即可 有些问题没提示就尴尬如下
1.数据库提示没权限:原因没加模式,结果会导出全库,有些是没权限的 根据上面的DB_SCHEME来设置即可
2.sh无法一次性执行dump,需要在输入密码,通过上面的export PGPASSWORD=密码 即可
3.备份文件被压缩,网上找到的有些语句有加-Fc ,好像是什么压缩的我给删了就可以,不然文件出来一堆SOH EOH等符号
导入
.\psql -h 192.168.0.1 -U wangzhezhizuo2 -d mydb-f C:\Users\HP\Desktop\db.sql
导入遇到的问题
1.本来打算用pg_restore的 但是失败了,看看各位看官有没有实现的,可以讨教下
2.因为懒得建库,所以新加了个模式 wangzhezhizuo2,用这个账号登结果显示表存在了,提示一堆\N 语法不正确看了sql文件,默认都是在public下运行可以通过修改SET search_path =,还有将文件中的public.全部替换为新的模式才行