閱讀730 返回首頁    go 微軟 go Office


拋磚引玉: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

  上一篇:go  MPP分布式數據庫性能評估方法 - 阿裏雲HybridDB for PostgreSQL最佳實踐
  下一篇:go  阿裏雲免費套餐邀請碼