为什么Liquibase在MySQL数据库上迁移后死于DC / OSlocking(与docker-compose一起工作正常)?

  • DC / OS 1.9.0
  • 马拉松1.4.2
  • LIQUIBASE 3.5.3

我实现了一个短暂的docker容器,它运行一个MySQL数据库的Liquibase迁移。 这个容器在开发过程中通过docker构成一直很好。 但是,我正试图在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表已成功创build,因此我知道它既访问数据库又创build表,但它只是死掉。

运行后,锁表看起来像:

 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的一个slave上安装所有的deps并在本地运行liquibase,也是可行的。

有没有更好的方法来debugging呢? 有没有人成功运行DCOS集群内的liquibase迁移?

请检查Mesos主日志。 我怀疑你遇到了一个OOM杀死任务。