Ein für Shopware 6 vorbereitet Systemmanagment.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #!/bin/bash
  2. ### DO NOT EDIT THIS FILE
  3. source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh"
  4. app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)
  5. source "$app_dir/etc/config.sh"
  6. env=$(getArgument "$1" "Usage: import_db.sh [live|stage]" "live stage")
  7. echo
  8. echoMainTitle "Import Database from $env to local ($env)"
  9. currentDate=$(date '+%Y-%m-%d_%H:%M:%S')
  10. addSSHKey "$env"
  11. ssh_user="$(eval "echo \$${env}_ssh_user")"
  12. ssh_domain="$(eval "echo \$${env}_ssh_domain")"
  13. ignoredTablesArguments=$(buildIgnoredTablesArguments "$env" "${gdpr_tables[*]}")
  14. echo "Fetching Database ..."
  15. database_name=$(eval "echo \$${env}_database_name")
  16. local_database_name=$(eval "echo \"\$local_${env}_database_name\"")
  17. scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf"
  18. ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/$env.my.cnf --no-tablespaces --no-data \
  19. \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
  20. sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_structure.sql.gz"
  21. scp "$ssh_user"@"$ssh_domain":"~/${env}_structure.sql.gz" "$app_dir/var/tmp/${env}_structure.sql.gz"
  22. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_structure.sql.gz"
  23. ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info \
  24. --skip-triggers $ignoredTablesArguments \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C \
  25. sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > ~/${env}_data.sql.gz"
  26. scp "$ssh_user"@"$ssh_domain":"~/${env}_data.sql.gz" "$app_dir/var/tmp/${env}_data.sql.gz"
  27. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_data.sql.gz"
  28. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf"
  29. echo "Backup Database ..."
  30. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --hex-blob --no-data "$local_database_name" | \
  31. LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > \
  32. "$app_dir/backup/database/${currentDate}_local_${env}_structure.sql.gz"
  33. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob "$local_database_name" | \
  34. LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \
  35. "$app_dir/backup/database/${currentDate}_local_${env}_data.sql.gz"
  36. cp "$app_dir/var/tmp/${env}_structure.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_structure.sql.gz"
  37. cp "$app_dir/var/tmp/${env}_data.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_data.sql.gz"
  38. echo "Uncompress Database ..."
  39. gzip --force -d "$app_dir/var/tmp/${env}_structure.sql.gz"
  40. gzip --force -d "$app_dir/var/tmp/${env}_data.sql.gz"
  41. echo "Install Database ..."
  42. mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -e "CREATE DATABASE IF NOT EXISTS \`$local_database_name\`;"
  43. echo "Remove Tables ..."
  44. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --add-drop-table --add-drop-trigger --no-data "$local_database_name" | \
  45. grep -e '[DROP TABLE|DROP TRIGGER]' >> "$app_dir/var/tmp/drop_local_$env.sql"
  46. echo "SET FOREIGN_KEY_CHECKS = 1;" >> "$app_dir/var/tmp/drop_local_$env.sql"
  47. mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/drop_local_$env.sql"
  48. echo "Import Structure ..."
  49. mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_structure.sql"
  50. echo "Import Data ..."
  51. mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_data.sql"
  52. echo "Post Scripts ..."
  53. postScript "$app_dir/bin/postscripts/import_db.sh"
  54. "$app_dir/bin/commands/make_local_database.sh" "$env"
  55. "$app_dir/bin/commands/create_local_env.sh" "local_$env"
  56. echo "Cleanup ..."
  57. rm "$app_dir/var/tmp/drop_local_$env.sql"
  58. rm "$app_dir/var/tmp/${env}_structure.sql"
  59. rm "$app_dir/var/tmp/${env}_data.sql"