본문 바로가기

시스템/DB

H2 DB 기본 설정


기본 설정 파일

~/.h2.server.properties

C:\Users\id\.h2.server.properties


* 윈도우의 경우 서비스로 돌리는 경우 서비스에 계정을 연결해 주어야 해당 계정의 홈폴더 접근이 가능하다.



# 관리포트 설정 : 기본포트는 8082, 원하는 경우 해당 포트로 변경

webAllowOthers=true

webPort=8082

tcpPort=9092

tcpAllowOthers=true

webSSL=false



# 접속 url 정의 : 특수문자 콜론(:) 이 있으므로, 해당 문자 앞에서 역슬래시(\) 

# 아래처럼 지정해 두면 브라우저에 접속시 아래 항목을 선택할 수 있도록 해준다.

0=Generic H2 (Embedded)|org.h2.Driver|jdbc\:h2\:~/test|sa

1=Generic H2 (Server)|org.h2.Driver|jdbc\:h2\:tcp\://127.0.0.1:9092/~/db


JDBC URL 

Embedded> jdbc:h2:~/test

Server > jdbc:h2:tcp://ip:port/~/test


설정파일을 사용하지 않고, h2 실행시 관련 포트를 설정할 수 있다.




콘솔에서 서버 실행

설정파일 없이 콘솔에서 실행 시 해당 인자를 추가할 수 있다.


$ java -cp h2-{version}.jar org.h2.tools.Server -?

$ java -cp h2-{version}.jar org.h2.tools.Server 

-tcp 

-tcpPort 9000 

-tcpAllowOthers 

-web 

-webPort 8082 

-webAllowOthers

-baseDir /opt/h2/db/


서버가 실행되면 브라우저로 http://localhost:8082 접속할 수 있으며, 설정 및 db 쿼리가 가능하다.

초기에는 sa 비밀번호가 설정되어 있지 않으므로, jdbc url 설정 후 브라우저에서 H2콘솔에 접속하면, baseDir 위치에 기본 데이터베이스가 생성된다.




사용자 설정

기본 계정은 sa 에 비밀번호가 없으므로, db 쿼리를 통해 해당 정보를 변경한다.



ALTER USER sa RENAME TO user

ALTER USER user SET PASSWORD 'password'

ALTER USER user ADMIN TRUE

CREATE USER IF NOT EXISTS user PASSWORD "password" 

DROP USER IF EXISTS user



* 윈도우에서 서버 모드 사용시 방화벽에 포트 개방~

* centos 방화벽

$ firewall-cmd --zone=public --add-port=9092/tcp




백업

백업 스크립트 생성

java -cp h2*.jar org.h2.tools.Script

-url "jdbc:h2:tcp://ip:port/db"

-user sa

-password *****

-script "/home/user/backup.sql"


백업 스크립트 실행

java -cp h2*.jar org.h2.toolsRunScript 

-url "jdbc:h2:tcp://ip:port/db" 

-user sa 

-password ***** 

-script "/home/user/backup.sql"




클러스터링

데이터 베이스가 존재하는 경우 source 시스템에서 실행 클러스터링 설정을 진행한다.


서버1과 서버2 실행 후 클러스터를 생성한다.

target 시스템에 db가 존재하는 경우 삭제됨.  

클러스터 운영중 프로세스가 죽은 경우 죽은 동안 발생된 데이터 변화를 반영하기 위해 

다시 클러스터링을 생성해 주어야 한다.(자동으로 싱크 처리는 안되는 듯...)


 

java -cp h2*.jar org.h2.tools.CreateCluster 

-urlSource "jdbc:h2:tcp://ip-1:port/~/db/db-name" 

-urlTarget "jdbc:h2:tcp://ip-2:port/~/db/db-name" 

-user "sa" 

-password "****" 

-serverList "ip-1:port\,ip-2:port"



확인

브라우저로 H2 콘솔 접속 후 아래 쿼리 실행. 클러스터링 시스템1,시스템2 등록여부 확인

select * from INFORMATION_SCHEMA_SETTINGS WHERE NAME='CLUSTER'



'시스템 > DB' 카테고리의 다른 글

mysql 테이블 복사(dump), 복원  (0) 2017.04.20
mysql 접근 ip 추가  (0) 2017.02.20
MySQL Slow Log  (0) 2017.02.13
mysql 클러스터 구성  (0) 2017.02.05