分享一下之前用到的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; #再删