#!/bin/sh

# Пользоваться так: 
# Хватит ли места, чтобы проальтерить самую большую таблицу:
# ppcdata-pre-alter-disk-report
# Хватит ли места, чтобы проальтерить указанную таблицу:
# ppcdata-pre-alter-disk-report bids
# Самые проблемные реплики:
# ppcdata-pre-alter-disk-report phrases |sort -nk 17 |head
# Реплики одного шарда:
# ppcdata-pre-alter-disk-report banners |grep -w ppcdata15 

# Запускать там, где работает executer и есть доступ к серверам

# параметром можно передавать только имя таблицы; выкидываем все подозрительные символы
export MY_TBL=`echo $1|sed 's/[^a-z0-9_]//g'`
# а если параметра нет -- берем звездочку, чтобы нашлась самая большая таблица
if [ -z $1 ] 
then
	export MY_TBL='*'
fi
# executer -- только чтобы получить список всех серверов; если надо -- можно поменять на другой источник
executer -q exec %direct_ng_databases_mysql_ppcdata_ppcdata 'hostname -f' 2>/dev/null | while read h ; do ssh -q $h "MY_TBL='$MY_TBL' sh -s" <<'EOF'
h=`hostname -f`; 
for db in $(lm --complete); do 
	avail=$(df /opt/mysql.$db/data | awk '{ print $4 }' | tail -1); 
	tbl=$(sudo ls -1 -S /opt/mysql.$db/data/ppc/$MY_TBL.ibd | head -1); 
	size=$(sudo stat -c %s $tbl); 
	echo "$h $db space avail: $((avail/1024/1024))GB; special ppc table - $(basename $tbl), size: $((size/1024/1024/1024))GB; (avail - size) = $((avail/1024/1024 - size/1024/1024/1024))GB"; 
done;
EOF
done

