이중화 실습을 하기 위해서는 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 : https://www.gurubee.net/lecture/2189
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.