mysql - 命令被 bash 错误解释

标签 mysql bash shell

我正在编写一个脚本,我计划在每天早上 1 点通过 cron 安排来备份 mySql 数据库。

通常我用它来转储数据库:

mysqldump --no-create-db --single-transaction myDB | gzip > ~/my_backup.sql.gz

在我的脑海中,我所写的应该是:

  • 转储数据库,将任何错误写入 database.err
  • 将输出通过管道传输到 gzip,然后将其压缩并写入磁盘
  • 读取返回码,假设成功将文件写入S3 bucket
  • 为了测试将当前状态写入 shell

#!/bin/bash

# This script will run each night to backup
# the mySql DB then will upload to Amazon S3

DB_NAME="myDB"

S3_BUCKET="my.s3.bucket"

BACKUP_PATH="~/backups/${DB_NAME}.sql.gz"

mysqldump --no-create-db --single-transaction ${DB_NAME} 2> database.err | gzip > ${BACKUP_PATH}
if [ "$?" -eq 0 ]
then
    echo "Database dump complted sucessuflly... wtiting to S3"
    aws s3 cp ${BACKUP_PATH} s3://${S3_BUCKET}/
    if [ "$?" -eq 0 ]
    then
        echo "Backup sucessfully written to S3"
    else
        echo "Error writing to S3"
    fi
else
    echo "Mysqldump encountered a problem look in database.err for information"
fi

脚本正在执行的操作是进入 mysqldump 行,但无法区分我指定 DB 的参数和 2>(我认为是文件描述符?)。这是错误:

./backup-script: line 12: ~/backups/myDB.sql.gz: No such file or directory
mysqldump: Got error: 1049: Unknown database 'myDB 2' when selecting the database
Mysqldump encountered a problem look in database.err for information

任何人都可以建议这里发生了什么/我做错了什么。

最佳答案

尝试把数据库名放在第一位

mysqldump "${DB_NAME}" --no-create-db --single-transaction 

关于mysql - 命令被 bash 错误解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45949411/

相关文章:

php - 在mysql中选择一个匹配id数组的数组并计算

bash - 通过 SSH 访问 codeship 上的 github repo

shell - 在ssh shell脚本中检查docker版本

linux - 如何在shell脚本中更改日期格式

linux - 如何使用 shell 脚本读取其中包含一些文本字符串的二进制文件?

java - 将@Transactional 与 JOOQ 一起使用

mysql - JPA 一对一映射 FetchType.LAZY 不起作用

php - 使用 PHP MySQL 从多个答案中选择正确答案?

linux - 脚本没有替换文件名的前缀

bash - 找出我必须在 Linux 系统上安装哪个包