拋磚引玉: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的運維經驗~~
最後更新:2017-08-13 22:51:32