抛砖引玉: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的运维经验~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值