Skip to content

Instantly share code, notes, and snippets.

@robwilkerson
Created June 25, 2013 16:24
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robwilkerson/5859912 to your computer and use it in GitHub Desktop.
Save robwilkerson/5859912 to your computer and use it in GitHub Desktop.
Creates and populates a local (Vagrant) database from a remote production source database.
echo "--> Creating a fresh database..."
mysql -uroot --execute "DROP DATABASE IF EXISTS <db_name>; CREATE DATABASE <db_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
echo "<-- Complete."
echo "--> Configuring SSH access to production resources for `id -un`..."
mkdir ~/.ssh
cp /vagrant/.ssh/<name>.pem ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
SSH_OPTIONS=''
echo "<-- Complete."
echo "--> Dumping the production database..."
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/<name>.pem <user>@<host> "mysqldump -u<db_user> -p'<db_password>' --opt --no-create-db --complete-insert --databases <db_name> | gzip > /tmp/<db_name>.dump.sql.gz" > /dev/null
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/<name>.pem <user>@<host>:/tmp/<db_name>.dump.sql.gz /tmp
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/<name>.pem <user>@<host> "rm /tmp/<db_name>.dump.sql.gz"
echo "<-- Complete."
echo "--> Populating the newly created development database from production..."
gunzip < /tmp/<db_name>.dump.sql.gz | mysql -D <db_name>
rm /tmp/<db_name>.dump.sql.gz
echo "<-- Complete."
echo "--> Applying release-specific updates..."
cat /vagrant/<path/to>/release.sql | sed -e s/@DB_NAME@/<db_name>/ | mysql -uroot
echo "<-- Complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment