postgreSQL的备份和恢复
- 格式:doc
- 大小:111.50 KB
- 文档页数:2
PostgreSQL数据库调优经验一、概述数据库的性能优化对于提升系统的整体性能至关重要。
本文将介绍一些PostgreSQL数据库调优的经验和技巧,旨在帮助开发人员和管理员提升数据库的性能和效率。
二、硬件调优1. 存储设备选择:选择高速且稳定的存储设备,如SSD硬盘,以提高数据库的读写性能。
2. 内存设置:合理设置shared_buffers参数,将其调整到适当的大小,以便缓存更多的数据块,提高查询的响应速度。
3. CPU设置:根据服务器的负载情况,调整max_connections参数以控制并发连接数,在高负载情况下可以考虑增加系统的CPU核心数。
三、索引优化1. 使用合适的索引:根据查询的需求和表的大小,选择合适的索引类型(B树、哈希、GiST等),并确保创建索引的列具有高选择性。
2. 删除不必要的索引:定期审查并删除不再使用或无效的索引,以减少索引维护的开销。
3. 索引覆盖:通过创建索引包含所需的查询列,减少磁盘I/O,提高查询的性能。
四、查询优化1. 避免全表扫描:使用WHERE子句和索引来过滤数据,避免全表扫描的开销。
2. 使用合适的JOIN类型:根据数据之间的关联关系,选择合适的JOIN类型(INNER JOIN、LEFT JOIN、OUTER JOIN等),以减少查询的复杂度。
3. 分解复杂查询:对于复杂的查询,可以将其分解为多个简单的查询,并使用临时表或WITH语句组合结果,以提高查询的可维护性和性能。
五、配置优化1. 文件系统设置:使用合适的文件系统(如XFS、EXT4等)以及正确的文件系统参数,提高I/O性能。
2. 日志设置:根据实际需求,合理设置日志级别和日志记录方式,避免过多的日志输出对性能造成影响。
3. 超时设置:根据业务需求和系统负载情况,调整合适的超时设置,避免长时间的等待或超时导致的性能问题。
六、并发控制1. 事务管理:合理管理事务的提交和回滚,尽量减少长事务的使用,以避免锁定资源时间过长,影响并发性能。
pg数据库的备份和恢复1 备份恢复⽅法sql转储⽂件系统级备份连续归档2 sql转储sql转储⽅法的思想就是创建⼀个由SQL命令组成的⽂件,当把这个⽂件返回数据库时候,数据库利⽤其中的sql命令重建与转储状态⼀样的数据库实例。
postgresql提供的⼯具是pg_dump,这个⼯具的基本⽤法如下:备份:pg_dump dbname > outfile恢复:psql dbname < infile需要注意的是,上述两个命令都是在postgres⽤户下运⾏的,outfile和infile都是sql⽂件。
2.1 pg_dumppg_dump是⼀个普通的客户端⼯具,如果不指定主机IP和端⼝,那么默认备份的是本地服务器上的数据库。
⼀般来说,这个命令由超级管理员来运⾏,这样可以备份到整个数据库的所有对象。
由数据库创建的对象是⼀致的,即在运⾏pg_dump那⼀刻存储了该时刻的数据库快照,这个命令在运⾏过程中数据库的更新不会被转储。
同时,pg_dump不会阻塞其他对数据库的操作。
以下是⼀个数据库转储⽂件的例⼦,从转储⽂件中的内容来看,是由⼀系列的sql语句组成,包含了重建这个数据库所有的sql操作。
---- PostgreSQL database dump---- Dumped from database version 9.6.3-- Dumped by pg_dump version 9.6.3SET statement_timeout = 0;SET lock_timeout = 0;SET idle_in_transaction_session_timeout = 0;SET client_encoding = 'UTF8';SET standard_conforming_strings = on;SET check_function_bodies = false;SET client_min_messages = warning;SET row_security = off;---- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:--CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;---- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:--COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';SET search_path = public, pg_catalog;SET default_tablespace = '';SET default_with_oids = false;---- Name: module_permission; Type: TABLE; Schema: public; Owner: postgres--CREATE TABLE module_permission (profile_key integer NOT NULL,campaign_key integer NOT NULL,status integer NOT NULL,create_time date,modify_time date);ALTER TABLE module_permission OWNER TO postgres;---- Name: userprofile_data; Type: TABLE; Schema: public; Owner: postgres--2.2 恢复pg_dump⽣成的sql⽂本可以有psql程序读取,但是注意的是恢复数据库的时候dbname是需要存在的,也就是说,转储⽂件中并不包含创建数据库的语句。
postgresqlwindows下主从搭建,备份机制虚拟主机2台MASTER(这个看实际情况来修改),后⾯简称MSLAVE(这个看实际情况来修改),后⾯简称S确定ip之后,请相互ping⼀下,看看是否可以ping通,如果不能ping通,很有可能是防⽕墙的问题,请关闭防⽕墙。
Step1:安装PG数据库slave端可以只装数据库,不初始化数据库(安装好就不⽤动它了,要记得账号密码),因为后⾯需要把data⽂件家替换掉。
程序位置:C:\Program Files\PostgreSQL\ ,位置没有具体的要求,可以随改。
Step2:创建流复制⽤户master端执⾏:CREATE USER repuser replication LOGIN CONNECTION LIMIT 10 ENCRYPTED PASSWORD 'OLAB2019!';LIMIT 10可以进⾏修改,有⼏个从库就改成⼏Step3:配置Master端的访问⽂件pg_hba.conf(安装数据库时设置的data路径),我的路径为:host replication repuser 从库ip/16 md5Step4:配置MASTER端配置⽂件 C:\Program Files\PostgreSQL\9.4\data\postgresql.conf配置的时候为了⽅便可以放到这个⽂件后⾯,因为这些配置默认都是被注释的。
所有本质上都是唯⼀的,不⽤担⼼其他地⽅配置过了archive_mode = onarchive_command = 'cp "%p" "/opt/PG-12/archivedir"'max_wal_senders = 10max_replication_slots = 10wal_level = replicawal_keep_segments = 512注:max_wal_senders是Slave库的节点数,有多少个slave库就设多少,wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standbywal_keep_segments默认值是16,是PG_XLOG下的⽇志⽂件数相关参数Step6:修改Slave端配置信息停⽌备库服务器上的服务。
一、pg_dump工具介绍1.1 备份单个数据库pg_dump只能备份单个数据库,不会导出角色和表空间相关的信息,便于迁移或异机恢复。
常用参数如下:# pg_dump --help 可以查看用法-U, --username=NAME 以指定的数据库用户联接-v, --verbose 详细输出模式-F, --format=c|d|t|p 导出文件的格式,-Fc备份为二进制格式, 压缩存储. 并且可被pg_restore 用于精细还原。
-Fp备份为文本, 大库不推荐-d, --dbname=DBNAME 指定数据库名-O, --no-owner 在明文格式中, 忽略恢复对象所属者-f, --file=FILENAME 导出后保存的文件名-j, --jobs=NUM 指定备份的并行度,指定备份路径而非备份文件,会生成很多小文件,还原时指定该目录即可--insert 导出成sql语句类型,虽然方便查看数据内容,但是导出耗时长1.2 开始备份以下路径和帐号密码示例:请根据个人真实进行修改(1)、打开CMD,切换到PostgreSQL 安装目录,定位到bin 文件中。
D:\Program Files\PostgreSQL\16\bin\pg_dump.exe -h localhost -U postgres -d postgres -f "D:\\20240728.dmp" -Fc(2)、执行导出命名,根据本地数据库动态更改配置。
pg_dump.exe -h localhost -U postgres -d postgres -f "D:\\20240728.dmp" -Fc二、pg_restore工具介绍host-----------------------数据库的ip地址port------------------------数据库的端口username---------------数据库用户名role-----------------------角色dbname------------------数据库名verbose-------------------备份所在的路径2.1、导入命名如下:以下路径和帐号密码示例:请根据个人真实进行修改C:\Program Files\PostgreSQL\16\bin>pg_restore.exe --host "localhost" --port "8001" --username "postgres" --role "postgres" --dbname "postgres" --verbose "D:\\20240728.dmp"。
PostgreSQL之pgdump备份恢复操作逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故⼀般不采取逻辑备份⽅式进⾏数据库备份,但逻辑适⽤于跨平台跨版本的数据迁移;逻辑备份恢复主要以下三种:pg_dumppg_dumpallcopy本⼩节主要讲解pg_dumppg_dump备份只能备份单个数据库,不会导出⾓⾊和表空间相关的信息-F c 备份为⼆进制格式,压缩存储.并且可被pg_restore⽤于精细还原-F p 备份为⽂本,⼤库不推荐pg_dump恢复psql dbname -U username < bakfile或pg_restore– pg_restore [option] ... [filename]– pg_restore -d dbname bakfile⼆进制格式的备份只能使⽤pg_restore来还原,可以指定还原的表,编辑TOC⽂件,定制还原的顺序,表, 索引等。
⽂本格式的备份还原, 直接使⽤⽤户连接到对应的数据库执⾏备份⽂本即可,例如psql dbname -f bak.sqlpg_dump备份恢复⽰例1)创建数据库createdb testdb2)连⼊数据库testdbpsql testdb3)创建测试表,插⼊数据testdb=# create table tt(a int) tablespace tbls_t;testdb=# insert into tt(a) values(1);testdb=# insert into tt(a) values(2);4)查看数据testdb=# select * from tt;5)备份pg_dump testdb>/dbbak/testdb.sql #简单语法,可结合选项灵活备份6)删除数据库testdbdropdb testdb7)创建新数据库(恢复之前需创建数据库)createdb testdb8)恢复数据psql testdb </dbbak/testdb.sql9)查看数据是否回复psql testdbtestdb=# select * from tt;⾄此,数据已成功恢复!pg_restore -d postgres /dbbak/pgdumpbak/p.dmppg_dump备份恢复命令扩展练习pg_dump -F c -f /dbbak/pgdumpbak/c.dmp -C -E UTF8 -h 127.0.0.1 -U postgres testdb #⼆进制格式备份⽂件pg_dump -F p -f /dbbak/pgdumpbak/p.dmp -C -E UTF8 -h 127.0.0.1 -U postgres testdb #⽂本格式备份⽂件,”-C” 表⽰包含创建语句pg_restore /dbbak/c.dmp|less 可以解析⼆进制格式的备份⽂件pg_restore -l /dbbak/c.dmppg_restore -d testdb /dbbak/pgdumpbak/c.dmp #需要先创建⽬标库pg_restore -d postgres /dbbak/pgdumpbak/p.dmp #⽂件中包含创建数据库的命令,不需要创建⽬标库toc⽂件选择性备份恢复1)根据⼆进制备份⽂件⽣成toc⽂件pg_restore -l -f /dbbak/pgdumpbak/toc /dbbak/pgdumpbak/c.dmp2)修改 toc⽂件,以⾸⾏加分号“;”的⽅式注释掉不⽤还原的内容3)以toc⽂件列表做恢复pg_restore -F c -L /dbbak/pgdumpbak/toc -d testdb /dbbak/pgdumpbak/c.dmp补充:Postgresql备份与还原命令pg_dumppostgresql数据库的备份和还原命令pg_dump常⽤命令:备份:pg_dump -U postgres -d myDBname -f dump.sql其中postgres是⽤户名myDBname是数据库名dump.sql是⽂件名还原:createdb newDBnamepsql -d newDBname -U postgres -f dump.sql其中postgres是⽤户名newDBname是数据库名dump.sql是⽂件名参考:pg_dump 把⼀个数据库转储为纯⽂本⽂件或者是其它格式.⽤法:pg_dump [选项]... [数据库名字]⼀般选项:-f, --file=FILENAME 输出⽂件或⽬录名-F, --format=c|d|t|p 输出⽂件格式 (定制, ⽬录, tar)明⽂ (默认值))-j, --jobs=NUM 执⾏多个并⾏任务进⾏备份转储⼯作-v, --verbose 详细模式-V, --version 输出版本信息,然后退出-Z, --compress=0-9 被压缩格式的压缩级别--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败-?, --help 显⽰此帮助, 然后退出控制输出内容选项:-a, --data-only 只转储数据,不包括模式-b, --blobs 在转储中包括⼤对象-c, --clean 在重新创建之前,先清除(删除)数据库对象-C, --create 在转储中包括命令,以便创建数据库-E, --encoding=ENCODING 转储以ENCODING形式编码的数据-n, --schema=SCHEMA 只转储指定名称的模式-N, --exclude-schema=SCHEMA 不转储已命名的模式-o, --oids 在转储中包括 OID-O, --no-owner 在明⽂格式中, 忽略恢复对象所属者-s, --schema-only 只转储模式, 不包括数据-S, --superuser=NAME 在明⽂格式中使⽤指定的超级⽤户名-t, --table=TABLE 只转储指定名称的表-T, --exclude-table=TABLE 不转储指定名称的表-x, --no-privileges 不要转储权限 (grant/revoke)--binary-upgrade 只能由升级⼯具使⽤--column-inserts 以带有列名的INSERT命令形式转储数据--disable-dollar-quoting 取消美元 (符号) 引号, 使⽤ SQL 标准引号--disable-triggers 在只恢复数据的过程中禁⽤触发器--enable-row-security 启⽤⾏安全性(只转储⽤户能够访问的内容)--exclude-table-data=TABLE 不转储指定名称的表中的数据--if-exists 当删除对象时使⽤IF EXISTS--inserts 以INSERT命令,⽽不是COPY命令的形式转储数据--no-security-labels 不转储安全标签的分配--no-synchronized-snapshots 在并⾏⼯作集中不使⽤同步快照--no-tablespaces 不转储表空间分配信息--no-unlogged-table-data 不转储没有⽇志的表数据--quote-all-identifiers 所有标识符加引号,即使不是关键字--section=SECTION 备份命名的节 (数据前, 数据, 及数据后)--serializable-deferrable 等到备份可以⽆异常运⾏--snapshot=SNAPSHOT 为转储使⽤给定的快照--strict-names 要求每个表和/或schema包括模式以匹配⾄少⼀个实体--use-set-session-authorization使⽤ SESSION AUTHORIZATION 命令代替ALTER OWNER 命令来设置所有权联接选项:-d, --dbname=DBNAME 对数据库 DBNAME备份-h, --host=主机名数据库服务器的主机名或套接字⽬录-p, --port=端⼝号数据库服务器的端⼝号-U, --username=名字以指定的数据库⽤户联接-w, --no-password 永远不提⽰输⼊⼝令-W, --password 强制⼝令提⽰ (⾃动)--role=ROLENAME 在转储前运⾏SET ROLE如果没有提供数据库名字, 那么使⽤ PGDATABASE 环境变量的数值.报告错误⾄ <pgsql-bugs@>.以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
Postgre数据库自动备份操作教程1、自动备份脚本语句@ECHO OFF@ECHO ============================@ECHO PostgreSQL Backup Command@ECHO Created By: 作者@ECHO Created Date:创建日期@ECHO ============================@set DirName=%date:~0,4%%date:~5,2%@setFileName=xamp2_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~1,1%%time:~3,2%%time: ~6,2%.backup@if %date:~8,2% == 01 (md D:\DataBack\"%DirName%")@if not exist D:\DataBack\"%DirName%" (md D:\DataBack\"%DirName%")"C:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe" -U postgres -h localhost -p 5432 --inserts xmap2 > D:\DataBack\%DirName%\%FileName%PassWord:12345678@ECHO ON注:(1)@set DirName=%date:~0,4%%date:~5,2% 表示取年月命名为数据库备份文件保存的路径名,如“201605”(2)@set FileName=xamp2_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~1,1%%time:~3,2%%time:~6,2%.backup 表示取年月日时分秒毫秒作为数据库文件名,如“xamp2_20160516_83000.backup”,xamp2为数据库名,后面加年月日_时分秒毫秒,后辍为.backup(3)@if %date:~8,2% == 01 (md D:\DataBack\"%DirName%")判断,如果当天为一个月的第一天,则创建一个新的文件夹,命名为当前年月,如“201605”(4)@if not exist D:\DataBack\"%DirName%" (md D:\DataBack\"%DirName%")判断,如果文件夹不存在,则创建一个,%DirName%是一个变量(5)"C:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe" -U postgres -h localhost -p 5432 --inserts xmap2 > D:\DataBack\%DirName%\%FileName%"C:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe"为数据库安装的路径-U postgres数据库的用户名-h localhost数据库服务器名-p 5432数据库的监听端口--inserts备份方式为inserts方式xmap2数据库名> D:\DataBack\%DirName%\%FileName%备份路径PassWord:12345678数据库的密码2、将第1步的脚本代码复制粘贴到txt文本,然后修改文本的后辍为.bat,此处将脚本文件命名为PostgreSqlBackup.bat3、创建系统的任务计划单击电脑“开始”——“附件”——“管理工具”——“任务计划程序”单击右边“创建基本任务”输入任务名称。
数据库常用的备份和恢复方法1. 数据库备份方法:使用数据库管理系统自带的备份工具,比如MySQL的mysqldump 命令、SQL Server的备份与还原工具、Oracle的RMAN等。
2. 备份恢复方法:通过数据库管理系统自带的还原工具进行数据库的恢复操作,还原到备份的状态。
3. 使用备份数据库文件:将数据库文件完整拷贝到另一个地方,以便在需要时进行恢复。
4. 使用数据库复制:通过数据库复制功能实现备份,比如MySQL的主从复制、SQL Server的数据库镜像等。
5. 使用第三方备份工具:如Acronis Backup、Veeam Backup等第三方软件来进行数据库备份。
6. 使用文件系统级别的备份:直接备份数据库所在的文件系统,这种方法需要确保数据库处于非活动状态。
7. 冷备份:在数据库服务未运行的情况下进行备份,确保备份文件的完整性。
8. 热备份:在数据库服务正在运行的情况下进行备份,能够实现数据库的连续性。
9. 定时自动备份:通过定时任务或其他调度工具定期对数据库进行备份,确保备份的及时性。
10. 增量备份:仅备份数据库中发生变化的部分数据,从而减少备份数据的大小和时间。
11. 差异备份:备份数据库自上次完整备份之后发生变化的部分数据,比增量备份更快,但恢复时需要依赖上次的完整备份。
12. 完整备份:备份整个数据库的数据和结构,是最基本的备份方法。
13. 数据库备份到云存储:将数据库备份文件上传至云存储服务,保证备份的安全性和可靠性。
14. 数据库备份加密:对备份文件进行加密,增加备份文件的安全性。
15. 数据库备份压缩:对备份文件进行压缩,减小备份文件的大小,节省存储空间。
16. 数据库备份验证:对备份文件进行验证,确保备份文件的完整性和可恢复性。
17. 数据库备份日志记录:记录备份的相关信息,如备份时间、备份状态、备份文件位置等,便于管理和追踪备份操作。
18. 数据库备份监控:通过监控系统对数据库备份进行实时监控,确保备份的正常进行。
macOS命令行下的数据库备份和恢复技巧数据库是现代应用开发中不可或缺的组成部分,它承载着重要的数据,为应用的正常运行提供支持。
在开发过程中,我们常常需要对数据库进行备份和恢复操作,以确保数据的安全性和可靠性。
本文将介绍macOS命令行下的数据库备份和恢复技巧,帮助开发者更好地处理数据库相关操作。
一、数据库备份数据库备份是指将数据库的数据、结构和配置等内容复制到另一个存储介质中,以应对各种突发情况,如数据丢失、硬件故障等。
在macOS命令行下,我们可以使用不同的命令行工具来进行数据库备份。
1.1 使用mysqldump备份MySQL数据库对于MySQL数据库,常用的备份工具是mysqldump。
它可以将整个数据库或者指定的表备份为SQL文件。
首先,我们需要登录到MySQL服务器。
打开终端,输入以下命令:```mysql -u root -p```其中,"-u"参数后面是MySQL用户名,"-p"参数表示需要输入密码。
输入密码后,我们就可以登录到MySQL服务器了。
接下来,我们可以使用mysqldump命令进行备份。
以下是备份整个数据库的命令:```mysqldump -u root -p --all-databases > backup.sql```该命令将备份所有数据库,并将备份结果保存到backup.sql文件中。
如果只需要备份指定的数据库,可以使用下面的命令:```mysqldump -u root -p your_database_name > backup.sql```上述命令将备份名为"your_database_name"的数据库到backup.sql文件中。
备份完成后,我们可以使用以下命令查看备份结果:```cat backup.sql```1.2 使用pg_dump备份PostgreSQL数据库对于PostgreSQL数据库,我们可以使用pg_dump命令进行备份。
Postgresql的三种备份⽅式数据库的备份有多种分类⽅式。
按照备份后的⽂件类型,可以分为物理备份(⽂件系统级别的备份)和逻辑备份(备份后的⽂件是sql⽂件或特定格式的导出⽂件);按照备份过程中是否停⽌数据库服务,可分为冷备份(备份过程中停⽌数据库服务)和热备份(备份过程中数据库服务开启并可供⽤户访问);按照备份是否是完整的数据库,可分为全量备份(备份是完整的数据库)和增量备份(备份是上⼀次全量备份后数据库改变的内容)。
Postgresql的常见备份⽅式有以下三种:1. ⽂件系统级别的冷备份。
这种备份⽅式需要关闭数据库,然后拷贝数据⽂件的完整⽬录。
恢复数据库时,只需将数据⽬录复制到原来的位置。
该⽅式实际⼯作中很少使⽤。
2. SQL转储。
这⾥我们⽤到的⼯具是pg_dump和pg_dumpall。
这种⽅式可以在数据库正在使⽤的时候进⾏完整⼀致的备份,并不阻塞其它⽤户对数据库的访问。
它会产⽣⼀个脚本⽂件,⾥⾯包含备份开始时,已创建的各种数据库对象的SQL语句和每个表中的数据。
可以使⽤数据库提供的⼯具pg_dumpall和pg_dump来进⾏备份。
pg_dump只备份数据库集群中的某个数据库的数据,它不会导出⾓⾊和表空间相关的信息,因为这些信息是整个数据库集群共⽤的,不属于某个单独的数据库。
pg_dumpall,对集簇中的每个数据库调⽤pg_dump来完成该⼯作,还会还转储对所有数据库公⽤的全局对象(pg_dump 不保存这些对象)。
⽬前这包括适数据库⽤户和组、表空间以及适合所有数据库的访问权限等属性。
例如,在我的计算机上,可使⽤如下命令对名为dbname的数据库进⾏备份:pg_dump –h 127.0.0.1 -p 5432 -U postgres -c -C –f dbname.sql dbname使⽤如下命令可对全部pg数据库进⾏备份。
pg_dumpall –h 127.0.0.1 –p 5432 -U postgres –c -C –f db_bak.sql恢复⽅式很简单。
pg_dump实例详解(备份postgresql和greenplum数据库)⼀、pg_dump的⽤法:数据库的导⼊导出是最常⽤的功能之⼀,每种数据库都提供有这⽅⾯的⼯具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump,⽽PostgreSQL提供的对应⼯具为pg_dump和pg_restore。
pg_dump是⽤于备份PostgreSQL数据库的⼯具。
它可以在数据库正在使⽤的时候进⾏完整⼀致的备份,并不阻塞其它⽤户对数据库的访问。
转储格式可以是⼀个脚本或者归档⽂件。
转储脚本的格式是纯⽂本,包含许多SQL命令,这些SQL命令可以⽤于重建该数据库并将之恢复到保存脚本时的状态。
可以使⽤ psql从这样的脚本中恢复。
它们甚⾄可以⽤于在其它机器甚⾄是其它硬件体系的机器上重建数据库,通过对脚本进⾏⼀些修改,甚⾄可以在其它SQL数据库产品上重建数据库。
归档⽂件格式必须和pg_restore⼀起使⽤重建数据库。
它们允许pg_restore对恢复什么东西进⾏选择,甚⾄是在恢复之前对需要恢复的条⽬进⾏重新排序。
归档⽂件也是可以跨平台移植的。
D:\Program Files\PowerCmd>pg_dump --helppg_dump 把⼀个数据库转储为纯⽂本⽂件或者是其它格式.⽤法: pg_dump [选项]... [数据库名字]⼀般选项:-f, --file=FILENAME output file or directory name-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)-v, --verbose 详细模式-Z, --compress=0-9 被压缩格式的压缩级别--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败--help 显⽰此帮助信息, 然后退出--versoin 输出版本信息, 然后退出控制输出内容选项:-a, --data-only 只转储数据,不包括模式-b, --blobs 在转储中包括⼤对象-c, --clean 在重新创建之前,先清除(删除)数据库对象-C, --create 在转储中包括命令,以便创建数据库-E, --encoding=ENCODING 转储以ENCODING形式编码的数据-n, --schema=SCHEMA 只转储指定名称的模式-N, --exclude-schema=SCHEMA 不转储已命名的模式-o, --oids 在转储中包括 OID-O, --no-owner 在明⽂格式中, 忽略恢复对象所属者-s, --schema-only 只转储模式, 不包括数据-S, --superuser=NAME 在转储中, 指定的超级⽤户名-t, --table=TABLE 只转储指定名称的表-T, --exclude-table=TABLE 只转储指定名称的表-x, --no-privileges 不要转储权限 (grant/revoke)--binary-upgrade 只能由升级⼯具使⽤--column-inserts 以带有列名的INSERT命令形式转储数据--disable-dollar-quoting 取消美元 (符号) 引号, 使⽤ SQL 标准引号--disable-triggers 在只恢复数据的过程中禁⽤触发器--inserts 以INSERT命令,⽽不是COPY命令的形式转储数据--no-security-labels do not dump security label assignments--no-tablespaces 不转储表空间分配信息--no-unlogged-table-data do not dump unlogged table data--quote-all-identifiers quote all identifiers, even if not key words--serializable-deferrable wait until the dump can run without anomalies--use-set-session-authorization使⽤ SESSION AUTHORIZATION 命令代替ALTER OWNER 命令来设置所有权联接选项:-h, --host=主机名数据库服务器的主机名或套接字⽬录-p, --port=端⼝号数据库服务器的端⼝号-U, --username=名字以指定的数据库⽤户联接-w, --no-password 永远不提⽰输⼊⼝令-W, --password 强制⼝令提⽰ (⾃动)--role=ROLENAME do SET ROLE before dump如果没有提供数据库名字, 那么使⽤ PGDATABASE 环境变量的数值.⼆、pg_dump的使⽤实例1、创建两个数据库CREATE DATABASE "TestDb1"WITH OWNER = "TestRole1"ENCODING = 'UTF8'TABLESPACE = "TestTbs1";CREATE DATABASE "TestDb2"WITH OWNER = "TestRole1"ENCODING = 'UTF8'TABLESPACE = "TestTbs1";在TestDb1中创建表csm_bill、cfg_public_int_transport插⼊⼏条记录,并创建索引,索引使⽤索引表空间TestTbsIndex。