증상발견

스키마를 정의하는 sql 을 작성하던 중에 테이블 생성 중에 다음과 같은 메시지와 함께 테이블 생성이 중단되는 문제가 발생했다.

... 로그 생략 ...
Error Code: 1071. Specified key was too long; max key length is 3072 bytes

발생원인

해결방안

  • 사용하고 있는 mysql 엔진의 종류에 따라 제한된 크기 이내로 컬럼의 크기를 조정해야 한다.


어느 스터디에서 개발환경 구축과 관련된 이런저런 이야기가 오고가는 것을 보다가, 문득 생각이 나서 다시 찾은 'OPENSFHIT'

https://www.openshift.com/

보는 것처럼, 개발, 호스팅, 스케일 확장의 기능을 제공하는 플랫폼이다. 익숙한, Java, Maven, Git, Tomcat, Jenkins를 제공하여 기어(Gear, 가상머신 인스턴스의 개념)로 제공한다. 협업자들을 추가하여 사용가능하다.


Free plan으로 사용

최초 'My app' 선택시

사용가능한 Gear(인스턴스 개념)

Tomcat7 기어 선택 예

Tomcat 기어 설치 후, 자바를 기반으로 한 웹애플리케이션 프로젝트가 추가된 git 저장소도 함께 추가됨

git에 대한 접근은 'Settings - Public Keys' 항목에 개인 public key를 생성하면 됨

- SSH public key 생성방법: https://help.github.com/articles/generating-ssh-keys

Tomcat7 기어 생성 완료후



Tomcat7 기어를 통해 생성한 프로젝트의 초기 디렉토리 구조

Tomcat7 기어가 실행된 URL을 통한 동작확인

- 기본 동작은 git을 통해 push가 실행되는 순간 빌드 및 배포가 이루어진다.

Tomcat7 기어 밑에 'Continous Integration' 에 있는 'Enable Jenkins'를 선택하면 Tomcat7 기어에 대한 빌드잡(Job)을 가진 Jenkins 기어가 생성된다.

젠킨스 기어의 공개 URL을 정의한다.

젠킨스 기어가 생성되고 최초 계정 admin과 비밀번호가 노출된다.

젠킨스 기어에 추가된 'tomcat7ews-build' 작업





MySQL 5.5 카트리지를 tomcat7 기어에 추가하는 모습

추가 완료 후, MySQL 5.5 생성정보가 노출

생성된 URL과 계정을 통해 로그인한 phpMyAdmin

기어 사용이 완료된 tomcat7의 내부 모습

이 과정에서 나는 2개의 기어를 생성했다.

- Tomcat7

- Jenkins

아직 1개의 기어가 남아있다.

Free plan으로는 3개의 기어가 사용가능하다.

협업도 가능한데, [Application]을 선택한 화면에서 'Available in domain XXXXX' 를 선택하고

오른쪽에 있는 'No one else can see this domain. Add members...'에서  'Add members`를 선택하고

OpenShift에 가입해있는 사용자 id와 권한 [View, Edit, Administrator] 권한 중 하나를 할당하면 된다.

굿럭!

회사에서 업무를 위해 DB에 저장하는 기초데이터 중 우편번호와 관련된 데이터는 빅데이터가 아닐까? 입려된 데이터의 건수로는 대략 6백7만건에 달하는 양이라서, insert 쿼리의 용량만 2기가에 달하는 녀석이기도 하다. 그래서 몇일간 데이터를 넣고 빼고하면서 

조금 더 빠르게 넣을 수 있는 방법이 없을까?

하고 고민을 하다가 mysql big data fast import 의 키워드로 검색을 하다보니 mysqldump로 하는 게 좋다는 이야기가 나오고 있어서 한번 찾아봤다.

찾아서 해보니... 600만건의 자료를 추출하는데 대략 10분, 넣는데 6분 정도의 시간이 소요되었다. 오홍... +_+)


참고사이트 : http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

  • export 하기 : mysqldump 를 이용한 예

    • 데이터베이스 전체를 추출하는 경우
      mysqldump guestdb > guestdb.txt
    • 특정 테이블만 추출하는 경우
      mysqldump guestdb guestTbl > guestdb.txt
    • 특정 테이블에 대한 drop sql 을 추가하려는 경우
      mysqldump -p –user=username –add-drop-table guestdb guestTbl > guestTbl.txt
      Enter password: ********
  • import 하기

    • 데이터베이스 전체를 추출한 경우
      $ mysql -u username -p < guestdb.txt’
    • 특정데이터베이스의 테이블만 추출한 경우
      $ mysql -u username -p –database=guestdb < guestTbl.txt


  • 적용환경 : WindowsXP, Java 1.6 SDK 설치된 상태

     

Java에서 데이터베이스와 관련된 처리를 담당하기 위해 제공하는 표준 스펙으로서, 각 밴더사들은 이 스펙을 만족하는 JDBC 드라이버를 제공해야 한다.

각 밴더사(DBMS제조사)의 다운로드 페이지에서 제공하는 파일을 다운로드 받아보면, 그 압축파일 안에 JDBC를 사용하는 방법을 제공하고 있으므로, jar 파일만 받지 말고, 제공하는 JDBC 압축파일을 받는 것이 좋을 듯 하다.

 

각 밴더사들이 제공하는 JDBC 파일은 JDK/JRE/lib/ext 폴더에 넣어두면, 이클립스나 IDE 프로그램이 자동으로 인식하여 설치를 진행할 수 있다.

JavaExt.JPG

이하 페이지에서는 각각의 JDBC 를 이용하여 각각의 DB에 접속하는 방법을 기술하도록 하겠다.



이 글은 스프링노트에서 작성되었습니다.

+ Recent posts