2017-04-14 9 views
2
  • DC/OS 1.9.0
  • 마라톤 1.4.2
  • LIQUIBASE 3.5.3

나는 MySQL 데이터베이스에 대한 Liquibase 마이그레이션을 실행하는 단명 고정 표시기 컨테이너를 구현했습니다. 컨테이너는 도커 작성을 통해 개발 중 잘 작동합니다. 그러나 생산을 준비하기 위해이 컨테이너를 DCOS 클러스터 내에 구현하려고합니다.DC/OS에서 잠금을 획득 한 후 MySQL 데이터베이스에서 Liquibase 마이그레이션이 중단되는 이유는 무엇입니까?

Liquibase가 실행되면 잠금을 성공적으로 획득 한 다음 죽게됩니다. DATABASECHANGELOGLOCK 테이블이 성공적으로 생성

DEBUG 4/14/17 8:06 PM: liquibase: Connected to [email protected]@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+"[email protected]"} 

그래서 나는 그것이 모두 데이터베이스에 액세스하고 테이블을 만드는 알고 있지만 그냥 죽으면, 다음은 실행의 출력입니다.

:이 명령 liquibase 강타 파일이 실행이

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 

입니다 : 여기

MySQL [myapp]> select * from DATABASECHANGELOGLOCK; 
+----+--------+-------------+----------+ 
| ID | LOCKED | LOCKGRANTED | LOCKEDBY | 
+----+--------+-------------+----------+ 
| 1 |  | NULL  | NULL  | 
+----+--------+-------------+----------+ 

이 실행되는 명령입니다 : 같은

은 실행 후, 잠금 테이블은 보인다

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 

내가 말했듯이,이 컨테이너는 도커 작성으로 로컬에서 잘 작동하며, dcos 노예 중 하나에있는 모든 deps가 로컬에서 liquibase를 실행합니다.

더 나은 디버깅 방법이 있습니까? DCOS 클러스터 내에서 누군가가 성공적으로 liquibase 마이그레이션을 실행 했습니까?

+3

앱 정의도 표시해야합니다. 또한 메소 로그를 확인하십시오. 나는 당신이 너무 적은 기억을 지정한 것으로 의심하고, 컨테이너 OOMs – Tobi

+1

@ 토비 당신은 나의 영웅입니다. 나는 OOM 이슈에 대해 생각해 본 적이 없었는데, 128MB에서이 문제를 해결했습니다. 정말 고마워! 답변으로 제출해 주시면 고맙겠습니다. – rjbez

+0

OOM을 어디에서 찾을 수 있습니까? 로그의 위치는 무엇입니까? 오류와 라인을 공유하는 마음? 나는 고맙겠습니다. –

답변

1

메소 스 마스터 로그를 확인하십시오. 나는 당신이 그 일에 대한 OOM의 죽임을 당하고 있다고 생각합니다.