Skip to content

Instantly share code, notes, and snippets.

@viirre
Last active April 10, 2018 18:33
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 viirre/0e6ae8405ebf0455869a2808d13e2aeb to your computer and use it in GitHub Desktop.
Save viirre/0e6ae8405ebf0455869a2808d13e2aeb to your computer and use it in GitHub Desktop.
Sync prod Mysql database to stage
#!/bin/bash
#1. Add ssh key (stage key) to PROD machine
# 1.1 On stage:
# cat ~/.ssh/id_rsa.pub
# 1.2 On prod
# nano ~/.ssh/authorized_keys
# * paste key*
DATE=$(date +"%Y-%m-%d")
REMOTE_HOST="user@ip"
REMOTE_FILE="dbname-${DATE}.sql.gz"
REMOTE_FILE_PATH="/path-to-backups/${REMOTE_FILE}"
LOCAL_FILE="dbname-${DATE}.sql"
LOCAL_MYSQL_DB="dbname"
LOCAL_MYSQL_USER="user"
LOCAL_MYSQL_PASSWORD="password"
#2. Copy DB backup file from prod to stage (on stage)
echo "Fetching backup file from prod server.."
scp $REMOTE_HOST:$REMOTE_FILE_PATH ~/
echo " -> Done\n"
#3. Extract db backup file
echo "Extracing backup.."
gunzip $REMOTE_FILE
echo " -> Done\n"
#4. Replace DB from db backup file
echo "Replacing database.."
mysql -u$LOCAL_MYSQL_USER -p$LOCAL_MYSQL_PASSWORD $LOCAL_MYSQL_DB < ~/$LOCAL_FILE
echo " -> Done\n"
#5. Remove db backup
echo "Removing temp backup.."
rm ~/$LOCAL_FILE
echo " -> Done\n"
#6. Done
echo "All done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment