diff --git a/tools/backups/restore.sh b/tools/backups/restore.sh
new file mode 100755
index 0000000..f585a07
--- /dev/null
+++ b/tools/backups/restore.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+
+# The existing replicas all have this prefix:
+REPLICA_PREFIX="replica"
+
+# The new replicas made from the restored primary will have this prefix:
+NEW_REPLICA_PREFIX="replica-1"
+
+CLOUD_PROJECT="monorail-staging"
+
+DRY_RUN=true
+
+echo Restoring backups to primary for ${CLOUD_PROJECT}. Dry run: ${DRY_RUN}
+echo This will delete all read replicas with the prefix "${REPLICA_PREFIX}"
+echo and create a new set of replicas with the prefix "${NEW_REPLICA_PREFIX}"
+echo
+echo Checking for existing read replicas to delete:
+
+EXISTING_REPLICAS=($(gcloud sql instances list --project=${CLOUD_PROJECT} | grep ${REPLICA_PREFIX}- | awk '{print $1}'))
+
+if [ ${#EXISTING_REPLICAS[@]} -eq 0 ]; then
+  echo No replicas found with prefix ${REPLICA_PREFIX}
+  echo List instances to find the replica prefix by running:
+  echo gcloud sql instances list --project=${CLOUD_PROJECT}
+  exit 1
+fi
+
+echo Deleting ${#EXISTING_REPLICAS[@]} existing replicas found with the prefix ${REPLICA_PREFIX}
+
+for r in "${EXISTING_REPLICAS[@]}"; do
+  echo Deleting ${r}
+  cmd="gcloud sql instances delete ${r} --project=${CLOUD_PROJECT}"
+  echo ${cmd}
+  if [ ${DRY_RUN} == false ]; then
+    ${cmd}
+  fi
+done
+
+echo Checking for available backups:
+
+DUE_TIMES=($(gcloud sql backups list --instance primary --project=${CLOUD_PROJECT} | grep SUCCESSFUL | awk '{print $1}'))
+
+for index in ${!DUE_TIMES[*]}; do
+  echo "[${index}] ${DUE_TIMES[${index}]}"
+done
+
+echo "Choose one of the above due_time values."
+echo "NOTE: selecting anything besides 0 will require you to manually"
+echo "complete the rest of the restore process."
+echo "Recover from date [0: ${DUE_TIMES[0]}]:"
+read DUE_TIME_INDEX
+
+DUE_TIME=${DUE_TIMES[${DUE_TIME_INDEX}]}
+
+cmd="gcloud sql backups restore ${DUE_TIME} --project=${CLOUD_PROJECT} --restore-instance=primary"
+echo ${cmd}
+if [ ${DRY_RUN} == false ]; then
+  ${cmd}
+fi
+
+if [ "${DUE_TIME_INDEX}" -ne "0" ]; then
+  echo "You've restored an older-than-latest backup. Please contact speckle-oncall@"
+  echo "to request an on-demand backup of the primary before attempting to restart replicas,"
+  echo "which this script does not do automatically in this case."
+  echo "run 'gcloud sql instances create' commands to create new replicas manually after"
+  echo "you have confirmed with speckle-oncall@ the on-demand backup is complete."
+  echo "Exiting"
+  exit 0
+fi
+
+echo "Finding restore operation ID..."
+
+RESTORE_OP_IDS=($(gcloud sql operations list --instance=primary --project=${CLOUD_PROJECT} | grep RESTORE_VOLUME | awk '{print $1}'))
+
+# Assume the fist RESTORE_VOLUME is the operation we want; they're listed in reverse chronological order.
+echo Waiting on restore operation ID: ${RESTORE_OP_IDS[0]}
+
+if [ ${DRY_RUN} == false ]; then
+  gcloud sql operations wait ${RESTORE_OP_IDS[0]} --project=${CLOUD_PROJECT}
+fi
+
+echo Restore is finished on primary. Now create the new set of read replicas with the new name prefix ${NEW_REPLICA_PREFIX}:
+
+TIER=($(gcloud sql instances describe primary --project=${CLOUD_PROJECT} | grep tier | awk '{print $2}'))
+
+for i in {00..09}; do
+  cmd="gcloud sql instances create ${NEW_REPLICA_PREFIX}-${i} --master-instance-name=primary --project=${CLOUD_PROJECT} --tier=${TIER} --region=us-central1"
+  echo ${cmd}
+  if [ ${DRY_RUN} == false ]; then
+    ${cmd}
+  fi
+done
+
+echo If the replica creation steps above did not succeed due to authentication
+echo errors, you may need to retry them manually.
+echo
+echo
+echo Backup restore is nearly complete.  Check the instances page on developer console to see when
+echo all of the replicas are "Runnable" status. Until then, you may encounter errors in issue search.
+echo In the mean time:
+echo - edit settings.py to change the db_replica_prefix variable to be "${NEW_REPLICA_PREFIX}-"
+echo   Then either "make deploy_prod" or "make deploy_staging" for search to pick up the new prefix.
+echo   Then set the newly deploy version for besearch and besearch2 on the dev console Versons page.
+echo Follow-up:
+echo - Submit the change.
+echo - Delete old versions of besearch because they run up the GAE bill.
