]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - scripts/move_status_network.sh
Merge branch 'master' of gitorious.org:social/mainline
[quix0rs-gnu-social.git] / scripts / move_status_network.sh
1 #!/bin/bash
2
3 # live fast! die young!
4
5 set -e
6
7 # move_status_network.sh nickname newserver
8
9 export nickname="$1"
10 export newdbhost="$2"
11
12 source /etc/statusnet/setup.cfg
13
14 function set_maintenance_mode()
15 {
16     local nickname=$1;
17
18     php $PHPBASE/scripts/settag.php $nickname maintenancemode;
19 }
20
21 function get_current_db_info()
22 {
23     local nickname=$1;
24
25     #FIXME I couldn't make this work better
26     
27     export dbhost=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbhost FROM status_network WHERE nickname = '$nickname'" $SITEDB`
28     export dbuser=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbuser FROM status_network WHERE nickname = '$nickname'" $SITEDB`
29     export dbpass=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbpass FROM status_network WHERE nickname = '$nickname'" $SITEDB`
30     export dbname=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbname FROM status_network WHERE nickname = '$nickname'" $SITEDB`
31 }
32
33 function create_empty_db()
34 {
35     local newdbhost=$1;
36     local dbuser=$2;
37     local dbpass=$3;
38     local dbname=$4;
39     
40     mysqladmin -h $newdbhost -u $ADMIN --password=$ADMINPASS create $dbname;
41     
42     mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS -e "GRANT ALL ON $dbname.* TO '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';" $dbname;
43     mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS -e "GRANT ALL ON $dbname.* TO '$dbuser'@'%' IDENTIFIED BY '$dbpass';" $dbname;
44 }
45
46 function transfer_data()
47 {
48     local dbhost=$1;
49     local newdbhost=$2;
50     local dbuser=$3;
51     local dbpass=$4;
52     local dbname=$5;
53     local dumpfile=`mktemp`;
54
55     mysqldump -h $dbhost -u $ADMIN --password=$ADMINPASS $dbname > $dumpfile;
56     mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS $dbname < $dumpfile;
57     rm $dumpfile;
58 }
59
60 function update_routing_table()
61 {
62     local nickname=$1;
63     local newdbhost=$2;
64     
65     mysql -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "UPDATE status_network set dbhost = '$newdbhost' where nickname = '$nickname'" $SITEDB
66 }
67
68 function flush_site()
69 {
70     local nickname=$1;
71     
72     php $PHPBASE/scripts/flushsite.php -s$nickname.$WILDCARD
73 }
74
75 function unset_maintenance_mode()
76 {
77     local nickname=$1;
78     
79     php $PHPBASE/scripts/settag.php -d $nickname maintenancemode;
80 }
81
82 echo -n Setting maintenance mode on $nickname...
83 set_maintenance_mode $nickname
84 echo DONE.
85 echo -n Getting current database info...
86 get_current_db_info $nickname
87 echo DONE.
88 echo -n Creating empty $dbname database on server $newdbhost...
89 create_empty_db $newdbhost $dbuser $dbpass $dbname
90 echo DONE
91 echo -n Copying $dbname database from $dbhost to $newdbhost...
92 transfer_data $dbhost $newdbhost $dbuser $dbpass $dbname
93 echo DONE
94 echo -n Updating the routing table for $nickname to use $dbname on $newdbhost...
95 update_routing_table $nickname $newdbhost
96 echo DONE
97 echo -n Flushing $nickname site from cache...
98 flush_site $nickname
99 echo DONE
100 echo -n Turning off maintenance mode on $nickname...
101 unset_maintenance_mode $nickname
102 echo DONE.