为了避免操作数据库的风险,计划每天对postgresql数据库进行定期备份
1.服务器地址:
备份服务器地址10.10.10.101(虚构)
postgresql数据库所在服务器的地址是10.10.10.100(虚构)
因为我有一个单独的备份数据库,它不在同一个服务器上运行,所以我必须首先确保这两个服务器的网络是开放的
我用shell脚本和Linux自带的计时任务,操作步骤如下:
**
1.创建备份shell脚本
**
1.创建备份脚本存储路径:
mkdir-p/u01/db-bak/2/bak-file/all
1 kdir-p/u01/db-bak/2/bak-file/all
我把shell脚本放在/u01/db-bak/2,放在/u01/db-bak/2/bak-file/all文件
2.准备外壳脚本
Enter /u01/db-bak/2
1cd /u01/db-bak/2
创建备份外壳脚本
1vim pgsql-all-backup.sh
外壳脚本
#!/bin/bash
Echo“开始备份PostgreSql数据库hrmw!”
回声'备份'
nowtime=$(日期%F %T)
导出PGPASSWORD=123
echo ' time:“$ now time
设置超时500
/usr/pgsql-11/bin/pg _ dump-file '/u01/db-bak/2/bak-file/all/pgsql-all-' $ now time '。backup '-host ' 10 . 10 . 10 . 100 '-port ' 5432 '-username ' postgres '-dbname ' hrmw '-verbose-role ' postgres '-format=c-blobs-encoding ' UTF8 '
回应“数据库hrmw备份结束!”
退出;
Nowtime=$(日期% f % t)-当前时间
Pgpassword='数据库密码'
pg_dump的用法
~
用法:
pg _ dump[选项].[数据库名称]
~
一般选项:
-f -f,- file=FILENAME输出文件或目录名
-f,-format=c | d | t | p输出文件格式(自定义、目录、tar)
明文(默认))
-j -j,- jobs=NUM为备份转储执行多个并行任务
-v,-详细模式
-v,-version输出版本信息,然后退出
-z,-compress=0-9压缩格式的压缩级别
-lock-wait-timeout=等待表锁超时后超时操作失败
-不同步—安全地写入磁盘,无需等待更改
-?- help显示此帮助,然后退出
~
控制输出内容选项:
-a -a,- data-only仅转储数据,不包括架构
-b,-blob包括转储中的大型对象
-b -B,-no-blob排除垃圾场唐山网络推广中的大对象nbsp
-c,-clean在重新创建之前清理(删除)数据库对象。
-c,-create在转储中包含创建数据库的命令
-e -E,- ENCODING=ENCODING转储以编码形式编码的数据
-n -n,- schema=SCHEMA仅转储具有指定名称的架构
-n,- N,- exclude-schema=SCHEMA不转储命名架构
-o,-oid包括转储中的oid