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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits