繁体   English   中英

在脚本中运行时,mysqldump不会转储所有内容

[英]mysqldump does not dump everything when running in script

我有一个运行在名为dockersql容器中的mysql服务器。 要备份它,我用

docker run -ti --rm --link dockersql:mysql -v $HOME/backups/20160202/:/hostbackup mysql /bin/bash -c "mysqldump -u user -p -h mysql database > /hostbackup/mysqldump.sql"

这很好。 我在执行其他操作的shell备份脚本中包含了同一行。 运行备份脚本时,我的用户表只得到了部分转储。 当我仅在终端中直接运行docker run命令时,我确实获得了users表的完整备份。

这是我的脚本的完整副本:

#!/bin/bash                                                                                                                                                                                                    


function usage
{
 echo "dockerBackup.sh [OPTIONS] <target directory>"
 echo "    full backup of currently running environment"
 echo "  OPTIONS"
 echo "    -n prefix : will use prefix in front of data container names"
 echo "    -h : help"

}



###################################                                                                                                                                                                            
#      Main Script Execution      #                                                                                                                                                                            
###################################                                                                                                                                                                            


# prefix to be used for naming containers                                                                                                                                                                      
prefix=''

# Option analysis                                                                                                                                                                                              
while getopts 'hn:' flag; do
  case "${flag}" in
    h)  usage ;
          exit 0;;
    n) prefix="${OPTARG}""_" ;
       argindex=$(($argindex+2));;
     *)
        error "Unexpected option ${flag}"
        usage
        ;;
  esac
done


echo "arguments total : $# argindex : $argindex"

if [ $(($#-1)) -ne $argindex ];then
    echo "Invalid argument number $#"
    usage
    exit 1

else

backupdir=${!#}
echo "backuping to $backupdir directory"

echo "backuping mysql database"
docker run -ti --rm --link "$prefix"dockersql:mysql -v "$backupdir":/hostbackup mysql /bin/bash -c "mysqldump -u user -p -h mysql database > /hostbackup/mysqldump.sql"

 #Other backup actions

fi

不好的问题,以前的研究不好
无论在脚本还是直接命令行中,Mysqldump都可以正常工作

在另一个容器中的某个地方,还有一个应清除的名为mysqldump.sql的旧文件,该脚本在#Other backup actions部分中我的问题中跳过的#Other backup actions之一也正在备份和擦除由mysql docker run创建的文件命令。

对不起,您所花费和失去的任何时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM