#!/bin/bash ### DO NOT EDIT THIS FILE source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) source "$app_dir/etc/config.sh" env=$(getArgument "$1" "Usage: import_db.sh [live|stage]" "live stage") echo echoMainTitle "Import Database from $env to local ($env)" currentDate=$(date '+%Y-%m-%d_%H:%M:%S') addSSHKey "$env" ssh_user="$(eval "echo \$${env}_ssh_user")" ssh_domain="$(eval "echo \$${env}_ssh_domain")" ignoredTablesArguments=$(buildIgnoredTablesArguments "$env" "${gdpr_tables[*]}") echo "Fetching Database ..." database_name=$(eval "echo \$${env}_database_name") local_database_name=$(eval "echo \"\$local_${env}_database_name\"") scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf" ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/$env.my.cnf --no-tablespaces --no-data \ \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \ sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_structure.sql.gz" scp "$ssh_user"@"$ssh_domain":"~/${env}_structure.sql.gz" "$app_dir/var/tmp/${env}_structure.sql.gz" ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_structure.sql.gz" ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info \ --skip-triggers $ignoredTablesArguments \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C \ sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > ~/${env}_data.sql.gz" scp "$ssh_user"@"$ssh_domain":"~/${env}_data.sql.gz" "$app_dir/var/tmp/${env}_data.sql.gz" ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_data.sql.gz" ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf" echo "Backup Database ..." mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --hex-blob --no-data "$local_database_name" | \ LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > \ "$app_dir/backup/database/${currentDate}_local_${env}_structure.sql.gz" mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob "$local_database_name" | \ LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \ "$app_dir/backup/database/${currentDate}_local_${env}_data.sql.gz" cp "$app_dir/var/tmp/${env}_structure.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_structure.sql.gz" cp "$app_dir/var/tmp/${env}_data.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_data.sql.gz" echo "Uncompress Database ..." gzip --force -d "$app_dir/var/tmp/${env}_structure.sql.gz" gzip --force -d "$app_dir/var/tmp/${env}_data.sql.gz" echo "Install Database ..." mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -e "CREATE DATABASE IF NOT EXISTS \`$local_database_name\`;" echo "Remove Tables ..." mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --add-drop-table --add-drop-trigger --no-data "$local_database_name" | \ grep -e '[DROP TABLE|DROP TRIGGER]' >> "$app_dir/var/tmp/drop_local_$env.sql" echo "SET FOREIGN_KEY_CHECKS = 1;" >> "$app_dir/var/tmp/drop_local_$env.sql" mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/drop_local_$env.sql" echo "Import Structure ..." mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_structure.sql" echo "Import Data ..." mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_data.sql" echo "Post Scripts ..." postScript "$app_dir/bin/postscripts/import_db.sh" "$app_dir/bin/commands/make_local_database.sh" "$env" "$app_dir/bin/commands/create_local_env.sh" "local_$env" echo "Cleanup ..." rm "$app_dir/var/tmp/drop_local_$env.sql" rm "$app_dir/var/tmp/${env}_structure.sql" rm "$app_dir/var/tmp/${env}_data.sql"