Anomie has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/397913 )
Change subject: Add --replica parameter to sql script ...................................................................... Add --replica parameter to sql script I've often had a need to connect to a specific replica for debugging. Let's make it easy to do so. Also, add a --list-replicas parameter to list those replica names. Change-Id: Ic08bdf59693feec8cb75ea3954cb5e9de09f8fb2 --- M modules/scap/files/sql 1 file changed, 28 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/13/397913/1 diff --git a/modules/scap/files/sql b/modules/scap/files/sql index 01fe9c9..46f84a7 100755 --- a/modules/scap/files/sql +++ b/modules/scap/files/sql @@ -11,7 +11,7 @@ shift if [ -z "$db" ] || [ "$db" = "--help" ]; then - echo 'Usage: sql [--write | --group group] <dbname> [mysqloptions]' + echo 'Usage: sql [--write | --group group | --replica name | --list-replicas] <dbname> [mysqloptions]' exit 0 elif [ "$db" = "--write" ]; then hostcode="echo \$lb->getServerName(0);" @@ -28,7 +28,27 @@ echo "group must be a string containing only lowercase letters" exit 1 fi - hostcode="\$index = \$lb->getReaderIndex('"$group"'); if(\$index === false) exit(101); echo \$lb->getServerName(\$index);" + hostcode="\$index = \$lb->getReaderIndex('$group'); if(\$index === false) exit(101); echo \$lb->getServerName(\$index);" + + # Database is the next param + db=$1 + shift +elif [ "$db" = "--replica" ]; then + # Explicitly asked for a replica by name + name=$1 + shift + + if echo $name | grep -qvP '^[a-z0-9:]+\z'; then + echo "replica name must be a string containing only lowercase letters, numbers, and colons" + exit 1 + fi + hostcode="\$serverCount = \$lb->getServerCount(); for ( \$i = 0; \$i < \$serverCount; ++\$i ) { if ( \$lb->getServerName(\$i) === '$name' ) break; } if ( \$i >= \$serverCount ) exit(102); echo \$lb->getServerName(\$i);" + + # Database is the next param + db=$1 + shift +elif [ "$db" = "--list-replicas" ]; then + hostcode="\$serverCount = \$lb->getServerCount(); for ( \$i = 0; \$i < \$serverCount; ++\$i ) { echo ( \$i ? ' ' : '' ) . \$lb->getServerName(\$i); } exit(103);" # Database is the next param db=$1 @@ -55,13 +75,18 @@ else lbcode="\$lb = wfGetLB();" fi -host=`echo $lbcode $hostcode | /usr/local/bin/mwscript eval.php --wiki="$lookupdb"` +host=`echo "$lbcode $hostcode" | /usr/local/bin/mwscript eval.php --wiki="$lookupdb"` exitCode=$? if [ $exitCode -ne 0 ]; then # PHP error, probably an invalid DB or group if [ $exitCode -eq 101 ]; then echo "Error looking up group \"$group\"" 1>&2 + elif [ $exitCode -eq 102 ]; then + echo "Error looking up replica \"$name\"" 1>&2 + elif [ $exitCode -eq 103 ]; then + echo "$host" + exit 1 else echo "Error looking up DB \"$db\"" 1>&2 fi -- To view, visit https://gerrit.wikimedia.org/r/397913 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic08bdf59693feec8cb75ea3954cb5e9de09f8fb2 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Anomie <bjor...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits