123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #!/bin/bash
- # live fast! die young!
- set -e
- # move_status_network.sh nickname newserver
- export nickname="$1"
- export newdbhost="$2"
- source /etc/statusnet/setup.cfg
- function set_maintenance_mode()
- {
- local nickname=$1;
- php $PHPBASE/scripts/settag.php $nickname maintenancemode;
- }
- function get_current_db_info()
- {
- local nickname=$1;
- #FIXME I couldn't make this work better
-
- export dbhost=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbhost FROM status_network WHERE nickname = '$nickname'" $SITEDB`
- export dbuser=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbuser FROM status_network WHERE nickname = '$nickname'" $SITEDB`
- export dbpass=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbpass FROM status_network WHERE nickname = '$nickname'" $SITEDB`
- export dbname=`mysql -NB -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "SELECT dbname FROM status_network WHERE nickname = '$nickname'" $SITEDB`
- }
- function create_empty_db()
- {
- local newdbhost=$1;
- local dbuser=$2;
- local dbpass=$3;
- local dbname=$4;
-
- mysqladmin -h $newdbhost -u $ADMIN --password=$ADMINPASS create $dbname;
-
- mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS -e "GRANT ALL ON $dbname.* TO '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';" $dbname;
- mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS -e "GRANT ALL ON $dbname.* TO '$dbuser'@'%' IDENTIFIED BY '$dbpass';" $dbname;
- }
- function transfer_data()
- {
- local dbhost=$1;
- local newdbhost=$2;
- local dbuser=$3;
- local dbpass=$4;
- local dbname=$5;
- local dumpfile=`mktemp`;
- mysqldump -h $dbhost -u $ADMIN --password=$ADMINPASS $dbname > $dumpfile;
- mysql -h $newdbhost -u $ADMIN --password=$ADMINPASS $dbname < $dumpfile;
- rm $dumpfile;
- }
- function update_routing_table()
- {
- local nickname=$1;
- local newdbhost=$2;
-
- mysql -h $SITEDBHOSTNAME -u $ADMIN --password=$ADMINPASS -e "UPDATE status_network set dbhost = '$newdbhost' where nickname = '$nickname'" $SITEDB
- }
- function flush_site()
- {
- local nickname=$1;
-
- php $PHPBASE/scripts/flushsite.php -s$nickname.$WILDCARD
- }
- function unset_maintenance_mode()
- {
- local nickname=$1;
-
- php $PHPBASE/scripts/settag.php -d $nickname maintenancemode;
- }
- echo -n Setting maintenance mode on $nickname...
- set_maintenance_mode $nickname
- echo DONE.
- echo -n Getting current database info...
- get_current_db_info $nickname
- echo DONE.
- echo -n Creating empty $dbname database on server $newdbhost...
- create_empty_db $newdbhost $dbuser $dbpass $dbname
- echo DONE
- echo -n Copying $dbname database from $dbhost to $newdbhost...
- transfer_data $dbhost $newdbhost $dbuser $dbpass $dbname
- echo DONE
- echo -n Updating the routing table for $nickname to use $dbname on $newdbhost...
- update_routing_table $nickname $newdbhost
- echo DONE
- echo -n Flushing $nickname site from cache...
- flush_site $nickname
- echo DONE
- echo -n Turning off maintenance mode on $nickname...
- unset_maintenance_mode $nickname
- echo DONE.
|