一、建表时,复制源表的信息
test=#
test=# \d test.t1
Table "test.t1"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
col1 | integer | | |
col2 | integer | | |
col3 | integer | | |
Indexes:
"test_t1_unq" UNIQUE CONSTRAINT, btree (col1)

test=# create table test.t2 (like test.t1 including all);
CREATE TABLE

test=# \d test.t2;
Table "test.t2"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
col1 | integer | | |
col2 | integer | | |
col3 | integer | | |
Indexes:
"t2_col1_key" UNIQUE CONSTRAINT, btree (col1)

其中,including选项包括以下:
including defaults
including constraints
including indexes
including storages
including commits
including all

其中including all 是吧所有属性复制过去。

二、pgsql修改字段跟oracle以及MySQL不一样;

test=# \d blog
Table "pgsql.blog"
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+---------
id | integer | | |
title | text | | |
content | text | | |

alter table blog alter column id set not null;

test=# alter table blog rename column id to blog_id;
ALTER TABLE
test=# \d blog
Table "pgsql.blog"
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+---------
blog_id | integer | | not null |
title | text | | |
content | text | | |

三、表继承及分区表
test=# insert into persons values ('haha',30,'f');
INSERT 0 1

create table students ( class_no int) inherits (persons);

test=# insert into students values ('bb',20,'f',2);
INSERT 0 1

test=# select * from persons;
name | age | sex
------+-----+-----
haha | 30 | f
bb | 20 | f
(2 rows)

test=#
test=#
test=#
test=# select * from only persons;
name | age | sex
------+-----+-----
haha | 30 | f
(1 row)

test=#
test=#
test=# select * from students;
name | age | sex | class_no
------+-----+-----+----------
bb | 20 | f | 2
(1 row)

四、查看PGSQL的锁。
select * from pg_locks;

查看当前会话的PID;

select pg_backend_pid();

查看当前会话:
select * from pg_stat_activity;
select pid,usename,client_addr,client_hostname,client_port from pg_stat_activity;

五、参数修改

5.1 重新读取配置文件

pg_ctl reload

5.2 查看当前实例状态

pg_ctl status

5.3 杀进程
查看当前的进程:也可以通过查看锁
select pg_backend_pid();
pg_backend_pid
----------------
1564

杀进程:
pg_ctl kill INT 1564

5.3 需要执行清理过程:

postgres --single -D /pgsql11data/ postgres --数据库启动到单用户下

backend> vacuum full ;

5.4配置参数

所有的配置项都是大小写不敏感的。

六、备份
PG提供物理备份和逻辑备份
物理备份:WAL热备份
逻辑备份:pg_dump,pg_dumpall,恢复时pg_restore

1、备份test 数据库
pg_dump test >testdb.sql 跟MySQL一样,生成的是sql文件

比如我把test数据库恢复成testbak数据库
create database testbak encoding UTF8;
[pgsql@node2 ~]$ psql testbak < /home/pgsql/test.sql
SET
SET
SET
SET
SET
set_config
------------

(1 row)

跟mysql 很类似。

也可以指定格式的备份成*.dmp文件

[pgsql@node2 ~]$ pg_dump -Fc -Upgsql test > testpgsql.dmp

恢复

create database test encoding UTF8;

[pgsql@node2 ~]$ pg_restore -d test testpgsql.dmp

2.想备份psql模式下所有表,但是不包括test2
test=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+--------------+----------+-------+------------+-------------
pgsql | blog | table | pgsql | 8192 bytes |
pgsql | persons | table | pgsql | 8192 bytes |
pgsql | students | table | pgsql | 8192 bytes |
pgsql | test_view | view | pgsql | 0 bytes |
pgsql | testtab01 | table | pgsql | 211 MB |
public | capitals | table | pgsql | 8192 bytes |
public | cities | table | pgsql | 8192 bytes |
public | duty | table | pgsql | 16 kB |
public | example | table | pgsql | 0 bytes |
public | non_capitals | table | pgsql | 8192 bytes |
public | products | table | pgsql | 8192 bytes |
public | t | table | pgsql | 0 bytes |
public | t1 | table | pgsql | 16 kB |
public | t2 | table | pgsql | 16 kB |
public | t_id_seq | sequence | pgsql | 8192 bytes |
public | test1 | table | pgsql | 20 MB |
public | test2 | table | pgsql | 8192 bytes |
public | weather | table | pgsql | 8192 bytes |
(18 rows)

[pgsql@node2 ~]$ pg_dump -t 'pgsql.t*' -T psql.t2 test > pgsqltest.sql

备份所有数据库test 对象,不包括duty
[pgsql@node2 ~]$ pg_dump -T 'pgsql.duty' test > noduty.sql

在192.168.211.152 上备份,恢复到 192.168.211.154:
test=# create database hl;
CREATE DATABASE

[pgsql@node2 ~]$ pg_dump -h 192.168.211.152 -Upgsql test -Fc > remote_test.dmp
[pgsql@node2 ~]$ ls -lh
total 445M
-rw------- 1 pgsql pgsql 854 Apr 13 23:52 logfile
-rw-rw-r-- 1 pgsql pgsql 80M Jun 12 23:16 noduty.sql
-rw-rw-r-- 1 pgsql pgsql 75M Jun 12 23:14 pgsqltest.sql
-rw-rw-r-- 1 pgsql pgsql 106M Jun 12 23:26 remote_test.dmp
-rw-rw-r-- 1 pgsql pgsql 106M Jun 12 23:06 testpgsql.dmp
-rw-rw-r-- 1 pgsql pgsql 80M Jun 12 22:54 test.sql

testbak=# create database test;
CREATE DATABASE
[pgsql@node2 ~]$ pg_restore -h 192.168.211.152 -Upgsql -C -d test remote_test.dmp
-c, --clean clean (drop) database objects before recreating
-C, --create create the target database

最后,要讲备份的 remote_test.dmp的数据重新加载到一个不是新建的不同名称的数据库 remote中,可以使用下面命令:

createdb -T template0 remote;
pg_restore -d remote remote_test.dmp

从template0而不是template1 创建数据库,确保干净,没有使用-C,而是直接恢复到remote数据库上。

七、PGSQL 常规操作

select version(); --查看版本
select pg_postmaster_start_time(); --查看数据库启动时间
select pg_conf_load_time(); --查看配置文件的时间
show timezone; --查看数据库时区
select user;
select current_user;
select session_user;
select current_catalog,current_database();
select inet_client_addr(),inet_client_port(); --查看session客户端登录IP,端口
inet_client_addr | inet_client_port
------------------+------------------
192.168.211.152 | 36891

select inet_server_addr(),inet_server_port(); --查看数据库服务器登录IP,端口
inet_server_addr | inet_server_port
------------------+------------------
192.168.211.152 | 5432

select pg_backend_pid(); 查看当前session的后台服务器进程的PID

show shared_buffers; --查看共享buffer
select current_setting('shared_buffers'); --查看当前shared_buffers
select pg_xlogfile_name(pg_current_xlog_location()); --查看当前正在写的WAL文件

select pg_is_in_backup(),pg_backup_start_time(); --查看实例是否正在做基础备份
select pg_is_in_recovery(); --查看实例时hot standby 状态还是正常数据库状态

select pg_database_size('test'),pg_size_pretty(pg_database_size('test')); --查看test数据库大小(显示会慢)

select pg_size_pretty(pg_relation_size('test1')); --查看连接数据库test1表的大小(不包括索引)
select pg_size_pretty(pg_total_relation_size('test1')); --查看连接数据库test1表的大小(包括索引)
select pg_size_pretty(pg_indexes_size('test1')); --查看表test1上索引的大小

select pg_size_pretty(pg_tablespace_size('test')); 查看test表空间的使用大小
select pg_relation_filepath('test1'); --查看test1表空间对应的数据文件

八、系统维护常用命令
修改配置文件postgresql.conf后,生效的两种方式:
1.pg_ctl reload
2.select pg_reload_conf();
能生效的不需要重启服务器。
切换日志文件
select pg_rotate_logfile();
切换WAL日志文件
select pg_switch_xlog(); --貌似有问题 或者checkpoint;

3.取消正在执行的长时间的SQL方法
pg_cancel_backend(pid):取消正在执行的SQL
pg_terminate_backend(pid):终止一个后台服务进程,同时释放此后台服务进程的资源。

select pid ,datname,usename,query_start,query from pg_stat_activity; --查看运行的SQL
select pg_cancel_backend(pid); 如果取消不了,用这一句取消:select pg_terminate_backend(28184);

postgresql 常规操作以及检查备份的更多相关文章

  1. Oracle user,role,profile常规操作--用户,权限,角色,配置文件

    Oracle user,role,profile常规操作--用户,权限,角色,配置文件 1 权限查询 1查看所有用户 SQL> select username,account_status,lo ...

  2. postgres 常规操作杂记

    分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...

  3. db2操作 连接、备份、恢复db2

    先deactivate后再start standby再primary报错不能启动hadr standby的时候,先restore,但是别rollback,直接start hadr as standby ...

  4. FTP服务器常规操作

    导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...

  5. Apache服务器常规操作

    导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...

  6. mysql服务器的常规操作

    mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...

  7. Mongodb常规操作【一】

    Mongodb是一种比较常见的NOSQL数据库,数据库排名第四,今天介绍一下Net Core 下,常规操作. 首先下C# 版的驱动程序 "MongoDB.Driver",相关依赖包 ...

  8. Learn Docker(一)—软件安装与常规操作

    一.安装Docker Windows平台 在Windows10 X64专业版上可以直接下载Docker原生应用进行安装,在控制面板的程序与功能里启用Hyper-v,之后就可以运行docker程序啦. ...

  9. GIT 的常规操作

    GIT 的常规操作 常规操作也是我自己平时常用的几个命令, 学自于 pro git 这本书中 git 配置文件 git的配置文件位置 针对所有用户:/etc/gitconfig 针对当前用户: -/. ...

随机推荐

  1. [ller必读] LoveLive! 必备技能之 Python Pillow 自动处理截图

    起因 喜欢的歌,静静地听:喜欢的人,远远的看.30天前,就是3月14号,我情不自禁地走近了<LoveLive!学院偶像祭>,这是我的第一张卡片(见下图).第二天也就是3月15日,海未生日了 ...

  2. Cell期刊论文:为什么计算机人脸识别注定超越人类?(祖母论与还原论之争)

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[祖母论与还原论之争]为什么计算机人脸识别注定超越人类?评价:       ...

  3. 大型工程多个目录下的Makefile写法

    1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...

  4. 【JSP】常用跳转方式

    原文地址:http://blog.csdn.net/wanghuan203/article/details/8836326 (1)href超链接标记,属于客户端跳转 (2)使用javascript完成 ...

  5. nginx_安装测试

    首先安装环境: [root@local nginx-1.9.14]#  yum install gcc-c++  pcre pcre-devel  zlib zlib-devel openssl op ...

  6. 【转】虚拟化(三):vsphere套件的安装注意及使用

    vsphere套件里面主要的组件有esxi.vcenter server .vsphere client和vsphere web client. vcenter做为vsphere套件的核心管理成员之一 ...

  7. 单链表每k个节点一组进行反转(最后不足k个也反转)

    一道面试题,第一次碰到这道题的时候 要求10分钟之内手写代码实现,当时没写出来,后来花点时间把过程梳理一遍,也挺简单的....... 思路就是在原来单链表反转的基础上,加几个控制参数,记录几个关键节点 ...

  8. Python——Numpy基础知识(一)

    一.Numpy的引入 1.标准的Python 中用列表(list)保存一组值,可以当作数组使用.但由于列表的元素可以是任何对象,因此列表中保存的是对象的指针.对于数值运算来说,这种结构显然比较浪费内存 ...

  9. 11、mybatis的映射xml中参数类型的别名

    在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型.需要resultType指定输出结果的映射类型. 如果在指定类型时输入类型全 ...

  10. poj 1734 floyd求最小环,可得到环上的每个点

    #include<stdio.h> #include<string.h> #define inf  100000000 #define N 110 #define min(a, ...