forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/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. |