抛砖引玉:Greenplum运维脚本编写方式-阿里云开发者社区

开发者社区> 开发与运维> 正文

抛砖引玉:Greenplum运维脚本编写方式

简介:

今天跟大家一起分享几个运维命令,这些命令都是由普通的Linux命令组成的,可以任意组合封装成Shell脚本,也可以延伸思路封装其他命令,下面放干货抛砖引玉:

1.查看primary segment占用空间(不包括日志和备份文件)

命令:

gpssh -f /home/dgadmin/hostfile "du -h --exclude=*pg_log* --exclude=*db_dump* -s /dgdata/primary/dg*"

解释:

-f 参数后面接segment主机名文件,通常在集群初始化的时候已经创建,这里是hostfile文件
--exclude 参数代表排除的文件夹,这里不包括日志和备份文件,所以两个exclude选项分别对应了这两个目录
-s 参数后面接集群primary数据目录,这个通常在初始化集群文件中已经定义过,本文为dg01,dg02,所以使用dg*

示例:

# 排除所有的日志和备份文件
dgadmin@flash:/dgdata/primary/dg0/pg_log$ gpssh -f /home/dgadmin/hostfile "du -h --exclude=*pg_log* --exclude=*db_dump* -s /dgdata/primary/dg*"
[flash] 2.2G    /dgdata/primary/dg0
[flash] 2.2G    /dgdata/primary/dg1

# 只排除备份文件
dgadmin@flash:/dgdata/primary/dg0/pg_log$ gpssh -f /home/dgadmin/hostfile "du -h --exclude=*db_dump* -s /dgdata/primary/dg*"
[flash] 3.2G    /dgdata/primary/dg0
[flash] 2.2G    /dgdata/primary/dg1

2.查看primary日志占用空间

命令:

gpssh -f /home/dgadmin/hostfile "du –h -s /dgdata/primary/dg*/pg_log*"

解释:

-f 参数后面接segment主机名文件,通常在集群初始化的时候已经创建,这里是hostfile文件
-s 参数后面接集群primary日志数据目录,这个通常在初始化集群文件中已经定义过,本文为dg*/pg_log*

示例:

dgadmin@flash:~$ gpssh -f /home/dgadmin/hostfile "du -h -s /dgdata/primary/dg*/pg_log*"
[flash] 1001M    /dgdata/primary/dg0/pg_log
[flash] 56K    /dgdata/primary/dg1/pg_log

3.批量操作同一模式下的表

命令:

for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" tpch1g` ; do psql -c "alter table $tbl owner to dgadmin" tpch1g ; done

解释:

for 语句中第一个psql查询出tpch1g数据库的public模式下的所有表名
do 语句中的psql接前面的结果,循环执行更新动作

示例:

# 将tpch1g数据库下public模式的所有表所属用户改为dgadmin
dgadmin@flash:~$ for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" -d tpch1g` ; do psql -c "alter table $tbl owner to dgadmin" -d tpch1g ; done
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE

# 将tpch1g数据库下tpch模式的表迁移到public下
dgadmin@flash:~$ for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname='tpch';" -d tpch1g`; do psql -c "ALTER TABLE tpch.$tbl SET SCHEMA public;" -d tpch1g; done
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE

4.查看集群所有数据库

命令:

psql -d postgres -q -c "\l" | sed -n 4,/\eof/p | grep -v rows | grep -v template0 | grep -v template1 | awk {'print $1}' | sed 's/^://g' | sed -e '/^$/d' | grep -v '|'

解释:

##本命令实际上就是执行了一下psql的\l命令,将除用户数据库以外的所有返回都删除了

示例:

dgadmin@flash:~$ psql -d postgres -q -c "\l" | sed -n 4,/\eof/p | grep -v rows | grep -v template0 | grep -v template1 | awk {'print $1}' | sed 's/^://g' | sed -e '/^$/d' | grep -v '|'
postgres
tpch1g

本文抛砖引玉,日常总结的一些脚本思路,希望更多的朋友分享GP的运维经验~~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章