mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-11 03:40:20 +00:00
Update and generalise database mirror script
The old script was specfic to the use in Australia and out of date. The new version isn't perfect but works well for me.
This commit is contained in:
@@ -4,45 +4,48 @@
|
||||
# Useful for when you want to test a migration against production data, or see
|
||||
# the effect of codebase changes on real-life data
|
||||
|
||||
# Usage: script/mirror_db.sh [ofn-staging1|ofn-staging2|ofn-prod]
|
||||
|
||||
set -e
|
||||
|
||||
HOST="$1"
|
||||
BUCKET="$2"
|
||||
: ${DB_USER='ofn_user'}
|
||||
: ${DB_DATABASE='openfoodnetwork'}
|
||||
|
||||
DB_OPTIONS=(
|
||||
--exclude-table-data=sessions
|
||||
--exclude-table-data=spree_log_entries
|
||||
--exclude-table-data=spree_state_changes
|
||||
--no-acl
|
||||
)
|
||||
|
||||
if [ -z "$HOST" ]; then
|
||||
echo "[Error] SSH host missing.
|
||||
Usage: $0 openfoodnetwork@openfoodnetwork.org.au" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if hash zeus 2>/dev/null && [ -e .zeus.sock ]; then
|
||||
RAILS_RUN='zeus r'
|
||||
else
|
||||
RAILS_RUN='bundle exec rails runner'
|
||||
fi
|
||||
|
||||
if [[ $1 != 'ofn-no' ]]; then
|
||||
DB_USER='openfoodweb'
|
||||
DB_DATABASE='openfoodweb_production'
|
||||
else
|
||||
DB_USER='ofn_user'
|
||||
DB_DATABASE='openfoodnetwork'
|
||||
fi
|
||||
|
||||
DB_OPTIONS='--exclude-table-data=sessions'
|
||||
|
||||
# -- Mirror database
|
||||
echo "Mirroring database..."
|
||||
echo "drop database open_food_network_dev" | psql -h localhost -U ofn open_food_network_test
|
||||
echo "create database open_food_network_dev" | psql -h localhost -U ofn open_food_network_test
|
||||
ssh $1 "pg_dump -h localhost -U $DB_USER $DB_DATABASE $DB_OPTIONS |gzip" |gunzip |psql -h localhost -U ofn open_food_network_dev
|
||||
|
||||
dropdb -h localhost -U ofn open_food_network_dev
|
||||
createdb -h localhost -U ofn open_food_network_dev
|
||||
ssh -C "$HOST" "pg_dump -h localhost -U $DB_USER $DB_DATABASE ${DB_OPTIONS[@]}" | psql -h localhost -U ofn open_food_network_dev
|
||||
|
||||
# -- Disable S3
|
||||
echo "Preparing mirrored database..."
|
||||
$RAILS_RUN script/prepare_imported_db.rb
|
||||
|
||||
|
||||
# -- Mirror images
|
||||
if hash aws 2>/dev/null; then
|
||||
if [ -n "$BUCKET" ] && hash aws 2>/dev/null; then
|
||||
echo "Mirroring images..."
|
||||
BUCKET=`echo $1 | sed s/-/_/ | sed "s/\\([0-9]\\)/_\1/" | sed s/prod/production/`
|
||||
aws s3 sync s3://$BUCKET/public public/
|
||||
aws s3 sync "s3://$BUCKET/public public/"
|
||||
|
||||
else
|
||||
echo "Please install the AWS CLI tools so that I can copy the images from $1 for you."
|
||||
echo "Please install the AWS CLI tools so that I can copy the images from $BUCKET for you."
|
||||
echo "eg. sudo easy_install awscli"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user