为什么我的MySQL导入失败w/Ansible?

为什么我的MySQL导入失败w/Ansible?,ansible,ansible-2.x,Ansible,Ansible 2.x,我有一个剧本,需要从上游刷新数据库。它正在删除现有数据库,重新创建它,下载最新的生产备份(以.sql.gz格式)并尝试导入它。在最后一步中,我得到以下信息: 任务[部署:数据库|从上游数据加载数据库]**************** 致命:[54_236_190_225]:失败!=>{“更改”:false,“失败”:true,“msg”:“\ngzip:stdout:breaked pipe\n”} 任务: - name: Database | Load the database from up

我有一个剧本,需要从上游刷新数据库。它正在删除现有数据库,重新创建它,下载最新的生产备份(以
.sql.gz
格式)并尝试导入它。在最后一步中,我得到以下信息:

任务[部署:数据库|从上游数据加载数据库]**************** 致命:[54_236_190_225]:失败!=>{“更改”:false,“失败”:true,“msg”:“\ngzip:stdout:breaked pipe\n”}

任务:

- name: Database | Load the database from upstream data
  mysql_db:
    state: import
    target: /tmp/catalog-3-19-16.sql.gz
    login_host: "{{ mysql_host }}"
    login_port: "{{ mysql_port }}"
    login_user: "root"
    login_password: "{{ mysql_root_password }}"
    name: "{{ mysql_db }}"
服务器上存在
/tmp/catalog-3-19-16.sql.gz
文件


我缺少什么?

请确保您可以使用凭据通过终端登录,注意我使用的是默认端口和本地主机

 - name: Importing data
   mysql_db:
     name: "{{ db_name }}"
     login_user: root
     login_host: localhost
     login_password: "{{ mysql_root_password }}"
     config_file: no
     state: import
     target: /tmp/catalog-3-19-16.sql.gz

嗨,你的剧本太完美了。 如果您在db中手动导入数据,然后尝试使用ansible进行检查,则会失败。
尝试先删除数据库,然后创建数据库并运行导入任务playbook,它将完美运行

“断管”消息意味着mysql无法读取输入。两个选择1)gunzip-c | mysql如果模块2中的一种bug能够正常工作,那么shell就不能正常工作,因为您的转储文件有问题。好吧,它可以从命令行工作,所以……呃。如果我理解正确,会有更改。也许你应该更新ansible。请尝试在提取文件之前或使用bzip2:archives
。bz2
还要查看ssh超时-这可能导致管道破裂,请在ssh配置中检查您的
ServerAliveInterval