为什么MySQL数据库上的Liquibase迁移在获得DC/OS上的锁(与docker compose配合良好)后死亡? DC/OS 1.9.0 马拉松1.4.2 液化酶3.5.3

为什么MySQL数据库上的Liquibase迁移在获得DC/OS上的锁(与docker compose配合良好)后死亡? DC/OS 1.9.0 马拉松1.4.2 液化酶3.5.3,docker,liquibase,dcos,Docker,Liquibase,Dcos,我实现了一个短期的docker容器,它对mysql数据库运行Liquibase迁移。通过docker compose,该容器在开发过程中一直工作良好。然而,我正试图在DCOS集群中实现这个容器,为生产做准备 当Liquibase运行时,它成功地获得了一个锁,然后就死掉了。以下是运行的输出: DEBUG 4/14/17 8:06 PM: liquibase: Connected to root@10.0.1.113@jdbc:mysql://test-db.marathon.l4lb.thisdc

我实现了一个短期的docker容器,它对mysql数据库运行Liquibase迁移。通过docker compose,该容器在开发过程中一直工作良好。然而,我正试图在DCOS集群中实现这个容器,为生产做准备

当Liquibase运行时,它成功地获得了一个锁,然后就死掉了。以下是运行的输出:

DEBUG 4/14/17 8:06 PM: liquibase: Connected to root@10.0.1.113@jdbc:mysql://test-db.marathon.l4lb.thisdcos.directory/myapp
DEBUG 4/14/17 8:06 PM: liquibase: Setting auto commit to false from true
DEBUG 4/14/17 8:06 PM: liquibase: Executing QUERY database command: select count(*) from myapp.DATABASECHANGELOGLOCK
DEBUG 4/14/17 8:06 PM: liquibase: Executing QUERY database command: select count(*) from myapp.DATABASECHANGELOGLOCK
INFO 4/14/17 8:06 PM: liquibase: Successfully acquired change log lock
/usr/local/bin/liquibase: line 56:   295 Killed                  java -cp "$CP" $JAVA_OPTS liquibase.integration.commandline.Main ${1+"$@"}
DATABASECHANGELOGLOCK
表已成功创建,因此我知道它正在访问数据库和创建表,但它刚刚死掉

运行后,锁表如下所示:

MySQL [myapp]> select * from DATABASECHANGELOGLOCK;
+----+--------+-------------+----------+
| ID | LOCKED | LOCKGRANTED | LOCKEDBY |
+----+--------+-------------+----------+
|  1 |        | NULL        | NULL     |
+----+--------+-------------+----------+
以下是正在运行的命令:

liquibase --changeLogFile=base_change_log.xml --driver=com.mysql.jdbc.Driver --url=jdbc:mysql://test-db.marathon.l4lb.thisdcos.directory/myapp --contexts=production --username=root --password=****** --classpath=/opt/jdbc_drivers/mysql-connector-java-5.1.40-bin.jar --logLevel=debug update
这是liquibase bash文件运行的命令:

java -cp .:/opt/liquibase/liquibase.jar:/opt/liquibase/lib/snakeyaml-1.17.jar liquibase.integration.commandline.Main --changeLogFile=base_change_log.xml --driver=com.mysql.jdbc.Driver --url=jdbc:mysql://test-db.marathon.l4lb.thisdcos.directory/myapp --contexts=production --username=root --password=****** --classpath=/opt/jdbc_drivers/mysql-connector-java-5.1.40-bin.jar --logLevel=debug update
正如我所说的,这个容器在docker compose本地运行良好,如果我在一个dcos从属服务器上安装所有DEP并在本地运行liquibase,它也可以工作


有没有更好的调试方法?是否有人在DCOS群集中成功运行liquibase迁移?

请检查Mesos主日志。我怀疑你在这项任务中遇到了麻烦

您还应该显示应用程序定义。另外,检查Mesos日志。我怀疑您指定的内存太少,容器OOMs@Tobi你是我的英雄。我从未想过OOM问题,将其从128MB提高到128MB就成功了。非常感谢!请随意将此作为答案提交,我会标记它。您在哪里找到OOM的?日志的位置是什么?介意和那个错误的人分享这一行吗?谢谢。通常你可以在Mesos主日志中找到OOM消息