vagrand启动虚拟机并启动greenPlum

启动虚拟机$ cd greenplum
$ vagrant up

连接master:$ vagrant ssh mdw
$ su - gpadmin
$ Enter the password. The password is "changeme"
启动GP:gpstart查看gp的状态:gpstate

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

 
时间: 2024-08-04 04:10:16

vagrand启动虚拟机并启动greenPlum的相关文章

设置VMware10开机自启动并同时启动虚拟机镜像系统

首先,进入VMware Workstation的安装目录 C:\Program Files (x86)\VMware\VMware Workstation 加入 -x "C:\Windows XP Professional\Windows XP Professional.vmx"vmx替换成你的虚拟机绝对路径,-x代表开启虚拟机,-X代表开启虚拟机并且全屏 右键VMware Workstation快捷方式,看属性 在目标中直接添加[空格]-x[空格]"D:\ECC6ehp4\

Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案

原文:Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案 一打开虚拟机电脑就立马蓝屏重启,新建虚拟机也没用,然后就开始百度,百度上全说什么驱动不对,然后我就卸载升级各种驱动,然后各种重装VirtualBox,还是不行,搞了一两个小时,都快放弃了.决定上个google,终于看到一篇文章说是因为Hyper-V与Virtual Box冲突了,只需要在控制面板关闭就行.然后抱着试一试的心态. 首先我们先打开控制面板.按Wi

关于VMware安装Hyper-V不能启动虚拟机问题

Vmware Workstation 10 安装系统WindowsServer 2008 R2 DataCenter安装系统角色Hyper-V,创建虚拟机没问题,启动虚拟机时报错 详细信息 检查宿主机"虚拟技术是否开启"下图显示问题 检查VMware Workstation CPU虚拟化是否开启 以上能想到的都做了,但还是提示不能启动,随后到网上查资料未果,只是看到有网友提到Hyper-V不能嵌套到VMware里面,又查了半个小时,从一篇不能安装Hyper-V教程上看到了修改虚拟机.v

Hyper-v启动虚拟机报无法初始化故障(0X80070539)

出错原因: 服务器启用了Hyper-v功能,虚拟机运行正常,因工作需要进行了退域,但重新启动服务器报错,分析后,重新建立虚拟机运行正常,就是不能打开之前的虚拟机. 报错信息如下 尝试启动选定的虚拟机时出错 "Unnamed VM"无法初始化 无法尝试读取或更新虚拟机配置 "Unnamed VM"无法初始化.(虚拟机ID) "Unnamed VM" 无法读取或更新虚拟机配置:安全ID结构无效.(0X80070539)(虚拟机ID 08181F83-

使用Secure Boot后,导致VMware无法启动虚拟机

最初安装vmware时就报错 Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so:cannot open shared object file: No such file or directory Gtk-Message: Failed to load module "pk-gtk-module": libpk-gtk-module.so: canno

Java虚拟机的启动与程序的运行

这篇文章是从 OpenJDK 源代码的角度讲当我们运行了 java -classpath . hello 之后,java.exe 如何从 main 函数开始执行,启动虚拟机,并执行字节码中的代码. 实验环境 要了解一个系统是如何运行的,光看是不行的,要实际地运行,调试,修改才能对系统的动作方式有所了解. 起初我是按照 GitHub 上的一个项目 OpenJDK-Research 在 windows 7 64位平台上,使用 Visual Studio 2010 来调试,运行的.但是后来发现,这个项

Android开发问题之无法启动虚拟机

问题分析: [2014-01-16 20:18:26 - ] The connection to adb is down, and a severe error has occured. [2014-01-16 20:18:26 - ] You must restart adb and Eclipse. [2014-01-16 20:18:26 - ] Please ensure that adb is correctly located at 'E:\java\sdk\platform-too

RedisDesktopManager无法连接虚拟机中启动的redis服务问题解决

问题:开启虚拟机Redis,用RedisDesktopManager链接报超时. 问题排查: 1.检查redis是否正常启动 结果:正常启动 2.查看网络是否正常 结果:正常 3.检查redis bind地址是否设置本地. vim redis-conf 结果:已注释,无误. 4.检查防护墙是否开启,或者对应的6379端口是否开放. 结果:未开放6379 解决方案: 关闭防火墙:service iptables stop 测试结果:成功!

windows10怎么开机启动虚拟机

将如下脚本添加到windows计划任务中即可 "D:\Program Files (x86)\VMware\VMware Workstation\vmplayer.exe" "D:\Personal\Documents\Virtual Machines\Kbuntu\Kbuntu.vmx" 解释: "D:\Program Files (x86)\VMware\VMware Workstation\vmplayer.exe"是命令 "D: