【shellスクリプト】mysqlデータベースから現在の1ヶ月を超えるすべてのテーブルを削除します(データは同時に消去されます).
スクリプトに直接行って、持って行っても感謝しません.
#!/bin/bash
# database01 04
# :
# Usage: ./script user password dbname
# Usage: ./script user password dbname server-ip
# Usage: ./script user password dbname mysql.nixcraft.in
# Usage: : syntax error near unexpected token `do
# ^M, linux sed -i 's/^M//g' tablexxxx_clean.sh 。
# ^M ctrl+v+m, ^A ^B
# ---------------------------------------------------
MUSER="username"
MPASS="password"
MDBS=("database01" "database02" "database03" "database04")
MHOST="10.xxx.40.xx"
MHOSTS=("10.xxx.40.xx" "10.xxx.44.xx" "10.xxx.48.xx" "10.xxx.43.xx")
#[ "$2" != "" ] && MHOST="$2"
MPORTS=(3301 3302 3303 3304)
#
MYSQL=$(which mysql)
AWK=$(which awk)
GREP=$(which grep)
# help
# if [ ! $# -ge 3 ]
# then
# echo "Usage: $0 {MySQL-Database-Name} [host-name] [port]"
# echo "Delte table1 and table2 datas from a MySQL"
# exit 1
# fi
# mysql
for MHOST in ${MHOSTS[@]}
do
for MPORT in ${MPORTS[0]}
do
echo ""
echo ""
#echo "MPORT=$MPORT"
#MDB="database01"
MDB=${MDBS[0]}
for i in $(seq 1 3)
do
echo $i
if [ $MHOST == ${MHOSTS[$i]} ]
then
MDB=${MDBS[$i]}
MPORT=${MPORTS[$i]}
fi
done
$MYSQL -A -u $MUSER -p$MPASS -h $MHOST -P $MPORT -e "use $MDB" &>/dev/null
#echo "user=$MUSER,pass=$MPASS,host=$MHOST,port=$MPORT,db=$MDB"
if [ $? -ne 0 ]
then
echo "Error - host port , mysql "
exit 1
fi
XXXXXX_TABLES=$($MYSQL -A -u $MUSER -p$MPASS -h $MHOST -P $MPORT -D $MDB -e 'show tables' | $AWK '{ print $1}' | $GREP -E 'tablexxxxxx_' )
if [ "$XXXXXX_TABLES" == "" ]
then
echo "Error - $MDB "
exit 2
fi
# - 1
#time_now=$(date -d +%Y%m%d)
time_1_month_ago=$(date --date="1 month ago" +%Y%m%d)
#echo $time_1_month_ago
echo "=============================["+$MDB+"start]==============================="
echo "drop $MDB 1_month_ago tablexxxxxx_table start:"
for tablexxxxxx_table in ${XXXXXX_TABLES[@]}
do
OLD_IFS="$IFS"
IFS="_"
tablexxxxxx_table_arr=($tablexxxxxx_table)
IFS="$OLD_IFS"
# ,
tablexxxxxx_table_time=${tablexxxxxx_table_arr[1]}
if [ $tablexxxxxx_table_time -lt $time_1_month_ago ] && [ $tablexxxxxx_table_time -gt 19970901 ]
then
# let us drop table
echo "drop table $tablexxxxxx_table start"
$MYSQL -A -u $MUSER -p$MPASS -h $MHOST -P $MPORT -D $MDB -e "drop table $tablexxxxxx_table;"
if [ $? -ne 0 ]
then
echo "Error - host port , mysql "
exit 4
fi
echo "drop table $tablexxxxxx_table finish"
fi
done
echo "drop $MDB 1_month_ago tablexxxxxx_table finish!"
echo "=============================["+$MDB+"end]==============================="
done
done