Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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
cronjob问题中的docker exec和mysqldump_Mysql_Linux_Docker_Cron - Fatal编程技术网

cronjob问题中的docker exec和mysqldump

cronjob问题中的docker exec和mysqldump,mysql,linux,docker,cron,Mysql,Linux,Docker,Cron,当我在cronjob中使用docker exec和mysqldump时,我发现了一些问题 我想在容器中备份我的数据库,并尝试了这个方法,效果很好 sudo docker exec -it --user root lemp_mariadb mysqldump -uroot -pxxxxxxx iot >/home/backup/backup_data.gz 但是当我在crontab中使用它时,我得到了没有任何内容的文件输出,文件大小是0字节 024***docker exec-it--用

当我在cronjob中使用docker exec和mysqldump时,我发现了一些问题

我想在容器中备份我的数据库,并尝试了这个方法,效果很好

sudo docker exec -it --user root lemp_mariadb mysqldump -uroot -pxxxxxxx iot  >/home/backup/backup_data.gz
但是当我在crontab中使用它时,我得到了没有任何内容的文件输出,文件大小是0字节

024***docker exec-it--用户根lemp\u mariadb mysqldump-uroot-pxxxxxx iot>/home/backup/backup\u data.gz


我做错了什么?

当您手动运行该命令时,您包括了
sudo
,但当您在crontab中运行该命令时,您不是。除非您将其安装为
root
crontab,否则它将失败

请参阅此处有关如何将Docker设置为以非root用户身份运行的说明

此外,您正在使用
-it
选项,这需要一个交互终端,当从crontab运行时,该终端不可用。您需要删除这些参数

要获得有关失败的更多详细信息,可以使用
2>/path/To/file
将crontab命令中的错误重定向到一个文件以供检查

综上所述,您的crontab条目将如下所示:

0 24 * * * docker exec --user root lemp_mariadb mysqldump -uroot -pxxxxxxx iot  >/home/backup/backup_data.gz 2>/var/tmp/docker_msqldump_errors.log

杰森·皮科克的回答是对的 但我更愿意将dump命令移动到另一个shell脚本中:

vim /home/backup/backup.sh
在backup.sh中:

#!/bin/bash
echo 'Backing up db'
docker exec --user root lemp_mariadb /usr/bin/mysqldump -uroot -pxxxxxxx iot | gzip -9  > /home/backup/backup_data.sql.gz
然后在crontab中:

0 24 * * * /home/backup/backup.sh

更多的信息可能会很有帮助。我假设crontab是以root用户身份运行的?这看起来像是以下内容的重复:正在写入备份的位置,容器是否有权访问您尝试写入文件的位置,以及是否有正确的权限以用户/容器身份写入?很可能没有写入能力,因此您收到一个失败或您的命令不正确,导致0写入或进程死亡。(过程死亡可能性最小)
0 24 * * * /home/backup/backup.sh