postgresSQL 逻辑备份

2023-10-29 15:58
文章标签 逻辑 备份 postgressql

本文主要是介绍postgresSQL 逻辑备份,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。所以一直寻找完美的备份恢复方案。其实PostgreSQL内置不少的工具,寻找的备份恢复方案就在其中:pg_dump,psql。这两个指令 在数据库的安装目录下,比如我自己本地安装的,路径形如:C:\Program Files\PostgreSQL\9.5\;然后进入到bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了。里面会找到 pg_dump.exe,psql.exe两个文件

root@ubuntu:~# pg_dump --help
pg_dump dumps a database as a text file or to other formats.Usage:pg_dump [OPTION]... [DBNAME]General options:-f, --file=FILENAME          output file or directory name-F, --format=c|d|t|p         output file format (custom, directory, tar,plain text (default))-j, --jobs=NUM               use this many parallel jobs to dump-v, --verbose                verbose mode-V, --version                output version information, then exit-Z, --compress=0-9           compression level for compressed formats--lock-wait-timeout=TIMEOUT  fail after waiting TIMEOUT for a table lock-?, --help                   show this help, then exitOptions controlling the output content:-a, --data-only              dump only the data, not the schema-b, --blobs                  include large objects in dump-c, --clean                  clean (drop) database objects before recreating-C, --create                 include commands to create database in dump-E, --encoding=ENCODING      dump the data in encoding ENCODING-n, --schema=SCHEMA          dump the named schema(s) only-N, --exclude-schema=SCHEMA  do NOT dump the named schema(s)-o, --oids                   include OIDs in dump-O, --no-owner               skip restoration of object ownership inplain-text format-s, --schema-only            dump only the schema, no data-S, --superuser=NAME         superuser user name to use in plain-text format-t, --table=TABLE            dump the named table(s) only-T, --exclude-table=TABLE    do NOT dump the named table(s)-x, --no-privileges          do not dump privileges (grant/revoke)--binary-upgrade             for use by upgrade utilities only--column-inserts             dump data as INSERT commands with column names--disable-dollar-quoting     disable dollar quoting, use SQL standard quoting--disable-triggers           disable triggers during data-only restore--enable-row-security        enable row security (dump only content user hasaccess to)--exclude-table-data=TABLE   do NOT dump data for the named table(s)--if-exists                  use IF EXISTS when dropping objects--inserts                    dump data as INSERT commands, rather than COPY--no-security-labels         do not dump security label assignments--no-synchronized-snapshots  do not use synchronized snapshots in parallel jobs--no-tablespaces             do not dump tablespace assignments--no-unlogged-table-data     do not dump unlogged table data--quote-all-identifiers      quote all identifiers, even if not key words--section=SECTION            dump named section (pre-data, data, or post-data)--serializable-deferrable    wait until the dump can run without anomalies--snapshot=SNAPSHOT          use given snapshot for the dump--use-set-session-authorizationuse SET SESSION AUTHORIZATION commands instead ofALTER OWNER commands to set ownershipConnection options:-d, --dbname=DBNAME      database to dump-h, --host=HOSTNAME      database server host or socket directory-p, --port=PORT          database server port number-U, --username=NAME      connect as specified database user-w, --no-password        never prompt for password-W, --password           force password prompt (should happen automatically)--role=ROLENAME          do SET ROLE before dumpIf no database name is supplied, then the PGDATABASE environment
variable value is used.Report bugs to <pgsql-bugs@postgresql.org>.

用法:

备份数据库,指令如下:

pg_dump -h $hostname -p $port -U $username -d $dbname -w -b -v -f /backup/pgsql/pgsql_$dbname_$today.sql

指令解释:如上命令,pg_dump 是备份数据库指令,$hostname是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;$username 是数据库的用户名;$dbname 是数据库名。> 意思是导出到/backup/pgsql/pgsql_$dbname_$today.sql文件里,如果没有写路径,单单写pgsql_$dbname_$today.sql文件名,那么备份文件会保存在/usr/lib/postgresql/9.5/bin文件夹里。

 

大家注意到了pg_dump后面没有跟密码参数,上面备份命令没有输入密码。

#切换至pgsql用户
su - postgres
#家目录下创建.pgpass文件
vi .pgpass
$hostname:$port:$dbname:$username:$password
#赋权
chmod 600 .pgpass注:$hostname无论是主机名还是IP,必须要存在于/etc/hosts中且一致。报错信息“pg_dump: [archiver (db)] connection to database "rebate" failed: fe_sendauth: no password supplied”#编辑.bashrc文件
vi ~/.bashrc
#pgsql passwd
export PGPASSWORD="$password"

执行完上述步骤后可免密备份。

备份脚本如下

#!/bin/bash
export today=`date +%Y%m%d`
export EXP_FILE=/backup/$dbname/pgsql-$dbname_$today.gz
pg_dump -h $hostname -p $port -U $username -d $dbname -w -b -v -f /backup/$dbname/pgsql_$dbname_$today.sql
nohup /bin/gzip /backup/$dbname/pgsql-$dbname_$today.sql $EXP_FILE &
find /backup/$dbname -mtime +15 -name 'pgsql-$dbname_*.gz' -exec rm -rf {} \;
find /backup/$dbname -mtime -1 -name '*.sql' -exec rm -rf {} \;

 

这篇关于postgresSQL 逻辑备份的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301709

相关文章

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

使用Python实现网络设备配置备份与恢复

《使用Python实现网络设备配置备份与恢复》网络设备配置备份与恢复在网络安全管理中起着至关重要的作用,本文为大家介绍了如何通过Python实现网络设备配置备份与恢复,需要的可以参考下... 目录一、网络设备配置备份与恢复的概念与重要性二、网络设备配置备份与恢复的分类三、python网络设备配置备份与恢复实

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言