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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

今天跟大家一起分享几个运维命令,这些命令都是由普通的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的运维经验~~

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
运维 Prometheus 监控
自动化运维的魔法:使用Python脚本简化日常任务
【8月更文挑战第50天】在数字化时代的浪潮中,自动化运维成为提升效率、减少人为错误的利器。本文将通过一个实际案例,展示如何利用Python脚本实现自动化部署和监控,从而让运维工作变得更加轻松和高效。我们将一起探索代码的力量,解锁自动化运维的神秘面纱,让你的工作环境焕然一新。
156 81
|
7天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
21 3
|
12天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
17 3
|
13天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
14天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
18天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
17 3
|
1月前
|
人工智能 运维 Devops
自动化运维之路:从脚本到DevOps的转变
【10月更文挑战第7天】在这篇文章中,我们将一起探索自动化运维的演变历程,从最初的简单脚本到现代的DevOps实践。我们将深入理解自动化如何改变了运维工作的本质,并讨论实现这一转变的关键技术和策略。文章将不包含代码示例,而是聚焦于理念、工具和方法论的介绍,旨在为读者提供一个全面的自动化运维框架视图。
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
35 1
|
1月前
|
人工智能 运维 监控
自动化运维:从脚本到工具的演变之路
【10月更文挑战第8天】在数字化时代的浪潮中,运维不再是简单的硬件维护,它已经演变成一场关于效率、稳定性和创新的技术革命。本文将带您领略自动化运维的魅力,从最初的脚本编写到现代复杂的自动化工具,我们将一探究竟,看看这些工具如何帮助运维人员简化日常任务,提升工作效率,并最终推动业务发展。
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
52 2