Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Heroku应用程序上运行mysqldump_Mysql_Heroku_Cleardb - Fatal编程技术网

如何在Heroku应用程序上运行mysqldump

如何在Heroku应用程序上运行mysqldump,mysql,heroku,cleardb,Mysql,Heroku,Cleardb,我想每天转储生产数据库,以便存储在S3中。我已经创建了一个可以在本地正常工作的bash脚本,但在Heroku的postinstall上运行时,会收到以下错误消息: /run-backup.sh:line 21:mysqldump:未找到命令 当它尝试运行以下行时: mysqldump-u$CLEARDB\u USER\u NAME-h$CLEARDB\u SERVER\u IP-p$CLEARDB\u PASSWORD--databases$DATABASE | gzip-c>“/tmp/db

我想每天转储生产数据库,以便存储在S3中。我已经创建了一个可以在本地正常工作的bash脚本,但在Heroku的postinstall上运行时,会收到以下错误消息:

/run-backup.sh:line 21:mysqldump:未找到命令

当它尝试运行以下行时:

mysqldump-u$CLEARDB\u USER\u NAME-h$CLEARDB\u SERVER\u IP-p$CLEARDB\u PASSWORD--databases$DATABASE | gzip-c>“/tmp/db backups/$BACKUP\u FILE\u NAME.gz”

所以脚本工作正常,但Heroku无法运行它。我不知道从这里到哪里去

以下是完整的脚本:

#!/bin/bash
echo "Beginning database backup"

#install aws-cli
curl https://s3.amazonaws.com/aws-cli/awscli-bundle.zip -o awscli-bundle.zip
unzip awscli-bundle.zip
chmod +x ./awscli-bundle/install
./awscli-bundle/install -i /tmp/aws

# new backup file name
BACKUP_FILE_NAME="$(date +"%Y-%m-%d-%H-%M")-$APP-$DATABASE.sql"

# if directory '/tmp/db-backups' doesn't exist, create it
if [ ! -d "/tmp/db-backups" ]; then
  mkdir -p /tmp/db-backups/
fi

# dump the current DB into /tmp/db-backups/<new-file-name>
mysqldump -u $CLEARDB_USER_NAME -h $CLEARDB_SERVER_IP -p$CLEARDB_PASSWORD --databases $DATABASE | gzip -c > "/tmp/db-backups/$BACKUP_FILE_NAME.gz"

# using the aws cli, copy the new backup to our s3 bucket
/tmp/aws/bin/aws s3 cp /tmp/db-backups/$BACKUP_FILE_NAME.gz s3://$S3_BUCKET_PATH/$DATABASE/$BACKUP_FILE_NAME.gz --region $AWS_DEFAULT_REGION

echo "backup $BACKUP_FILE_NAME.gz complete"
#/bin/bash
echo“开始数据库备份”
#安装aws cli
卷曲https://s3.amazonaws.com/aws-cli/awscli-bundle.zip -o awscli-bundle.zip
解压缩awscli-bundle.zip
chmod+x./awscli捆绑/安装
/awscli捆绑/安装-i/tmp/aws
#新备份文件名
备份文件\u NAME=“$(日期+%Y-%m-%d-%H-%m”)-$APP-$DATABASE.sql”
#如果目录“/tmp/db backups”不存在,请创建它
如果[!-d”/tmp/db备份“];然后
mkdir-p/tmp/db备份/
fi
#将当前数据库转储到/tmp/DB备份中/
mysqldump-u$CLEARDB_USER_NAME-h$CLEARDB_SERVER_IP-p$CLEARDB_PASSWORD--databases$DATABASE | gzip-c>“/tmp/db backups/$BACKUP_FILE_NAME.gz”
#使用aws cli,将新备份复制到我们的s3存储桶
/tmp/aws/bin/aws s3 cp/tmp/db backups/$BACKUP\u FILE\u NAME.gz s3://$s3\u BUCKET\u PATH/$DATABASE/$BACKUP\u FILE\u NAME.gz--region$aws\u DEFAULT\u region
echo“backup$backup\u FILE\u NAME.gz complete”

heroku没有
mysqldump
程序,因此它无法执行此脚本尝试使用buildpack,首先必须安装它
heroku buildpack:addhttps://github.com/gaumire/heroku-buildpack-mysql
非常感谢@djsmentya这正是我想要的