Greenplum 日常维护
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_configuration order by 1 ;
主要字段说明:
Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror
Instance)
Isprimary:实例是否作为primary instance 运行
Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。
Port:实例运行的端口
Datadir:实例对应的数据目录
4. gpstate :显示Greenplum数据库运行状态,详细配置等信息
常用可选参数:-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.收集统计信息,回收空间
定期使用Vacuum analyze tablename 回收垃圾和收集统计信息,尤其在大数据量删除,导入以后,非常重要
评:这个说的不全面,vacuum分两种,一种是analize,优化查询计划的,还有一种是清理垃圾数据,postres删除工作,并不是真正删除数据,而是在被删除的数据上,坐一个标记,只有执行vacuum时,才会真正的物理删除,这个非常重用,有些经常更新的表,各种查询、更新效率会越来越慢,这个多是因为没有做vacuum的原因。
8.查看数据分布情况
两种方式:
l Select gp_segment_id,count(*) from tablename group by 1 ;
l 在命令运行:gpskew -t public.ate -a postgres
如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。
评:非常有用,gp要保障数据分布均匀。
9. 实例恢复:gprecoverseg
通过gpstate 或gp_configuration 发现有实例down 掉以后,使用该命令进行回复。
10. 查看锁信息:
SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_query
FROM pg_locks l, pg_class c, pg_stat_activity a
WHERE l.relation=c.oid AND l.pid=a.procpid
ORDER BY c.relname;
主要字段说明:
relname: 表名
locktype、mode 标识了锁的类型
11. explain:在提交大的查询之前,使用explain分析执行计划、发现潜在优化机会,避免将系统资源熬尽。
评:少写了个analyze,如果只是explain,统计出来的执行时间,是非常坑爹的,如果希望获得准确的执行时间,必须加上analyze。
12. 数据库备份 gp_dump
常用参数:-s: 只导出对象定义(表结构,函数等)
-n: 只导出某个schema
gp_dump 默认在master 的data 目录上产生这些文件:
gp_catalog_1_<dbid>_<timestamp> :关于数据库系统配置的备份文件
gp_cdatabase_1_<dbid>_<timestamp>:数据库创建语句的备份文件
gp_dump_1_<dbid>_<timestamp>:数据库对象ddl语句
gp_dump_status_1_<dbid>_<timestamp>:备份操作的日志
在每个segment instance 上的data目录上产生的文件:
gp_dump_0_<dbid>_<timestamp>:用户数据备份文件
gp_dump_status_0_<dbid>_<timestamp>:备份日志
13. 数据库恢复 gp_restore
必选参数:--gp-k=key :key 为gp_dump 导出来的文件的后缀时间戳
-d dbname :将备份文件恢复到dbname
14.登陆与退出Greenplum
#正常登陆
psql gpdb
psql -d gpdb -h gphostm -p 5432 -U gpadmin
#使用utility方式
PGOPTIONS="-c gp_session_role=utility" psql -h -d dbname hostname -p port
#退出
在psql命令行执行\q
15.参数查询
psql -c 'SHOW ALL;' -d gpdb
gpconfig --show max_connections
评:这个有用,可以管道给grep。
创建数据库
createdb -h localhost -p 5432 dhdw
创建GP文件系统
# 文件系统名
gpfsdw
# 子节点,视segment数创建目录
mkdir -p /gpfsdw/seg1
mkdir -p /gpfsdw/seg2
chown -R gpadmin:gpadmin /gpfsdw
# 主节点
mkdir -p /gpfsdw/master
chown -R gpadmin:gpadmin /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;
删除GP数据库
gpdeletesystem -d /gpmaster/gpseg-1 -f
查看segment配置
select * from gp_segment_configuration;
文件系统
select * from pg_filespace_entry;
磁盘、数据库空间
SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment;
SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname;
日志
SELECT * FROM gp_toolkit.__gp_log_master_ext;
SELECT * FROM gp_toolkit.__gp_log_segment_ext;
表数据分布
SELECT gp_segment_id, count(*) FROM <table_name> GROUP BY gp_segment_id;
表占用空间
SELECT relname as name, sotdsize/1024/1024 as size_MB, sotdtoastsize as toast, sotdadditionalsize as other
FROM gp_toolkit.gp_size_of_table_disk as sotd, pg_class
WHERE sotd.sotdoid = pg_class.oid ORDER BY relname;
索引占用空间
SELECT soisize/1024/1024 as size_MB, relname as indexname
FROM pg_class, gp_toolkit.gp_size_of_index
WHERE pg_class.oid = gp_size_of_index.soioid
AND pg_class.relkind='i';
OBJECT的操作统计
SELECT schemaname as schema, objname as table, usename as role, actionname as action, subtype as type, statime as time
FROM pg_stat_operations
WHERE objname = '<name>';
锁
SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_query
FROM pg_locks l, pg_class c, pg_stat_activity a
WHERE l.relation=c.oid
AND l.pid=a.procpid
ORDER BY c.relname;
队列
SELECT * FROM pg_resqueue_status;
gpfdist外部表
# 启动服务
gpfdist -d /share/txt -p 8081 –l /share/txt/gpfdist.log &
# 创建外部表,分隔符为’/t’
drop EXTERNAL TABLE TD_APP_LOG_BUYER;
CREATE EXTERNAL TABLE TD_APP_LOG_BUYER (
IP text,
ACCESSTIME text,
REQMETHOD text,
URL text,
STATUSCODE int,
REF text,
name text,
VID text)
LOCATION ('gpfdist://gphostm:8081/xxx.txt')
FORMAT 'TEXT' (DELIMITER E'/t'
FILL MISSING FIELDS) SEGMENT REJECT LIMIT 1 percent;
# 创建普通表
create table test select * from TD_APP_LOG_BUYER;
# 索引
# CREATE INDEX idx_test ON test USING bitmap (ip);
# 查询数据
select ip , count(*) from test group by ip order by count(*);
gpload
# 创建控制文件
# 加载数据
gpload -f my_load.yml
copy
COPY country FROM '/data/gpdb/country_data'
WITH DELIMITER '|' LOG ERRORS INTO err_country
SEGMENT REJECT LIMIT 10 ROWS;
gpfdist外部表
# 创建可写外部表
CREATE WRITABLE EXTERNAL TABLE unload_expenses
( LIKE expenses )
LOCATION ('gpfdist://etlhost-1:8081/expenses1.out',
'gpfdist://etlhost-2:8081/expenses2.out')
FORMAT 'TEXT' (DELIMITER ',')
DISTRIBUTED BY (exp_id);
# 写权限
GRANT INSERT ON writable_ext_table TO <name>;
# 写数据
INSERT INTO writable_ext_table SELECT * FROM regular_table;
copy
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/home/gpadmin/a_list_countries.out';
执行sql文件
psql gpdbname –f yoursqlfile.sql
或者psql登陆后执行
\i yoursqlfile.sql
Greenplum 日常维护的更多相关文章
- PostgreSQL、Greenplum 日常监控 和 维护任务
背景 Greenplum的日常监控点.评判标准,日常维护任务. 展示图层 由于一台主机可能跑多个实例,建议分层展示. 另外,即使是ON ECS虚拟机(一个虚拟机一个实例一对一的形态)的产品形态,实际上 ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- MS SQL 日常维护管理常用脚本(二)
监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息 Code Snippet SELEC ...
- 2.goldengate日常维护命令(转载)
goldengate日常维护命令 发表于 2013 年 7 月 4 日 由 Asysdba 1.查看进程状态 GGSCI (PONY) 2> info all 2.查看进程详细状态,有助于排错 ...
- db2日常维护
一. DB2日常维护操作 1.数据库的启动.停止.激活 db2 list active databases db2 active db 数据库名 db2start --启动 db2stop [forc ...
- svn服务配置和日常维护命令
Subversion独立服务和与apache整合服务. 一 .Svn独立服务安装 操作系统: Redhat Linux AS3 AS 4 ContOS AS 4 安装包获取: 下载[url]ht ...
- 程序员必备:Oracle日常维护命令
上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令.工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?( ...
- DB2日常维护——REORG TABLE命令优化数据库性能
一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误重复发生. 由于DB2使用CBO作为数据库的优化器,数据库对象的状 ...
随机推荐
- 重学 html の meta 标签
参考链接: https://segmentfault.com/a/1190000019052062?utm_medium=hao.caibaojian.com&utm_source=hao.c ...
- 包含时间的Json序列化
public static string ObjectToJson<T>(T t) { using (MemoryStream ms = new MemoryStream()) { Dat ...
- Apache Zookeeper 集群环境搭建
Zookeeper 是 一个分布式.开放源码的分布式应用程序协调服务,是Google Chubby的一个开源实现,大多数的分布式应用都需要Zookeeper的支持,这篇文章先简单的和大家分享如何搭建一 ...
- aliyun挂载oss
配置 oss 挂载 阿里云 ecs 按照ossfs工具:yum install http://gosspublic.alicdn.com/ossfs/ossfs_1.80.5_centos6.5_x8 ...
- [转帖]Oracle 数据库官方不支持VMWare
Oracle 数据库官方不支持VMWare [日期:2014-05-13] 来源:Linux社区 作者:myhuaer [字体:大 中 小] https://www.linuxidc.com/L ...
- USBIP源码分析
简介 在普通的电脑上,想使用USB设备,必须将插入到主机.USBIP却可以通过网络,让主机访问其他主机上的外部设备,而用户程序完全感知不到区别. usbip的文章在这里:https://pdfs.se ...
- JS基础_强制类型转换-String
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- CXF实现webService服务(一)
以前工作中也用CXF,但都是用别人现成搭好的环境,这次自己重头搭建一遍环境.过程中也有遇到的问题,也做了简单的整理. 对于CXF是干什么用的,我不想多说,大家都知道这是我们在Java编程中webSer ...
- html5_禁止复制网站内容
```//若是你不想别人复制你的网站内容,可以把这段js代码加到你网页上,即可屏蔽鼠标右键菜单.复制粘贴.选中等 有时候的需求是网站中有些内容不希望别人复制,那么就需要用代码控制.方法有多种:第一种: ...
- Python 第一个程序
第一个程序 打开pycharm,新建一个工程,新建一个文件(后缀为.py) 书写最简单的代码:print(人生苦短,我用python!) 执行python代码 使用pycharm的运行按钮 终端下输入 ...