이중화 실습을 하기 위해서는 ALTIBASE HDB를 두 개 이상 설치해야 합니다. 하나의 서버에 OS 계정을 다르게 하여 두 개 이상의 ALTIBASE HDB를 설치할 수 있습니다. 이번 실습에서 server1과 server2의 정보는 다음과 같이 가정하고 진행합니다.
Server 1 - OS 계정: altibase - IP: 192.168.2.26 - REPLICATION_PORT_NO=21300 Server 2: - OS 계정: hdb - IP: 192.168.1.35 - REPLICATION_PORT_NO=31300
Shell(Server 1)> SERVER RESTART (변경한 프로퍼티 적용을 위해 DB 재구동) Shell(Server 2)> SERVER RESTART (변경한 프로퍼티 적용을 위해 DB 재구동)
iSQL(Server 1)> CREATE TABLE test1 ( c1 INTEGER PRIMARY KEY, c2 CHAR(10) ) ; iSQL(Server 1)> CREATE TABLE test2 ( c1 INTEGER PRIMARY KEY, c2 VARCHAR(10) ) ; iSQL(Server 2)> CREATE TABLE test1 ( c1 INTEGER PRIMARY KEY, c2 CHAR(10) ) ; iSQL(Server 2)> CREATE TABLE test2 ( c1 INTEGER PRIMARY KEY, c2 VARCHAR(10) ) ;
iSQL(Server 1)> CREATE REPLICATION rep WITH ‘ 192.168.1.35’ , 31300 2 FROM sys.test1 TO sys.test1 , FROM sys.test2 TO sys.test2 ; iSQL(Server 2)> CREATE REPLICATION rep WITH ‘ 192.168.2.26’ , 21300 2 FROM sys.test1 TO sys.test1 , FROM sys.test2 TO sys.test2 ;
iSQL(Server 1)> INSERT INTO test1 VALUES (1, ‘aaa’) ; iSQL(Server 1)> INSERT INTO test1 VALUES (2, ‘bbb’) ; … iSQL(Server 1)> INSERT INTO test1 VALUES (10, ‘jjj’) ;
iSQL(Server 1)> ALTER REPLICATION rep SYNC ;
iSQL(Server 2)> SELECT COUNT(*) FROM test1 ; COUNT ------------------ 10 1 row selected.
iSQL(Server 2)> ALTER REPLICATION rep START;
이제 server 1, server 2 에서 모두 이중화를 시작했기 때문에 어느 쪽에서 변경이 발생을 하든지 다른 쪽 서버에 반영이 됩니다.
iSQL(Server 1)> DELETE FROM test1; iSQL(Server 1)> INSERT INTO test1 VALUES (1, ‘test’) ; iSQL(Server 2)> SELECT * FROM test1 ; C1 C2 --------------------- 1 test 1 row selected.
iSQL(Server 2)> INSERT INTO test1 (2, ‘test’) ; iSQL(Server 1)> SELECT * FROM test1 ; C1 C2 --------------------- 1 test 2 test 2 rows selected. iSQL(Server 2)> DELETE FROM test1; iSQL(Server 1)> SELECT * FROM test1 ; C1 C2 --------------------- No row selected.
Server 2를 종료 한 후에, server 1에만 데이터를 INSERT 하면, server 1과 server 2의 데이터 차이가 발생하게 됩니다. 이 때, server 2를 재구동하면 DB가 데이터를 자동으로 동기화 시켜주는 알아보도록 하겠습니다.
shell(Server 2)> SERVER STOP
iSQL(Server 1)> CREATE OR REPLACE PROCEDURE ins AS 2 v1 INTEGER ; 3 BEGIN 4 FOR v1 IN 1 .. 1000 LOOP 5 INSERT INTO test1 VALUES ( v1, v1); 6 END LOOP; 7 END; 8 / iSQL(Server 1)> EXEC ins; test 1에 1000 건의 데이터가 INSERT됨 iSQL(Server 1)> SELECT COUNT(*) FROM test1 ; COUNT ------------------ 1000 1 row selected.
shell(Server 2)> SERVER START iSQL(Server 2)> SELECT COUNT(*) FROM test1 ; COUNT ------------------ 1000 1 row selected.
- 강좌 URL : http://www.gurubee.net/lecture/2189
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.