在Linux上定期备份postgresql数据库的方法
  • 作者:admin
  • 发表时间:2021-04-24 07:53
  • 来源:未知

为了避免操作数据库的风险,计划每天对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