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
2.5 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
  1. #! /bin/sh
  2. set -e
  3. if [ "${S3_ACCESS_KEY_ID}" == "**None**" ]; then
  4. echo "Warning: You did not set the S3_ACCESS_KEY_ID environment variable."
  5. fi
  6. if [ "${S3_SECRET_ACCESS_KEY}" == "**None**" ]; then
  7. echo "Warning: You did not set the S3_SECRET_ACCESS_KEY environment variable."
  8. fi
  9. if [ "${S3_BUCKET}" == "**None**" ]; then
  10. echo "You need to set the S3_BUCKET environment variable."
  11. exit 1
  12. fi
  13. if [ "${MYSQL_HOST}" == "**None**" ]; then
  14. echo "You need to set the MYSQL_HOST environment variable."
  15. exit 1
  16. fi
  17. if [ "${MYSQL_USER}" == "**None**" ]; then
  18. echo "You need to set the MYSQL_USER environment variable."
  19. exit 1
  20. fi
  21. if [ "${MYSQL_PASSWORD}" == "**None**" ]; then
  22. echo "You need to set the MYSQL_PASSWORD environment variable or link to a container named MYSQL."
  23. exit 1
  24. fi
  25. # env vars needed for aws tools
  26. export AWS_ACCESS_KEY_ID=$S3_ACCESS_KEY_ID
  27. export AWS_SECRET_ACCESS_KEY=$S3_SECRET_ACCESS_KEY
  28. export AWS_DEFAULT_REGION=$S3_REGION
  29. MYSQL_HOST_OPTS="-h $MYSQL_HOST -P $MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD"
  30. DUMP_START_TIME=$(date +"%Y-%m-%dT%H%M%SZ")
  31. copy_s3 () {
  32. SRC_FILE=$1
  33. DEST_FILE=$2
  34. if [ "${S3_ENDPOINT}" == "**None**" ]; then
  35. AWS_ARGS=""
  36. else
  37. AWS_ARGS="--endpoint-url ${S3_ENDPOINT}"
  38. fi
  39. echo "Uploading ${DEST_FILE} on S3..."
  40. cat $SRC_FILE | aws $AWS_ARGS s3 cp - s3://$S3_BUCKET/$S3_PREFIX/$DEST_FILE
  41. if [ $? != 0 ]; then
  42. >&2 echo "Error uploading ${DEST_FILE} on S3"
  43. fi
  44. rm $SRC_FILE
  45. }
  46. # Multi file: yes
  47. if [ ! -z "$(echo $MULTI_FILES | grep -i -E "(yes|true|1)")" ]; then
  48. if [ "${MYSQLDUMP_DATABASE}" == "--all-databases" ]; then
  49. DATABASES=`mysql $MYSQL_HOST_OPTS -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
  50. else
  51. DATABASES=$MYSQLDUMP_DATABASE
  52. fi
  53. for DB in $DATABASES; do
  54. echo "Creating individual dump of ${DB} from ${MYSQL_HOST}..."
  55. DUMP_FILE="/tmp/${DB}.sql.gz"
  56. mysqldump $MYSQL_HOST_OPTS $MYSQLDUMP_OPTIONS --databases $DB | gzip > $DUMP_FILE
  57. if [ $? == 0 ]; then
  58. S3_FILE="${DUMP_START_TIME}.${DB}.sql.gz"
  59. copy_s3 $DUMP_FILE $S3_FILE
  60. else
  61. >&2 echo "Error creating dump of ${DB}"
  62. fi
  63. done
  64. # Multi file: no
  65. else
  66. echo "Creating dump for ${MYSQLDUMP_DATABASE} from ${MYSQL_HOST}..."
  67. DUMP_FILE="/tmp/dump.sql.gz"
  68. mysqldump $MYSQL_HOST_OPTS $MYSQLDUMP_OPTIONS $MYSQLDUMP_DATABASE | gzip > $DUMP_FILE
  69. if [ $? == 0 ]; then
  70. S3_FILE="${DUMP_START_TIME}.dump.sql.gz"
  71. copy_s3 $DUMP_FILE $S3_FILE
  72. else
  73. >&2 echo "Error creating dump of all databases"
  74. fi
  75. fi
  76. echo "SQL backup finished"