quickie script to move ES blob tables from one wiki name to another, leaving fresh...
authorBrion Vibber <brion@users.mediawiki.org>
Mon, 26 Mar 2007 22:05:06 +0000 (22:05 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Mon, 26 Mar 2007 22:05:06 +0000 (22:05 +0000)
should be generalized

maintenance/renamewiki.php [new file with mode: 0644]

diff --git a/maintenance/renamewiki.php b/maintenance/renamewiki.php
new file mode 100644 (file)
index 0000000..6a0cb58
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+require_once( "commandLine.inc" );
+
+/**
+ * Why yes, this *is* another special-purpose Wikimedia maintenance script!
+ * Should be fixed up and generalized.
+ */
+
+if ( count( $args ) != 2 ) {
+       wfDie( "Rename external storage dbs and leave a new one...\n" .
+                       "Usage: php renamewiki.php <olddb> <newdb>\n" );
+}
+
+list( $from, $to ) = $args;
+
+echo "Renaming blob tables in ES from $from to $to...\n";
+echo "Sleeping 5 seconds...";
+sleep(5);
+echo "\n";
+
+# Initialise external storage
+if ( is_array( $wgDefaultExternalStore ) ) {
+       $stores = $wgDefaultExternalStore;
+} elseif ( $wgDefaultExternalStore ) {
+       $stores = array( $wgDefaultExternalStore );
+} else {
+       $stores = array();
+}
+if ( count( $stores ) ) {
+       require_once( 'ExternalStoreDB.php' );
+       print "Initialising external storage $store...\n";
+       global $wgDBuser, $wgDBpassword, $wgExternalServers;
+       foreach ( $stores as $storeURL ) {
+               $m = array();
+               if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
+                       continue;
+               }
+               
+               $cluster = $m[1];
+               
+               # Hack
+               $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
+               $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
+               
+               $store = new ExternalStoreDB;
+               $extdb =& $store->getMaster( $cluster );
+               $extdb->query( "SET table_type=InnoDB" );
+               $extdb->query( "CREATE DATABASE {$to}" );
+               $extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" );
+               $extdb->selectDB( $to );
+               dbsource( "$maintenance/storage/blobs.sql", $extdb );
+               $extdb->immediateCommit();
+       }
+}
+
+echo "done.\n";
+
+?>
\ No newline at end of file