笔记分享(4) Tbase/PostgreSQL 常用命令

2021-05-17 18:04:20 浏览数 (2)

分享一下之前用到的tbase/pg命令, 主要是和mysql/oracle差别太大了. 做个记录, 方便后面看.

以下命令为tbase2.15(现在的tdsql-pg版)版本测试的.

pg常用命令:

代码语言:javascript复制
连上数据库:
psql -U admin_1  -p 11345 -h 192.168.101.193 -d postgres


h  #帮助
h drop database  #查看删库的具体用法

d  #列出当前数据库的所有表视图等.  d 就是 display  du也就是display user

du  #列出所有用户

c databasename  #连接其他数据库

conninfo  #列出当前数据库和连接信息

dn  #列出常用schema
dn   #详细版本

dnS  #列出所有schema

dt  t1  #列出t1表的信息. 也可以select pg_size_pretty(pg_relation_size('t1'));

dt schema_1.*  #列出schema_1下所有的表

dm  #查看所有物化视图  display map

ds  #查看所有序列   dispaly sequence

di  #查看索引   dispaly index

dp  #查看当前表的权限(默认自己: show search_path)
dp  schema_1.*   #查看schema_1下表的权限

q  #退出

l  #显示当前集群中的所有数据库
l  #详细版本

dx  #列出所有插件
dx  #列出所有插件 详细版

pset XX  #设置参数
pset null 'i am null';   #设置null显示为i am null
pset border 0            #没得框框


copy  #系统文件和表格直接数据导入导出
copy t1 to 'test_t1.txt'  #把t1表的数据导出到test_t1.txt文件
! cat test_t1.txt   #执行操作系统命令 cat test_t1.txt
copy t1 from 'test_t1.txt'   #把test_t1.txt的数据导入t1表(t1表要提前建好,字段不一样,要指定字段)





#查看数据库大小
select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;  


#创建用户/角色
create user u1 with password '123456';

#创建schema
create schema schema_1;

#授权schema给用户
grant usage on schema schema_1 to u1;


#创建数据库
create database db1 owner u1;

#授权
grant all privileges on database db1 to u1;

#修改密码
password u1


#显示当前用户
select current_user;

#显示当前schema
select current_schema;
show search_path;

#查看系统参数
show work_mem;
show all;

#设置系统参数
set work_mem='8MB';

#显示客户端编码
encoding   #没得分号.

#配置客户端编码
encoding UTF8

#删除插件:
drop extension pg_stat_statements;

#创建插件
create extension pg_stat_statements;


#设置密码
password user1

#查看所有用户
select * from pg_user;
du

#设置用户密码过期时间
alter user u1 with valid until '2021-02-23 16:00:00';


#查看所有数据库
select * from pg_database;

#连接指定数据库
c postgres

#查看所有表
select * from pg_tables

#查看所有视图
select count(*) from pg_views;

#查看所有模式 schema
dn

#查看表结构
dt t1

#查看当前连接信息
conninfo

#查看所有参数
show all;

#查看具体的参数  (类似oracle的redo大小)
show wal_segment_size;

#查看模式下的所有表
dt information_schema.*


#查看用户系统权限
select * from pg_roles where rolname='u1';

#查看用户表权限
select * from information_schema.table_privileges;

#查看用户usage权限
select * from information_schema.usage_privileges ;

#查看表的权限
dp t1;




#查看当前的search_path
show search_path;

pg日志:

1. pg_log
位置: $PGDATA/pg_log
默认关闭
记录服务器与DB的状态,比如ERROR,定位慢查询SQL, 数据库启停信息之类的
类似oracle的 alter_instance.log
格式: postgresql-Tuesday-09.csv  postgresql-Tuesday-09.log



2. pg_xlog
位置: $PGDATA/pg_wal
强制开启
记录pg的WAL信息的,也就是事务日志信息, 默认16M
类似 mysql的binlog   oracle的redo
写数据,先写 WAL BUFFER, 再写DATA BUFFER .  提交后,将WAL BUFFER的写入磁盘, DATA BUFFER写入磁盘(推迟)



3. pg_clog
位置: $PGDATA/pg_xact
强制开启
记录事务的元数据(metadata), 非常小,记录事务的状态(看不懂,就是一串UUUU)




备份与恢复( -W 交互式输入密码,  -w 没得密码,就退出)
备份: 
      备份为SQL文件
      pg_dump -d postgres -h 172.17.32.18 -p 11345 -w > test.sql    #导出库
      pg_dump -d postgres -h 172.17.32.18 -p 11345 -w -Fc > test.sql.tar.gz   #归档
	  pg_dump -d postgres -h 172.17.32.18 -p 11345 -n public -n schema2 > test.sql  #导出模式(pg模式的简写是n  如: dn)
	  pg_dump -d postgres -h 172.17.32.18 -p 11345 -t 'public.t1' -t 'public.t2*' > test.sql #导出表
	  pg_dumpall -h 172.17.32.18 -p 11345 -w > test.sql  #全库导出
	  pg_dumpall -h 172.17.32.18 -p 11345 -g > test.sql  #只备份全局对象
	  pg_dumpall -h 172.17.32.18 -p 11345 -r > test.sql  #只备份角色
	  pg_dumpall -h 172.17.32.18 -p 11345 -t > test.sql  #只备份表空间
	  pg_dumpall -h 172.17.32.18 -p 11345 -s > test.sql  #只备份对象定义
	  
	  备份为dump文件
	  pg_dump -d postgres -h 172.17.32.18 -p 11345 -w -FC > t2.dump   #C表示包含创建语句

	  
恢复(不指定数据库,就只跑脚本, 指定了数据库就连上数据库跑): 
	  通过sql文件恢复
      psql -d postgres -h 172.17.32.18 -p 11345 -w < test.sql    #或者登录数据库 i file.sql  也是可以的
	  
	  通过dump文件恢复
      pg_restore -d postgres -h 172.17.32.18 -p 11345 -w t2.dump
	
	
dump转为sql
pg_restore  test.dump -f test.sql
pg_restore test.dump > test.sql

tbase适合的命令:

代码语言:javascript复制
#创建默认组/也可以控制台点
create default node group default_group with(dn001,dn002);  #创建组
create sharding group to group default_group;  #创建sharding map

#查看所有node
select * from pgxc_node;

#查看所有组
select * from pgxc_group

#查看shardmap
select * from pgxc_shard_map;


#删除组(得先清空组)
drop sharding in group default_group;  #先清空
drop node group default_group;  #再删

0 人点赞