Skip to content

Instantly share code, notes, and snippets.

@keithpotter21
Last active March 10, 2017 17:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keithpotter21/a5e7f7f0c43294ef237cfc22c699c8ec to your computer and use it in GitHub Desktop.
Save keithpotter21/a5e7f7f0c43294ef237cfc22c699c8ec to your computer and use it in GitHub Desktop.
Bash script to migrate a mysql database from a production server to a local database.
#/bin/sh
#
# Script to migrate databases from prod
#
REMOTE_HOST=<your-remote-hostname>
REMOTE_USER=<your-remote-username>
# get remote password
read -s -p "Enter mysql password for PROD: " REMOTE_PASSWORD ; echo ; echo
LOCAL_HOST=localhost
LOCAL_USER=<your-local-username>
LOCAL_PASSWORD=<your-local-password>
# define mysql database
DB=<your-local-database>
# detect paths
MYSQL=$(which mysql)
AWK=$(which awk)
GREP=$(which grep)
MYSQLDUMP=$(which mysqldump)
# make sure we can connect to the local server
$MYSQL -u $LOCAL_USER -p$LOCAL_PASSWORD -h $LOCAL_HOST -e "use $DB" &>/dev/null
if [ $? -ne 0 ]
then
echo "Error - Cannot connect to $LOCAL_HOST mysql server using given username, password or database does not exits!"
exit 1
fi
# make sure we can connect to server
$MYSQL -u $REMOTE_USER -p$remote_REMOTE_PASSWORD -h $REMOTE_HOST -e "use $DB" &>/dev/null
if [ $? -ne 0 ]
then
echo "Error - Cannot connect to $REMOTE_HOST mysql server using given username, password or database does not exits!"
exit 1
fi
TABLES=$($MYSQL -u $LOCAL_USER -p$LOCAL_PASSWORD -h $LOCAL_HOST $DB -e 'show tables' | $AWK '{ print $1}' | $GREP -v '^Tables' )
# make sure tables exits
if [ "$TABLES" == "" ]
then
echo "No table found in $DB database on $LOCAL_HOST!"
fi
# delete local database tables
echo "Dropping tables in $DB"
for t in $TABLES
do
echo "Deleting $t table from $DB database on $LOCAL_HOST..."
$MYSQL -u $LOCAL_USER -p$LOCAL_PASSWORD -h $LOCAL_HOST $DB -e "drop table $t" &>/dev/null
done
echo "Exporting data for $DB from PROD to LOCAL"
$MYSQLDUMP -h $REMOTE_HOST -u $REMOTE_USER -p$REMOTE_PASSWORD $DB | $MYSQL -h $LOCAL_HOST -u $LOCAL_USER -p$LOCAL_PASSWORD $DB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment