文章目录
1. 数据库启动:gpstart
常用可参数: -a : 直接启动,不提示终端用户输入确认
-m:只启动master 实例,主要在故障处理时使用
2. 数据库停止:gpstop
常用可参数:-a:直接停止,不提示终端用户输入确认
-m:只停止master 实例,与gpstart –m 对应使用
-M fast:停止数据库,中断所有数据库连接,回滚正在运
行的事务
-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。
评:-a用在shell里,最多用的还是-M fast。
3. 查看实例配置和状态
select * from gp_segment_configuration order by 1 ;
主要字段说明:
Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror
Instance)
Isprimary:实例是否作为primary instance 运行
Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。
Port:实例运行的端口
Datadir:实例对应的数据目录
4. gpstate :显示数据库运行状态,详细配置等信息
常用可参数:-c:primary instance 和 mirror instance 的对应关系
-m:只列出mirror 实例的状态和配置信息
-f:显示standby master 的详细信息
-Q:显示状态综合信息
该命令默认列出数据库运行状态汇总信息,常用于日常巡检。
评:最开始由于网卡驱动的问题,做了mirror后,segment经常down掉,用-Q参数查询综合信息还是比较有用的。
5. 查看用户会话和提交的查询等信息
select * from pg_stat_activity 该表能查看到当前数据库连接的IP 地址,用户名,提交的查询等。另外也可以在master 主机上查看进程,对每个客户端连接,master 都会创建一个进程。ps -ef |grep -i postgres |grep -i con
评:常用的命令,我经常用这个查看数据库死在那个sql上了。
6.查看数据库、表占用空间
select pg_size_pretty(pg_relation_size('schema.tablename'));
select pg_size_pretty(pg_database_size('databasename'));
必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量。
评:可以查看任何数据库对象的占用空间,pg_size_pretty可以显示如mb之类的易读数据,另外,可以与pg_tables,pg_indexes之类的系统表链接,统计出各类关于数据库对象的空间信息。
7.查看数据分布情况
两种方式:
Select gp_segment_id,count(*) from tablename group by 1 ;
在命令运行:gpskew -t public.ate -a postgres
如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。
8.实例恢复:gprecoverseg
通过gpstate 或gp_segment_configuration 发现有实例down 掉以后,使用该命令进行回复。
Select * from gp_segement_configuration;
gpstate -e 看恢复进度 -s恢复状态 -m 查看mirror节点的状态
gprecoverseg -r 恢复角色
gprecoverseg -o ./recover.info 导出错误节点信息
gprecoverseg -i recover.info 恢复错误节点
9.数据库备份 gpcrondump
全量备份
gpcrondump -a -C --dump-stats -g -G -h -r --use-set-session-authorization -x dbname -u backupdir --prefix dbid -l logdir -d masterdir -K now
增量备份
gpcrondump -a -C --dump-stats -g -G -h -r --use-set-session-authorization -x dbname -u backupdir --incremental --prefix dbid -l logdir -d masterdir -K now
dbname 备份数据库的名字
backupdir 备份数据路径
dbid 会添加到文件名中
logdir 日志文件的路径
masterdir 主节点的数据目录
now 备份的时间
注意点:
- 不支持指定备份用的超级用户名,默认在gpcrondump中会让pg_dump去调用OS对应的用户名.
- 备份language handler, create database的DDL时,没有使用双引号引用。 如果用户名包含除小写字母和下划线以外的字符,在还原是会报错。
- 不支持删除模板库,在使用gpdbrestore恢复时,如果使用了-e来清除库,会导致失败。
- copy需要大量的内存,可能触发OOM。
- 执行gpcrondump时,会使用getcwd获得当前目录,所以不能在一个不存在的目录环境下执行.
10.数据库恢复 gpdbrestore
gpdbrestore -a -e -d masterdir --prefix dbid -u backupdir --restore-stats include --report-status-dir logdir -t dumpid
backupdir 备份数据路径
dbid 会添加到文件名中
logdir 日志文件的路径
masterdir 主节点的数据目录
dumpid备份的时间
注意点:
- gpdbrestore -e 参数表示恢复前是否执行 drop database, 然后执行 create database。
- 如果 gpcrondump 时使用了-C 参数, 则恢复时会先执行DROP TABLE再执行建表的动作。
- 如果 gpcrondump 时没有使用 -C 参数,参数恢复时想先清理数据的话,可以使用gpdbrestore的–truncate参数
(–truncate只能是表级恢复模式下使用, 即与-T . 或 --table-file 一同使用) - Greenplum不允许删除模板库, 所以如果使用-e恢复模板库,会报错。 解决方法是改gpcrondump代码,对于模板库特殊处理,例如drop schema的方式清理模板库, 跳过模板库的DROP database报错以及create database 报错。
11.参数查询
psql -c 'SHOW ALL;' -d database
gpconfig --show max_connections
评:这个用,可以管道给grep。
12.创建数据库
createdb dhdw
或者
psql postgres
create database dhdw
13.创建GP文件系统
文件系统名
gpfsdw
子节点,视segment数创建目录
mkdir -p /gpfsdw/seg1
mkdir -p /gpfsdw/seg2
chown -R lotus:lotus/gpfsdw
主节点
mkdir -p /gpfsdw/master
chown -R lotus:lotus/gpfsdw
gpfilespace -o gpfilespace_config
gpfilespace -c gpfilespace_config
创建GP表空间
psql gpdb
create tablespace TBS_DW_DATA filespace gpfsdw;
SET default_tablespace = TBS_DW_DATA;
15.查看segment配置
select * from gp_segment_configuration;
16.文件系统
select * from pg_filespace_entry;
17. ldpipe 外部表创建方法
S3外部表
create external table test_1(
xxx xxx,
xxx xxx,
xxx xxx
)
location('ldpipe://localhost:50031/s3/文件路径/*?bucket= , host= , port= , accesskey= , secretkey=, delimiter=\001 , escape=\001 , lazyquote=true')
format 'csv';
bucket是桶名 host是访问的ip prot是访问的端口 accesskey是访问key secretkey是安全key
lazyquote是指定忽略转义字符的开关;,false是关闭忽略转义字符,ture是开启忽略转义字符,默认是false关闭忽略转义字符。
ldb(postgres)外部表
create external table test_2(
xxx xxx,
xxx xxx,
xxx xxx
)
location('ldpipe://localhost:50031/ldsql/tablename')
format 'spq';