如何在Heroku应用程序上运行mysqldump
我想每天转储生产数据库,以便存储在S3中。我已经创建了一个可以在本地正常工作的bash脚本,但在Heroku的postinstall上运行时,会收到以下错误消息:如何在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
/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这正是我想要的