Last active
March 10, 2017 17:14
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/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