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.

100 lines
4.5 KiB

  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. usage="Usage: fetch_latest_db.sh [live|stage|local_live|local_stage] (1,0:fetchNewFlag) (1,0:withGdprFlag)"
  7. env="$(getArgument "$1" "$usage" "live stage local_live local_stage")"
  8. fetch_new="$(getArgument "$2" "$usage" "1 0")"
  9. with_gdpr="$(getArgument "$3" "$usage" "1 0")"
  10. is_remote="$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi)"
  11. currentDate=$(date '+%Y-%m-%d_%H:%M:%S')
  12. echo
  13. echoMainTitle "Backup $env system database"
  14. database_name="$(getConfig "$env" "database_name")"
  15. if [ "$is_remote" == "1" ]
  16. then
  17. ignoredTablesArguments=("$(buildIgnoredTablesArguments "$env" "${gdpr_tables[*]}")")
  18. echo "Backup structure ..."
  19. has_fetched="$(if [ -f "$app_dir/var/latest/${env}_structure.sql.gz" ]; then echo 1; else echo 0; fi)"
  20. if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ]
  21. then
  22. scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf"
  23. ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/$env.my.cnf --no-tablespaces --no-data \
  24. \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
  25. sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_structure.sql.gz"
  26. scp "$ssh_user"@"$ssh_domain":"~/${env}_structure.sql.gz" "$app_dir/backup/database/$currentDate-${env}_structure.sql.gz"
  27. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_structure.sql.gz"
  28. fi
  29. echo "Backup data ..."
  30. has_fetched="$(if [ -f "$app_dir/var/latest/${env}_data.sql.gz" ]; then echo 1; else echo 0; fi)"
  31. if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ]
  32. then
  33. ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info \
  34. --skip-triggers ${ignoredTablesArguments[*]} \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C \
  35. sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > ~/${env}_data.sql.gz"
  36. scp "$ssh_user"@"$ssh_domain":"~/${env}_data.sql.gz" "$app_dir/backup/database/$currentDate-${env}_data.sql.gz"
  37. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_data.sql.gz"
  38. fi
  39. if [ "$with_gdpr" == "1" ]
  40. then
  41. includedTables=("$(buildIncludedTables "${gdprTables[@]}")")
  42. echo "Backup GDPR ..."
  43. has_fetched="$(if [ -f "$app_dir/var/latest/${env}_gdpr_data.sql.gz" ]; then echo 1; else echo 0; fi)"
  44. if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ]
  45. then
  46. ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info --skip-triggers \
  47. \"$database_name\" ${includedTables[*]} | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \
  48. ~/${env}_gdpr_data.sql.gz"
  49. scp "$ssh_user"@"$ssh_domain":"~/${env}_gdpr_data.sql.gz" "$app_dir/backup/database/$currentDate-${env}_gdpr_data.sql.gz"
  50. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_gdpr_data.sql.gz"
  51. fi
  52. fi
  53. ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf"
  54. else
  55. echo "Backup structure ..."
  56. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --hex-blob --no-data "$database_name" | \
  57. LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > \
  58. "$app_dir/backup/database/${currentDate}-${env}_structure.sql.gz"
  59. echo "Backup data ..."
  60. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob \
  61. ${ignoredTablesArguments[*]} "$database_name" | \
  62. LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \
  63. "$app_dir/backup/database/${currentDate}-${env}_data.sql.gz"
  64. if [ "$with_gdpr" == "1" ]
  65. then
  66. includedTables=("$(buildIncludedTables "${gdprTables[@]}")")
  67. echo "Backup gdpr ..."
  68. mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob \
  69. "$database_name" ${includedTables[*]} | \
  70. LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \
  71. "$app_dir/backup/database/${currentDate}-${env}_gdpr_data.sql.gz"
  72. fi
  73. fi
  74. echoFinal "... database backed up"
  75. echo "Running postscript ..."
  76. postScript "$app_dir/bin/postscripts/functions/backup_db.sh"