-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptimizer.sh
executable file
·58 lines (44 loc) · 1.19 KB
/
optimizer.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash
#
# This script is intended to be a useful mode to save disk and optimize mysql
# databases.
#
# Function declarations
#
function main() {
SIZE=$(du -hs /var/lib/mysql/$1/ | awk '{ print $1; }')
echo "Compactación de la base de datos $1"
echo
echo "Espacio previo en disco: ${SIZE}"
echo "Introduzca la contraseña de root para generar el listado de tablas a optimizar desde la base de datos $1"
sql_prepare $1
echo "Vuelva a introducir la contraseña de root para comenzar la compactación de la base de datos $1"
mysql -u root -p $1 < ./optimize_$1.sql
NEW_SIZE=$(du -hs /var/lib/mysql/$1/ | awk '{ print $1; }')
echo
echo "Espacio en disco tras la compactación: ${NEW_SIZE}"
}
function sql_prepare() {
for i in $(echo "SHOW TABLES" | mysql -u root -p $1)
do
echo "OPTIMIZE TABLE $i;"
done | sed '1 d' > optimize_$1.sql
}
function Usage() {
let COUNT=0
for i in $(find /var/lib/mysql -maxdepth 1 -type d -exec basename {} \;)
do
BDD[$COUNT]=$i
((COUNT++))
done
echo "Usage: $0 $( IFS="|" ; echo "${BDD[*]}" )"
exit $?
}
# End of function declarations
#
if [ $# -lt 1 ]
then Usage
fi
[ -d /var/lib/mysql/$1 ] || Usage
main $1
exit $?