1.启停
postgres –D $PGDATA start
pg_ctl -D $PGDATA start三种关机模式:
pg_ctl –D $PGDATA stop -m smart
不允许新连接,等待会话结束pg_ctl –D $PGDATA stop –m fast
不允许新连接,等待子进程退出,终止备份pg_ctl –D $PGDATA stop –m immediate
立即退出,下次启动需重放wal日志进行恢复2. pg导数
:::::::::::::::::::::::导出
1)整库备份
pg_dump  -d <dbname> -Fd -j 10 -Z 5 -v -f /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"` &>out.log
导出sql
nohup pg_dump  -d <dbname> -Fc -Z 9  -s -v -f /$backdir/exp.sql  &
2)只备份数据
pg_dump  -d <dbname> -Fd -j 10 -Z 5 -v -a  -f /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"` &>out.log
3)只备份结构
pg_dump  -d <dbname> -Fd -Z 5 -v -s  -f /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log
4)只备份特定schema
pg_dump  -d <dbname> -n <schemaname>  -Fd -j 10 -Z 5 -v  -f /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log5)只备份特定表(单表不支持并行)
pg_dump  -d <dbname> -t <tablename>  -Fd -Z 5 -v  -f /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log
多个表 -t <tablename1> -t <tablename2> ...[postgres@主机:<dbname>:port ~]$ pg_dump --help
-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
-Z, --compress=0-9           compression level for compressed formats
-v, --verbose                verbose mode
-f, --file=FILENAME          output file or directory name:::::::::::::::::::::::恢复
1)整库恢复
nohup psql -d <dbname> < imp.sql &
pg_restore -d <dbname> -j 10 -v /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`   &>out.log
2)恢复前删除已存在object
pg_restore -d <dbname> -j 10 -v -c --if-exists /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log
3)只恢复数据
pg_restore -d <dbname> -j 10 -v -a /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`   &>out.log
4)只恢复结构pg_restore -d <dbname> -v -s /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`    &>out.log
5)恢复特定schemapg_restore -d <dbname> -n <schemaname> -j 10 -v  /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log
6)恢复特定表(单表不支持并行)pg_restore -d <dbname> -t <tablename> -v /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`   &>out.log
7)恢复特定函数pg_restore -d <dbname> -P <functionname> -j 10 -v /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`   &>out.log
8)不恢复权限pg_restore -d <dbname>  -j 10 -v  -x /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"`  &>out.log
9)替换表owner
pg_restore -d <dbname> -t <tablename> -O --role=devroot -v /$backdir/pgdump_$PGNAME_`date +"%Y%m%d%H%M"` &>out.log:::::::::::::::::::::::导数注意
<1> 查看数据库大小
select pg_database_size('<dbname>'); <2> 索引的删除与重建
当数据库较大时,需要删除索引和约束,恢复完成后再重建
:::::生成删除索引语句
select 'drop index'|| b.indexname from pg_tables a,pg_indexes b where a.tablename=b.tablename and a.tableowner='<schemaname>';
:::::生成创建索引语句
select b.indexdef||';' from pg_tables a,pg_indexes b where a.tablename=b.tablename and a.tableowner='<schemaname>';
:::::生成删除主键语句
select 'alter table '||t.tablename||' drop CONSTRAINT '||i.indexname||';' from  pg_indexes i ,pg_tables t
where i.schemaname=t.schemaname and i.tablename=t.tablename  and i.indexname like '%pk%' and t.tableowner='<schemaname>';
:::::生成添加主键语句
select 'alter table ' ||t.tablename||'   add primary key using index '||i.indexname||';' from  pg_indexes i ,pg_tables t
where i.schemaname=t.schemaname and i.tablename=t.tablename  and i.indexname like '%pk%' and t.tableowner='<schemaname>';
:::::查询整库的索引大小并排序
SELECT c.relname,c2.relname, c2.relpages*8/1024 as size_MB, indexdef||';' as index_def
FROM pg_class c, pg_class c2, pg_index i,pg_indexes iv
WHERE  c.oid = i.indrelid AND c2.oid = i.indexrelid and c2.relname=iv.indexname ORDER BY c2.relpages*8 desc;<3> 删除整库
导入整库前,需删除数据库
DROP DATABASE <dbname>;3.添加pg_pathman
注意,需要在每个<db>均升级
\l 查询数据库
\c <dbname> 进入数据库
::::添加插件
create extension pg_pathman;
::::升级插件
alter extension pg_pathman UPDATE to '1.4';
SET pg_pathman.enable = t;
::::删除插件
drop extension pg_pathman4.查询会话
::::正在连接的会话
select * from pg_stat_activity;
select usename,client_addr,waiting,state,pid from pg_stat_activity;
select * from pg_stat_activity where state='active';
::::查看连接数
select count(*) from pg_stat_activity;
:::::生成批量结束会话语句
select 'SELECT pg_terminate_backend('||pid||');'  from pg_stat_activity;
select 'kill ' || pid from pg_stat_activity where query like '%SELECT message.roomid, message.fromjid, message.tojid%';6.锁
:::::查询当前所有锁与对象的对应关系
select a.locktype,a.pid,a.relation,a.mode,a.granted,b.relname from pg_locks a,pg_class b where a.relation=b.oid;
:::::查询锁定query,用户
select usename,query,client_addr, query_start,pid,client_addr from pg_stat_activity where pid=15010;
select query from pg_stat_activity where pid=15008;
:::::pg的锁类型
acesss share: 只与access exclusive冲突,select 加锁,在用户select时不能做ddl操作
row share: 与exclusive和access exclusive冲突,类似mysql共享意向锁,select for update/select for share 加锁
row exclusive: 与share/share row exclusive/exclusive/access exclusive冲突,UPDATE/INSERT/DELETE加这种锁
share update exclusive:与row share/access exclusive/share/share row exclusive/exclusive,vacuum(不带full)/anslyze/create index concurr-ently
share: 与row exclusive/share update exclusive/share row exclusive/exclusive/access exclusive ,create index(不带concurrently选项语句)加锁
share row exclusive: Conflicts with the ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE lock modes. This mode protects a table against concurrent data changes, and is self-exclusive so that only one session can hold it at a time.Acquired by CREATE TRIGGER and many forms of ALTER TABLE (see ALTER TABLE).
exclusive:Conflicts with the ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE lock modes. This mode allows only concurrent ACCESS SHARE locks, i.e., only reads from the table can proceed in parallel with a transaction holding this lock mode.Acquired by REFRESH MATERIALIZED VIEW CONCURRENTLY.
access exclusive: 类似于mysql的意向排他锁,为并发执行设计Conflicts with locks of all modes (ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE). This mode guarantees that the holder is the only transaction accessing the table in any way.Acquired by the DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL, and REFRESH MATERIALIZED VIEW (without CONCURRENTLY) commands. Many forms of ALTER TABLE also acquire a lock at this level. This is also the default lock mode for LOCK TABLE statements that do not specify a mode explicitly.详见:https://www.postgresql.org/docs/9.5/static/explicit-locking.html7.权限
\du+ 查看用户权限及角色
pg_stats
select * from pg_tables where tableowner='<schemaname>';8.database操作
::::重命名
ALTER DATABASE <dbname>  RENAME TO <new_dbname>;
::::建库
create database <dbname> owner postgres;
::::删库
DROP DATABASE <dbname>;9. pg_hba.conf
postgres的连接配置文件,标明允许什么用户连接,及连接权限
# TYPE DATABASE  USER     ADDRESS         METHODlocal  all       all                    trusthost   all       all    ip/8             md5
注意,修改过后使用pg_ctl reload重新应用10.xlog
:::清除20天之前的xlog
find $PGDATA/pg_xlog -mtime +20 -name "000000*"
xlog是pg的wal日志存储目录,相当于Oracle归档日志和redo日志的合体
如果删除掉正在应用的日志会导致数据库不一致,无法start,最好不要做这种操作
find /paic/pg6604/data/pg_xlog -mtime +6 -name "000000*" -exec rm -rf {} \;11.数据操作
::::添加列
ALTER TABLE <table_name> ADD <col_name> Character varying(2000) not null default 0;
::::改密码
ALTER USER <user_name> WITH PASSWORD 'xxxx';
:::::执行sql脚本:
\x
\i a.sql
:::::显示SQL执行时间:
\timing on
:::::显示所有表名:
\d
:::::查看表定义:
\d <表名>
:::::只显示表:
\dt
::::只显示索引:
\di
::::只显示序列:
\ds
::::只显示视图:
\dv
::::显示Schema:
\dn
::::显示表空间:
\db
::::列出用户和角色:
\du或\dg
::::显示表权限分配情况:
\dp <表名>
::::关闭自动提交
\set    AUTOCOMMIT off
::::显示所有数据库:
\l
::::进入某一个库:
\c <数据库名>12.查询占用空间
::::查询数据表占用空间大小
SELECT  table_schema || '.' || table_name AS table_full_name,  pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY  pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC  ;
:::::查询一个索引大小
select pg_size_pretty(pg_relation_size('indexname))
:::::查看一张表及此它上的索引总大小
select pg_size_pretty(pg_total_relation_size('tablename')); 13.执行计划
explain (analyze on, verbose on, buffers on, timing on, costs on)
<query>
14.查看慢sql
SELECT  query, calls, total_time, (total_time/calls) as average ,rows, 100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM    pg_stat_statements
ORDER   BY average DESC LIMIT 10;

postgresql日常运维相关推荐

  1. hadoop日常运维

    hadoop日常运维 @(HADOOP)[hadoop] (一)备份namenode的元数据 namenode中的元数据非常重要,如丢失或者损坏,则整个系统无法使用.因此应该经常对元数据进行备份,最好 ...

  2. mysql dba工作笔记pdf_社区专家在线:Oracle数据库、MySQL、Db2 等数据库日常运维故障与性能调优在线答疑...

    数据库的重要性毋庸置疑,随着数据量日益增加,数据库的重要性更为凸显.DBA们作为数据库的日程运维管理人员,肩负着数据库运维的重要使命.一名合格的DBA,日常工作中需要掌握多项技能,包括数据库的故障诊断 ...

  3. 同时防服务器维修,加强服务器日常运维,避免宕机灾难发生

    原标题:加强服务器日常运维,避免宕机灾难发生 服务器作为我们日常网络的支撑,可以说是24小时的全天候运转.在这种无休止的"加班"的状态下,服务器必然容易出问题,一旦发生服务器宕机就 ...

  4. oracle 运营维护_Oracle数据库日常运维常用脚本

    大 中 小 Oracle数据库日常运维常用脚本 1 查看所有数据文件 select file_name from dba_data_files union select file_name from ...

  5. 资源放送丨《OGG日常运维及故障处理》PPT视频

    前段时间,墨天轮邀请到云和恩墨交付总监 尹涛  分享了直播<OGG日常运维及故障处理>,在这里小编跟大家共享一下PPT和视频,供大家参考学习. Oracle Golden Gate(简称O ...

  6. 2场直播丨OGG日常运维及故障处理、云原生数据仓库AnalyticDB

    1. OGG日常运维及故障处理 - 09/09 Oracle Golden Gate(简称OGG)提供异构环境下数据的实时捕捉.变换.投递.基于这些功能,OGG主要用于的场景包括数据实时同步.数据梳理 ...

  7. Linux 系统日常运维九大技能和运维网络知识总结

    一.Linux 系统日常运维九大技能 1.安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXE+kickstart 可以参考如下链接内容 ...

  8. 计算机网络安全运维管理工作总结,计算机设备日常运维工作总结

    1.主要工作完成情况.亮点和取得的成绩 (一) 工程项目上线 参与工程. (二) 安全运行年考核 为了提高各类计算机设备的完好率及使用率,防范科技风险,每月都会将安全运行年考核情况通报给支行,督促各支 ...

  9. 数据库日常运维操作手册

    目 录 一.日维护过程... 3 1.1.确认所有的INSTANCE状态正常... 3 1.2.检查文件系统的使用(剩余空间)... 3 1.3.检查日志文件和trace文件记录... 3 1.4.检 ...

最新文章

  1. css3伪元素选择器before 和 after 的使用
  2. windows下多进程加协程并发模式
  3. JetBrains WebStorm 快捷键失效
  4. GDI+中常见的几个问题(6)
  5. pdf转图片 java_有将pdf文件转图片的格式方法吗?
  6. python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...
  7. jmeter(一)基础介绍
  8. Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结v2
  9. 计算机二级通关宝典-C语言篇
  10. 微信小程序图片上传至mysql数据库
  11. 移动硬盘显示要格式化怎么办?
  12. python完全平方数_python判断完全平方数的方法
  13. android 转音频格式,android_Lame转换音频格式
  14. 在Linux系统中的安装cpolar内网穿透
  15. java实现输入信用卡号码
  16. 前端页面中iOS版微信长按识别二维码的bug与解决方案
  17. go项目杀进程并重启shell
  18. Java SE 6 新特性: 对脚本语言的支持 [VERY GOOD]
  19. win32api 中mouse_event、GetFullPathName(fileName)、.GetLocalTime()、GetSystemDirectory()等函数的用法
  20. PHP编程与系统开发

热门文章

  1. .NET使用MailKit进行邮件处理
  2. 立足西安,昇腾AI为开发者留下了脚印一串
  3. chrome中下载文档时设置成不使用idm下载器的方法
  4. Sheldon Numbers
  5. 【企业微信开发】企业微信开发测试推送应用消息流程
  6. leetcode Rotate Array 旋转数组
  7. 如何用AI设计一幅杂志封面
  8. Docker镜像压缩与优化
  9. LOL代练检测——2019腾讯游戏安全技术竞赛决赛记录
  10. JAVA 知识点 | Hook