postgres数据库的运维常用操作


  1. 查看指定数据库内用户关联表权限
 sms=> select * from information_schema.table_privileges where grantee = 'seal_rw';
 grantor | grantee | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy 
    ---------+---------+---------------+--------------+------------+----------------+--------------+----------------
    (0 rows)
  1. 查看当前登录用户名
sms=> select current_user;
    current_user 
--------------
    sms_rw
(1 row)
  1. 切换数据库
sms=> \c db_name db_user
sms=> \c - db_user
sms=> \c db_name -
  1. 查看当前数据库查询schema模式路径
sms=> show search_path;
    search_path   
-----------------
    "$user", public
(1 row)
  1. 查看当前数据库所有schema模式
sms=> select current_schemas(true);
    current_schemas   
---------------------
    {pg_catalog,public}
(1 row)
  1. 查看当前数据库表信息
sms=> \d
                    List of relations
    Schema |         Name          |   Type   |  Owner   
--------+-----------------------+----------+----------
    public | pg_stat_statements    | view     | postgres
    public | sms_black_list        | table    | sms_rw
    public | sms_black_list_id_seq | sequence | sms_rw
    public | sms_send_log          | table    | sms_rw
    public | sms_send_log_id_seq   | sequence | sms_rw
    public | sms_sending           | table    | sms_rw
    public | sms_sending_id_seq    | sequence | sms_rw
    public | sms_template          | table    | sms_rw
    public | sms_template_id_seq   | sequence | sms_rw
(9 rows)
sms=> \d+
                                    List of relations
    Schema |         Name          |   Type   |  Owner   |    Size    |  Description   
--------+-----------------------+----------+----------+------------+----------------
    public | pg_stat_statements    | view     | postgres | 0 bytes    | 
    public | sms_black_list        | table    | sms_rw   | 16 kB      | 黑名单
    public | sms_black_list_id_seq | sequence | sms_rw   | 8192 bytes | 
    public | sms_send_log          | table    | sms_rw   | 3080 kB    | 已短信发送记录
    public | sms_send_log_id_seq   | sequence | sms_rw   | 8192 bytes | 
    public | sms_sending           | table    | sms_rw   | 16 kB      | 待短信发送记录
    public | sms_sending_id_seq    | sequence | sms_rw   | 8192 bytes | 
    public | sms_template          | table    | sms_rw   | 64 kB      | 短信模板
    public | sms_template_id_seq   | sequence | sms_rw   | 8192 bytes | 
  1. 查看当前数据库某表结构
sms=> \d+ sms_black_list
                                                Table "public.sms_black_list"
    Column  |  Type  |                          Modifiers                          | Storage  | Stats target | Description 
---------+--------+-------------------------------------------------------------+----------+--------------+-------------
    id      | bigint | not null default nextval('sms_black_list_id_seq'::regclass) | plain    |              | 
    mobiles | jsonb  |                                                             | extended |              | 手机号码
Indexes:
    "sms_black_list_pkey" PRIMARY KEY, btree (id)
  1. 查看当前数据库有哪些schema模式
sms=> \dn
    List of schemas
    Name  |  Owner   
--------+----------
    public | postgres
(1 row)
  1. 查看当前数据库指定表权限
sms=# \dp sms_black_list
                                    Access privileges
    Schema |      Name      | Type  |   Access privileges   | Column privileges | Policies 
--------+----------------+-------+-----------------------+-------------------+----------
    public | sms_black_list | table | sms_rw=arwdDxt/sms_rw+|                   | 
        |                |       | sms_read=r/sms_rw     |                   | 
(1 row)
  1. 创建指定数据库的只读账号

创建指定数据库相对应的只读账号,需要先切换到指定数据库,在执行下面命令

此处以创建p2p_activity_r 只读账号为例
postgres=#  create role p2p_activity_r LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE encrypted password 'xxxx';
postgres=# \c  p2p_activity   p2p_activity_rw;
Password for user p2p_activity_rw: 
You are now connected to database "p2p_activity" as user "p2p_activity_rw".
p2p_activity=> grant connect on database p2p_activity to p2p_activity_r;
GRANT
p2p_activity=> grant usage on schema public to p2p_activity_r;
WARNING:  no privileges were granted for "public" 
GRANT
p2p_activity=> grant select on all tables in schema public to p2p_activity_r;
WARNING:  no privileges were granted for "pg_stat_statements"
GRANT
p2p_activity=> ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to p2p_activity_r;
ALTER DEFAULT PRIVILEGES
p2p_activity=> \q
----------------------------------------------------------
说明:
查看当前用户下的schema,一般情况都是public
sms=> select current_schema;
    current_schema 
    ----------------
    public
    (1 row)
  1. 手动同步主postgresql文件
-bash-4.1$ pg_basebackup -D $PGDATA -Fp -Xs -v -h 192.168.6.54 -p 5432 -U postgres
  1. 创建用户、删除用户
postgres=# create user zhangshan with login encrypted password '100abcd';
postgres=# drop user user_name;

13.创建数据库、删除数据库

postgres=# create database db_name owner user_name;
postgres=# drop database db_name;

14.查询正在执行的SQL操作

postgres=# show track_activities ;
    track_activities 
------------------
    off
(1 row)
postgres=# set track_activities=on;
postgres=# select datname,usename,state,query from pg_stat_activity where state='active';

15.杀死SQL进程

kill有两种方式,第一种是:
SELECT pg_cancel_backend(PID);
这种方式只能kill select查询,对update、delete 及DML不生效)

第二种是:
SELECT pg_terminate_backend(PID);
这种可以kill掉各种操作(select、update、delete、drop等)操作

16.使用表pg_stat_all_tables查看autovacuum执行记录

postgres=# select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;

17.查看所有数据库事务ID目前值

postgres=# SELECT datname,age(datfrozenxid) FROM pg_database ;

18.vacuum重置事务ID

需使用超级管理员登录PG,并使用超级管理员用户切换到重置数据库中,才能有效重置

psql
postgres=# \c channel;
postgres=# vacuum freeze;

19.PG进入单用户模式

PG必须停机才能进入单用户模式,流复制模式下,只需主库进行事务ID重置,从库不需要重置操作。

postgres --single -D $PGDATA loanapply
> vacuum freeze;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容