pg常用工具使用帮助-献给不看帮助的人

1 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  在等待表锁超时后操作失败
  --no-sync                    do not wait for changes to be written safely to disk
  -?, --help                   显示此帮助, 然后退出

控制输出内容选项:
  -a, --data-only              只转储数据,不包括模式
  -b, --blobs                  在转储中包括大对象
  -B, --no-blobs               exclude large objects in dump
  -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-publications            do not dump publications
  --no-security-labels         不转储安全标签的分配
  --no-subscriptions           do not dump subscriptions
  --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

1.1 使用方法

1.1.1 导出成sql脚本(明文)

#仅导出脚本
pg_dump -h 主机地址 -U 用户名 -F p  -s 数据库->"C:\\table.sql"
#仅导出数据
pg_dump -h 主机地址 -U 用户名 -F p  -a 数据库->"C:\\data.sql"

1.1.2 导入

#仅创建表
psql -h 主机地址 -U 用户名 -f "C:\\table.sql"
#仅导入数据
psql -h 主机地址 -U 用户名 -f "C:\\data.sql"

2 pg_resetwal使用帮助

清理pg_wal的工具,如非必须不要使用,使用前必须停止数据库.

使用方法:
  pg_resetwal [选项]... 数据目录

选项:
  -c XID,XID       设置承受提交时间戳的最旧和最新事务
                   (任一值中的零表示没有改变)
 [-D] DATADIR      数据目录
  -e XIDEPOCH      设置下一个事务ID时间单元(epoch)
  -f               强制更新
  -l WALFILE       force minimum WAL starting location for new write-ahead log
  -m MXID,MXID     设置下一个事务和最老的事务ID
  -n               未更新, 只显示将要做什么 (测试用途)
  -o OID           设置下一个 OID
  -O OFFSET        设置下一个多事务(multitransaction)偏移
  -V, --version    输出版本信息,然后退出
  -x XID           设置下一个事务 ID
  -?, --help       显示帮助信息,然后退出

2.1 使用方法

pg_resetwal相关参数可以通过pg_controldata来获得.
注意看数据库状态,数据库是关闭的.
Database cluster state: shut down

pg_controldata -D /data/pgdata
Catalog version number:               201707211
Database system identifier:           6529648691513019680
Database cluster state:               shut down
pg_control last modified:             Thu 07 Jun 2018 02:54:08 PM CST
Latest checkpoint location:           26D/22FFF9C0
Prior checkpoint location:            26D/22000028
Latest checkpoint's REDO location:    26D/22FFF9C0
Latest checkpoint's REDO WAL file:    000000010000026D00000022
Latest checkpoint's TimeLineID:       1
Latest checkpoint's PrevTimeLineID:   1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0:114042
Latest checkpoint's NextOID:          291211
Latest checkpoint's NextMultiXactId:  80259
Latest checkpoint's NextMultiOffset:  350641
Latest checkpoint's oldestXID:        549
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Latest checkpoint's oldestMultiXid:   1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint:            Thu 07 Jun 2018 02:54:06 PM CST
Fake LSN counter for unlogged rels:   0/1
Minimum recovery ending location:     0/0
Min recovery ending loc's timeline:   0
Backup start location:                0/0
Backup end location:                  0/0
End-of-backup record required:        no
wal_level setting:                    replica
wal_log_hints setting:                off
max_connections setting:              100
max_worker_processes setting:         8
max_prepared_xacts setting:           100
max_locks_per_xact setting:           1024
track_commit_timestamp setting:       off
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 131072
WAL block size:                       8192
Bytes per WAL segment:                16777216
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Size of a large-object chunk:         2048
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Data page checksum version:           0
Mock authentication nonce:            1724f7fdbad295c50650de487e94cb1c4286f8d7b1e9bfecd7fc764971e3bbc4

强制更新重置pg_wal,将清空pg_wal,慎重使用,后果概不负责.

pg_resetwal -o 291211 -x 114042 -f /data/pgdata

注意-o 参数和-x参数为

Latest checkpoint's NextXID:          0:114042
Latest checkpoint's NextOID:          291211

3 pg_archivecleanup使用帮助

用于清理归档文件,当在postgresql.conf打开archive_mode时,归档文件需要定期清理.

archive_mode = on
archive_command = ‘test ! -f /data/archivedir/%f && cp %p /data/archivedir/%f’

如不清理归档文件文件,很快磁盘空间就会被占用.当磁盘空间满了以后PG将会崩溃,重启数据库会报以下错误.

could not write to file "pg_wal/xlogtemp.9021": No space left on device

可以通过下列命令查看磁盘空间

df -h

查看目录大小发现归档文件几乎把磁盘空间完全占用,单机可以用以下命令删除归档文件,但是还是建议使用pg_archivecleanup清除.

du -h /data
cd /data/archivedir
ls | xargs -n 10 rm -rf   --直接rm会报-sh: /bin/rm: Argument list too long

双机不要使用rm删除归档文件,通过在recovery.conf设置archive_cleanup_command参数来实现自动清理.

pg_archivecleanup --help
pg_archivecleanup removes older WAL files from PostgreSQL archives.

Usage:
  pg_archivecleanup [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE

Options:
  -d             generate debug output (verbose mode)
  -n             dry run, show the names of the files that would be removed
  -V, --version  output version information, then exit
  -x EXT         clean up files if they have this extension
  -?, --help     show this help, then exit

For use as archive_cleanup_command in recovery.conf when standby_mode = on:
  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %r'
e.g.
  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %r'

Or for use as a standalone archive cleaner:
e.g.
  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup

3.1 使用方法

cd /data/archivedir   --切换到归档目录
ls -l                 --查看归档文件日期
pg_archivecleanup /data/archivedir 00000001000000010000001E --删除所有早于00000001000000010000001E的归档日志

有前辈写好了shell,需要的同学请在这里下载,每天执行前辈的shell,只保留10天之内的归档文件

./walarchivecleanup.sh -p /data/archivedir -a 10

或删除所有早于00000001000000010000001E的归档日志

./walarchivecleanup.sh -p /data/archivedir -f 00000001000000010000001E

你可能感兴趣的:(PostgreSQL二次开发,postgresql,常用技巧)