|
1 #!/bin/bash |
|
2 # database.sh - Made for Puppi |
|
3 |
|
4 # Sources common header for Puppi scripts |
|
5 . $(dirname $0)/header || exit 10 |
|
6 |
|
7 # Show help |
|
8 showhelp () { |
|
9 echo "This script executes database queries and dumps" |
|
10 echo "It integrates and uses variables provided by other core Puppi scripts" |
|
11 echo "It has the following options:" |
|
12 echo "-t <database_type> The database type. Currently only mysql is suppoerted" |
|
13 echo "-a <action> The action to perform:" |
|
14 echo " run - Run a mysql command based on a given .sql file" |
|
15 echo " dump - Dump the specified database in the archive dir" |
|
16 echo " restore - Restore the specified database from the archive dir" |
|
17 echo "-d <database_name> The database name to manage" |
|
18 echo "-u <database_user> The database user used to run the queries" |
|
19 echo "-p <database_password> The user password" |
|
20 echo "-h <host> The database server hostname" |
|
21 } |
|
22 |
|
23 # Arguments defaults |
|
24 db_type=mysql |
|
25 db_action=run |
|
26 db_user=root |
|
27 db_host=localhost |
|
28 db_password="" |
|
29 |
|
30 # Check Arguments |
|
31 while [ $# -gt 0 ]; do |
|
32 case "$1" in |
|
33 -t) |
|
34 db_type=$2 |
|
35 shift 2 ;; |
|
36 -a) |
|
37 db_action=$2 |
|
38 shift 2 ;; |
|
39 -d) |
|
40 db_name=$2 |
|
41 shift 2 ;; |
|
42 -u) |
|
43 db_user=$2 |
|
44 shift 2 ;; |
|
45 -p) |
|
46 db_password=$2 |
|
47 shift 2 ;; |
|
48 -h) |
|
49 db_host=$2 |
|
50 shift 2 ;; |
|
51 esac |
|
52 done |
|
53 |
|
54 |
|
55 |
|
56 mysql_run () { |
|
57 case "$db_action" in |
|
58 run) |
|
59 file $downloadedfile | grep gzip &>/dev/null 2>&1 && sqlfile_type="gzip" |
|
60 file $downloadedfile | grep Zip &>/dev/null 2>&1 && sqlfile_type="zip" |
|
61 case "$sqlfile_type" in |
|
62 gzip) |
|
63 zcat $downloadedfile | mysql -u $db_user -p$db_password -h $db_host $db_name |
|
64 check_retcode ;; |
|
65 zip) |
|
66 unzip -p $downloadedfile | mysql -u $db_user -p$db_password -h $db_host $db_name |
|
67 check_retcode ;; |
|
68 *) |
|
69 mysql -u $db_user -p$db_password -h $db_host $db_name < $downloadedfile |
|
70 check_retcode ;; |
|
71 esac |
|
72 ;; |
|
73 dump) |
|
74 mkdir -p $archivedir/$project/$tag |
|
75 if [ $archivedir/$project/latest ] ; then |
|
76 rm -f $archivedir/$project/latest |
|
77 fi |
|
78 ln -sf $archivedir/$project/$tag $archivedir/$project/latest |
|
79 |
|
80 mysqldump -u $db_user -p$db_password -h $db_host --add-drop-table --databases $db_name | gzip > $archivedir/$project/$tag/$db_name.sql.gz |
|
81 check_retcode ;; |
|
82 restore) |
|
83 zcat $archivedir/$project/$rollbackversion/$db_name.sql.gz | mysql -u $db_user -p$db_password -h $db_host $db_name |
|
84 check_retcode ;; |
|
85 esac |
|
86 } |
|
87 |
|
88 case "$db_type" in |
|
89 mysql) |
|
90 mysql_run |
|
91 ;; |
|
92 *) |
|
93 showhelp |
|
94 ;; |
|
95 esac |
|
96 |