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

相关文章

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实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE