KR101662212B1 - 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 - Google Patents
부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 Download PDFInfo
- Publication number
- KR101662212B1 KR101662212B1 KR1020140066514A KR20140066514A KR101662212B1 KR 101662212 B1 KR101662212 B1 KR 101662212B1 KR 1020140066514 A KR1020140066514 A KR 1020140066514A KR 20140066514 A KR20140066514 A KR 20140066514A KR 101662212 B1 KR101662212 B1 KR 101662212B1
- Authority
- KR
- South Korea
- Prior art keywords
- node
- log
- page
- active node
- active
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2048—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서는 액티브 노드와 스탠바이 노드 간에 로그 동기화를 수행하고, 액티브 노드와 스탠바이 노드 간에 마지막 동기화가 이루어진 시점을 검출한다. 그 후, 검출된 마지막 동기화 시점부터 액티브 노드에 장애가 발생한 지점까지 페이지 싱크를 수행한 후, 스탠바이노드로부터 상기 마지막 동기화 시점 이후부터 액티브 노드가 복원될때까지 발생시킨 로그를 수신하여 부분 로그 동기화를 수행한다.
Description
본 발명은 데이터베이스 관리 시스템에서 데이터 복제 및 동기화에 관한 것이다.
데이터베이스 관리 시스템(DBMS)은 다양한 IT 응용 서비스를 제공하기 위한 기반이 되는 소프트웨어로서 다양한 장애 상황에서도 지속적인 데이터 서비스를 제공하기 위해 고가용성을 갖추어야한다. 그러므로, 데이터베이스 관리 시스템은 기본 기능인 안정성을 보강하고 고가용성의 서비스를 제공하기 위한 방법으로, 액티브 노드와 스탠바이 노드로 이중화시키는 등의 데이터베이스 이중화 기능을 제공하고 있다.
데이터베이스 이중화란, 액티브 노드(주 서버) 외에 스탠바이 노드(대기 서버)를 두어, 액티브 노드에 장애가 발생하면, 스탠바이 노드에서 트랜잭션 서비스를 수행하여 가용성을 확보하는 것으로, 일반적으로, 액티브 노드에서 발생한 트랜잭션의 로그를 스탠바이 노드로 전송하여 스탠바이 노드에서 액티브 노드의 트랜잭션을 재연하여 동일하게 데이터를 변경하는 것이다.
두 개의 다른 데이터베이스를 동기화 시키는 방법의 일 예로는 액티브 노드의 데이터 파일을 스탠바이 노드로 복사를 한다. 이 후, 액티브 노드의 데이터 파일에 변경이 발생한 경우, 스탠바이 노드로 데이터 파일에 변경이 발생되었음을 알린 후, 변경된 내용을 반영하는 방법이 이용되었다.
그러나, 이러한 방식으로 데이터베이스를 복제할 경우 액티브 노드의 데이터 파일과 스탠바이 노드의 데이터 파일이 실시간으로 동기화될 수 없는 문제점이 발생한다.
또한, 액티브 노드의 데이터 파일에 변경이 발생한 경우, 변경된 데이터 파일을 스탠바이 노드로 복사하고, 변경된 내용을 반영시키기 위해 큰 비용이 발생하는 문제점이 있다.
본 발명의 바람직한 일 실시예에서는 부분 동기화(Partial Sync) 방식을 이용하여 액티브 노드 및 스탠바이 노드를 동기화 하고자 한다.
본 발명의 바람직한 일 실시예에서 개시하는 부분 동기화(Partial Sync)방식은 페이지 싱크(Page Sync)와 로그 싱크(Log Sync)를 순차적으로 수행한다. 이러한 동기 방식을 이용하여 물리적 복제를 진행하고 있는 복수개의 DBMS 사이에서 장애(Failover)가 발생한 경우에도 적은 비용으로 데이터를 동기화하고자 한다.
본 발명의 바람직한 일 실시예에서는 부분 동기화(Partial Sync)을 이용하여 물리적 복제를 진행하고 있는 복수개의 DBMS 사이에서 장애(Failover)가 발생한 경우에도, 사용자에게 끊김없는 DBMS를 서비스를 제공하고자 한다.
본 발명의 바람직한 일 실시예로서 부분동기화 지원 데이터베이스 관리 시스템은 비동기적으로 제 1 노드에서 제 2 노드로 로그를 전송하고, 상기 제2노드에서 수신한 로그에 대해 내부적으로 리두(Redo)를 수행하는 로그싱크부; 상기 제 1 노드의 갭(GAP) 구간에서 수행된 로그 오퍼레이션을 체크하여, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 단위로 상기 제 2 노드로부터 대응되는 페이지를 수신하여 덮어쓰는 페이지싱크부; 및 상기 제 2 노드에서 상기 제 1 노드와 상기 제 2 노드 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점부터, 상기 제 1 노드의 장애가 복원된 시점까지 발생시킨 로그 데이터를 상기 제 1 노드로 전송하는 부분로그동기화부;를 포함하고, 이 경우 상기 갭(GAP)구간은 상기 제 1 노드에서 장애가 발생하기 이전에, 상기 제 1 노드와 상기 제 2 노드 간에 마지막으로 동기가 이루어진 지점부터 상기 제1노드에서 상기 장애 발생 전 마지막 로그가 기록된 지점까지의 로그 구간인 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서, 부분동기화 지원 데이터베이스 관리 시스템은 액티브 노드에서 비동기적으로 로그를 스탠바이 노드로 전송하는 로그싱크부; 액티브 노드에 장애 발생시 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기화가 이루어진 지점을 검색하는 검색부; 상기 장애 발생시 상기 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후에 기록된 로그가 있는지 확인하는 로그확인부; 액티브 노드에서 상기 로그확인부에서 확인된 로그에 대해 수행된 로그 오퍼레이션을 체크하고, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP)구간의 불일치를 제거하는 페이지싱크부; 및 액티브 노드에서 장애가 복구되면, 상기 액티브 노드에 장애가 발생하여 상기 스탠바이 노드가 액티브 노드의 역할을 수행하면서 상기 마지막으로 동기화가 이루어진 지점 이후부터 상기 장애가 복구된 시점까지 수신한 로그를 수신하는 부분동기화부;를 포함하고, 이 경우 상기 갭(GAP)구간은 상기 액티브 노드에서 장애가 발생하기 이전에, 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기가 이루어진 지점부터 상기 액티브 노드에서 상기 장애 발생 전 마지막 로그가 기록된 지점까지의 로그 구간인 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서 부분동기화 지원 데이터베이스 관리 시스템은 클라이언트와 통신을 수행하며, 클라이언트의 요구사항을 처리하는 액티브 노드; 상기 액티브 노드와 통신을 통해 상기 액티브 노드의 데이터를 비동기적으로 백업받고, 상기 액티브 노드에 장애가 발생하면 트랜잭션 서비스를 상기 액티브 노드 대신 수행하는 스탠바이 노드; 상기 스탠바이 노드에 구현되고, 상기 액티브노드로 부터 로그를 비동기적으로 수신하여 리두(Redo)를 수행하는 로그싱크부; 상기 액티브 노드에 구현되고, GAP 구간에서 로그 오퍼레이션이 수행된 경우, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP)구간의 불일치를 제거하는 페이지 싱크부; 상기 액티브 노드에 구현되고, 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생한 후 다시 장애가 복귀된 지점까지 상기 스탠바이 노드에서 상기 액티브 노드를 대신하여 발생시킨 로그 데이터를 상기 액티브 노드에서 수신하는 부분로그동기화부;를 포함하고, 상기 갭(GAP)구간은 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생하기 이전 마지막으로 로그가 기록된 지점까지의 구간인 것을 특징으로 한다.
본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 로그를 부분동기화하는 방법은 로그싱크부에서 비동기적으로 제 1 노드에서 제 2 노드로 로그를 전송하고, 상기 제2노드에서 수신한 로그에 대해 내부적으로 리두(Redo)를 수행하는 단계; 페이지싱크부에서 상기 제 1 노드의 GAP 구간에서 수행된 로그 오퍼레이션을 체크하여, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP)구간의 불일치를 제거하는 단계; 및 부분로그동기화부에서 제 2 노드에서 상기 제 1 노드와 상기 제 2 노드 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점부터 상기 제 1 노드의 장애가 복구되는 시점까지 발생시킨 로그 데이터를 상기 제 1 노드로 전송하는 단계;를 포함하고, 이 경우 상기 갭(GAP)구간은 상기 제 1 노드와 상기 제 2 노드 간에 마지막으로 동기가 이루어진 지점부터 상기 제1노드에서 장애 발생 전 마지막 로그가 기록된 지점까지의 로그 구간인 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서, 데이터베이스 관리 시스템의 액티브노드에서 로그를 부분동기화하는 방법은 액티브 노드에서 비동기적으로 로그를 스탠바이 노드로 전송하는 단계; 검색부에서 액티브 노드에 장애 발생시 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기화가 이루어진 지점을 검색하는 단계; 로그확인부에서 상기 장애 발생시 상기 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후에 기록된 로그가 있는지 확인하는 단계; 액티브 노드에서 상기 로그확인부에서 확인된 로그에 대해 수행된 로그 오퍼레이션을 체크하고, 페이지싱크부를 통해 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP)구간의 불일치를 제거하는 단계; 및 상기 장애 복구시, 부분동기화부를 통해 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후부터 상기 스탠바이 노드가 상기 장애 복구 시점까지 액티브 노드의 역할을 수행하면서 클라이언트로부터 수신한 새로운 작업을 수행하면서 새롭게 생성되는 로그를 상기 스탠바이 노드로부터 수신하는 단계;를 포함하고, 이 경우 상기 갭(GAP)구간은 상기 액티브 노드에서 장애가 발생하기 이전에, 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기가 이루어진 지점부터 상기 액티브 노드에서 상기 장애 발생 전 마지막 로그가 기록된 지점까지의 로그 구간인 것을 특징으로 한다.
본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 로그를 부분동기화하는 방법에 있어서,로그싱크부에서 비동기적으로 제 1 노드에서 제 2 노드로 로그를 전송하고, 상기 제2노드에서 수신한 로그에 대해 내부적으로 리두(Redo)를 수행하는 단계; 페이지싱크부에서 상기 제 1 노드의 갭(GAP) 구간에서 수행된 로그 오퍼레이션을 체크하여, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 로그 오퍼레이션 수행 이전상태로 복구하는 단계; 및 부분로그동기화부에서 제 2 노드에서 상기 제 1 노드와 상기 제 2 노드 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점부터 상기 제 1 노드의 장애가 복구되는 시점까지 수신한 로그 데이터를 상기 제 1 노드로 전송하는 단계;를 포함하고, 이 경우 상기 갭(GAP)구간은 상기 제 1 노드와 상기 제 2 노드 간에 마지막으로 동기가 이루어진 지점부터 상기 제1노드에서 장애 발생 전 마지막 로그가 기록된 지점까지의 로그 구간인 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 로그를 부분동기화하는 방법으로서, 상기 데이터베이스 관리 시스템은 클라이언트와 통신을 수행하며, 클라이언트의 요구사항을 처리하는 액티브 노드; 및 상기 액티브 노드와 통신을 통해 상기 액티브 노드의 데이터를 비동기적으로 백업받고, 상기 액티브 노드에 장애가 발생하면 트랜잭션 서비스를 상기 액티브 노드 대신 수행하는 스탠바이 노드;를 포함하고, 상기 방법은 상기 스탠바이 노드에 구현된 로그싱크부에서 상기 액티브노드로 부터 로그를 비동기적으로 수신하여 리두(Redo)를 수행하는 단계; 상기 액티브 노드에 구현된 페이지 싱크부에서, 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 경우, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 상기 갭(GAP)구간의 불일치를 제거하는 단계로서, 상기 갭(GAP)구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 단위로 상기 제 2 노드로부터 대응되는 페이지를 수신하여 덮어쓰고, 상기 갭(GAP) 구간은 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생하기 이전 마지막으로 로그가 기록된 지점까지의 구간인, 복구 단계; 상기 액티브 노드에 구현된 부분로그동기화부에서, 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생한 후 다시 장애가 복귀된 지점까지 상기 스탠바이 노드에서 상기 액티브 노드를 대신하여 발생시킨 로그 데이터를 상기 액티브 노드에서 수신하는 단계;를 포함하는 것을 특징으로 한다.
본 발명의 바람직한 일 실시예에서 개시하는 부분 동기화(Partial Sync) 방식은 물리적 복제를 진행하고 있는 복수개의 DBMS 사이에서 장애(Failover)가 발생한 경우에도 적은 비용으로 데이터를 동기화하는 효과가 있다.
또한, 부분 동기화(Partial Sync) 방식을 이용하여 물리적 복제를 진행하고 있는 복수개의 DBMS 사이에서 장애(Failover)가 발생한 경우에도, 사용자에게 끊김없는 DBMS를 서비스를 제공하는 효과가 있다.
도 1 은 본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템의 이중화된 구성의 일 예를 도시한다.
도 2 는 본 발명의 바람직한 일 실시예로서, 액티브 노드 및 스탠바이 노드 간에 로그 싱크(log sync)가 수행되는 일 예를 도시한다.
도 3 는 도 2의 액티브 노드에 로그가 쌓여있는 상태에서, 액티브 노드에 장애(Failover)가 발생한 일 예를 도시한다.
도 4 는 스탠바이 노드로 동작하던 제 2 서버가 액티브 노드로 동작할 때의 시스템을 도시한다.
도 5 는 본 발명의 바람직한 일 실시예로서, 액티브 노드 및 스탠바이 노드 간에 부분동기화를 수행하는 일 예를 도시한다.
도 6 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 제 1 노드 및 제 2 노드의 내부 구성을 도시한다.
도 7 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템의 액티브 노드의 내부 구성도를 도시한다.
도 8 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드의 내부 구성도를 도시한다.
도 9는 본 발명의 바람직한 일 실시예로서, 도 6 의 시스템에서 부분 동기화를 수행하는 흐름도를 도시한다.
도 10은 본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드 간에 로그 부분동기화 흐름도를 도시한다.
도 2 는 본 발명의 바람직한 일 실시예로서, 액티브 노드 및 스탠바이 노드 간에 로그 싱크(log sync)가 수행되는 일 예를 도시한다.
도 3 는 도 2의 액티브 노드에 로그가 쌓여있는 상태에서, 액티브 노드에 장애(Failover)가 발생한 일 예를 도시한다.
도 4 는 스탠바이 노드로 동작하던 제 2 서버가 액티브 노드로 동작할 때의 시스템을 도시한다.
도 5 는 본 발명의 바람직한 일 실시예로서, 액티브 노드 및 스탠바이 노드 간에 부분동기화를 수행하는 일 예를 도시한다.
도 6 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 제 1 노드 및 제 2 노드의 내부 구성을 도시한다.
도 7 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템의 액티브 노드의 내부 구성도를 도시한다.
도 8 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드의 내부 구성도를 도시한다.
도 9는 본 발명의 바람직한 일 실시예로서, 도 6 의 시스템에서 부분 동기화를 수행하는 흐름도를 도시한다.
도 10은 본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드 간에 로그 부분동기화 흐름도를 도시한다.
이하의 내용은 단지 본 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 본 발명의 원리를 구현하고 본 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시예들은 원칙적으로, 본 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다.
또한, 본 발명의 원리, 관점 및 실시예들 뿐만 아니라 특정 실시예를 열거하는 모든 상세한 설명은 이러한 사항의 구조적 및 기능적 균등물을 포함하도록 의도되는 것으로 이해되어야 한다. 또한, 이러한 균등물들은 현재 공지된 균등물뿐만 아니라 장래에 개발될 균등물 즉 구조와 무관하게 동일한 기능을 수행하도록 발명된 모든 소자를 포함하는 것으로 이해되어야 한다.
따라서, 프로세서 또는 이와 유사한 개념으로 표시된 기능 블록을 포함하는 도면에 도시된 다양한 소자의 기능은 전용 하드웨어뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 능력을 가진 하드웨어의 사용으로 제공될 수 있다. 프로세서에 의해 제공될 때, 기능은 단일 전용 프로세서, 단일 공유 프로세서 또는 복수의 개별적 프로세서에 의해 제공될 수 있고, 이들 중 일부는 공유될 수 있다.
또한, 프로세서, 제어 또는 이와 유사한 개념으로 제시되는 용어의 사용은 소프트웨어를 실행할 능력을 가진 하드웨어를 배타적으로 인용하여 해석되어서는 아니 되고, 제한 없이 디지털 신호 프로세서(DSP) 하드웨어, 소프트웨어를 저장하기 위한 롬(ROM), 램(RAM) 및 비휘발성 메모리를 암시적으로 포함하는 것으로 이해되어야 한다. 주지 관용의 다른 하드웨어도 포함될 수 있다.
이하, 첨부된 도면을 참조하여 바람직한 실시예에 따른 본 발명을 상세히 설명하기로 한다.
도 1 은 본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템의 이중화된 구성의 일 예를 도시한다.
본 실시예에 따른 데이터베이스 관리 시스템은 액티브 노드(110) 및 스탠바이 노드(120)로 이중화되어 데이터베이스의 고가용성을 보장한다. 본 발명의 바람직한 일 실시예로서, 액티브 노드(110)와 스탠바이 노드(120)는 1:n 의 관계로 구현될 수 있다. 하나의 액티브 노드(100)에 복수의 스탠바이 노드(121, 122, 123)를 대응시킴으로써, 여러 개의 백업(backup) 서버를 구현할 수 있다.
본 발명의 바람직한 일 실시예로서, 액티브 노드(110)는 외부 클라이언트(100)와 통신을 수행하여, 외부 클라이언트(100)의 요구 사항을 처리하는 서버를 의미한다. 액티브 노드(110)는 평상시에 데이터베이스 관리 서비스를 수행하는 메인 서버로서, 로그 저장소 및 통신인터페이스 등을 구비하고, 외부 클라이언트(100)와 통신을 수행하여 외부 클라이언트의(100) 요구사항을 처리하도록 구현된다.
스탠바이 노드(120)는 외부 클라이언트(100)와 통신을 수행하지 않고, 액티브 노드(110)와 통신을 통하여 액티브 노드(110)의 데이터를 백업받는 서버를 의미한다.
스탠바이 노드(120)는 액티브 노드(110)에 장애(failover)가 발생한 경우 액티브 노드(110)의 데이터베이스 관리 서비스를 대신하여 수행하기 위한 대기 서버로 동작이 가능하다(도 3 참고).
도 2 은 본 발명의 바람직한 일 실시예로서, 액티브 노드(110) 및 스탠바이 노드(120) 간에 로그 싱크(log sync)(S210)가 수행되는 일 예를 도시한다. 설명의 편의를 위해 하나의 액티브 노드(110)와 하나의 스탠바이노드(120)를 가정한다. 또한 액티브 노드(110)와 스탠바이 노드(120)는 로그를 바탕으로 비동기적으로 데이터를 일치시키고 있는 것으로 가정한다.
* Log sync 과정
액티브 노드(110)와 스탠바이노드(120)를 포함하는 데이터베이스 관리 시스템(DBMS)은 데이터베이스의 안정성을 보장하기 위해 데이터 변경에 대한 로깅을 수행한다. 로깅(Logging)이란 발생하는 데이터의 삽입/삭제/변경을 디스크와 같이 안전한 저장 장치(stable storage)에 실시간으로 기록함으로써, 장애 발생시 이를 활용하여 최종의 데이터베이스 상태로 되돌리기 위한 DBMS의 기본 기능이다.
도 2 에서, 액티브 노드(110)는 클라이언트의 요구 사항을 처리하면서 발생하는 업데이트 로그(log)를 기록하고, 스탠바이 노드(120)에서는 액티브 노드(110)에서 기록한 업데이트 로그들을 전송받아 내부적으로 리두(Redo) 작업을 수행한다.
이 경우, 액티브 노드(110)는 업데이트 로그를 기록하고 접근하는 기능을 지원하며, 업데이트 로그에 빠른 접근을 수행할 수 있도록 로그 인덱스를 생성하고 관리한다.
스탠바이 노드(120)는 액티브 노드(100)로부터 수신한 업데이트 로그의 정보(S310)를 기록하고, 기록한 로그의 정보를 검색하고 변경하는 작업을 수행할 수 있도록 로그 인덱스를 생성하고 관리한다.
도 2에 도시된 로그 싱크(Log Sync)의 과정에서 액티브 노드(110)와 스탠바이 노드(120) 간에 로그 전송이 병목없이 잘 진행되는 경우도 있으나, 네트워크 상태가 원활하지 않거나 또는 액티브 노드(110)가 부하 상태인 경우 등은 액티브 노드(110)에서 스탠바이 노드(120)로 전송하지 못한 로그들이 쌓일 수 있다. 도 3 내지 4에서는 장애가 발생한 일 예를 도시한다.
도 3 는 도 2의 액티브 노드(110)에 로그가 쌓여있는 상태에서, 액티브 노드(110)에 장애(Failover)가 발생한 일 예를 도시한다.
제 1 서버(110)에 장애가 발생한 순간 클라이언트(100)는 제 2 서버(120)로 접속한다. 제 2 서버(120)는 제 1 서버(110)에 장애가 발생하면 스탠바이 노드로써의 역할을 중지하고, 액티브 노드로 동작하게 된다.
이 경우, 제 2 서버(120)는 제 1 서버(110)에 쌓여 전송받지 못한 업데이트 로그들은 무시한 채, 클라이언트(100)가 제 2 서버(120)에 접속한 순간부터 액티브 노드로 동작한다.
도 4 는 스탠바이 노드로 동작하던 제 2 서버(120)가 액티브 노드로 동작할 때의 시스템을 도시한다.
관리자는 장애가 발생한 경우 제 2 서버(120)를 액티브 노드로, 제 1 서버(110)를 스탠바이 서버로 동작시킨다. 클라이언트(100)의 요구사항은 제 2 서버(120)로 전달되어 처리되고, 제 2 서버(120)에서는 클라이언트(100)의 요구 사항 처리과정에서 발생한 업데이트 로그들을 제 2 서버(120)에 저장한 후, 스탠바이 서버로 동작하는 제 1 서버(110)로 업데이트 로그를 전송한다(S410). 제 1 서버(110)에서는 수신한 업데이트 로그들을 전송받아 내부적으로 리두(Redo) 작업을 수행한다.
도 3 내지 4의 과정에 도시된 바와 같이, 장애 발생으로 인하여 제 2 서버(120)의 역할이 스탠바이 노드에서 액티브 노드로 변경되는 경우, 장애가 발생하기 전에 제 1 서버(110)에서 제 2 서버(120)로 전송되지 못한 업데이트 로그 데이터들로 인하여 제 1 서버(110)의 로그와 제 2 서버(120)의 로그가 불일치하게 된다. 본 발명의 바람직한 일 실시예에서는, 페이지 싱크(Page Sync)작업을 통해 이러한 로그 갭(GAP)으로 인한 불일치를 제거한다.
도 5를 참고하면 다음과 같다.
최초에는 제 1 서버(110)가 액티브 노드로, 제 2 서버(120)가 스탠바이 노드로 구현된다. 이 후, 제 1 서버(110)는 장애가 발생하기 이전까지 시퀀스 넘버 140(S550)(Sequence Number, 이하 SN)을 지니는 로그까지 기록이 되었다.
그러나, 제 1 서버(110)의 시스템 성능이나 또는 네트워크 상황 등의 문제로, 제 1 서버(110)에 기록된 로그가 10개 정도가 제 2 서버(120)로 전달되고 있지 못한 상황이 발생할 수 있다.
이 경우, 제1 서버(110)에 장애가 발생하면, 제 2 서버(120)가 액티브노드로 역할이 변경된다.
즉, 제 1 서버(110)에서는 SN 140(S550)을 갖는 로그까지 기록된 상태이나, 제 2 서버(120)에서 SN 130(S520)을 갖는 로그까지만 전송을 받은 상태이다. 이 상황에서 장애가 발생한 경우, 제 2 서버(120)는 제 1 서버(110)와 최후 동기화가 이루어진 시점(S520)부터 액티브 노드로 동작을 수행한다. 이후, 장애가 복구되어 관리자가 제 1 서버(110)를 재가동할 시점에 제 2 서버(120)는 SN 210(S570)을 갖는 로그까지 기록을 수행한 상태이다.
장애 문제가 해결된 이후, 제 1 서버(110)를 재가동할 때, 제 1 서버(110)는 액티브노드로 동작하지 않고, 스탠바이노드의 역할로 구동된다. 본 발명의 바람직한 일 실시예에서는 장애 문제가 해결된 이후, 제 1 서버(110)가 스탠바이노드로 구동되는 과정에서 부분동기화가 진행된다. 본 발명의 바람직한 일 실시예에서 부분 동기화를 수행하기 위해, 페이지 싱크(Page Sync)와 로그 싱크(Log Sync)를 순차적으로 수행한다.
도 5 는 본 발명의 바람직한 일 실시예에서 제 1 서버(110)와 제 2 서버(120) 간의 동기화를 위해 페이지 싱크(Page Sync)를 수행하는 일 예를 도시한다.
페이지 싱크(Page Sync)를 수행하는 과정은 다음과 같다.
먼저, 제 1 서버(110)에서 마지막으로 동기가 수행된 지점(S520)부터 장애 발생전 마지막 로그가 기록된 지점(S550)까지의 로그에 해당하는 갭(GAP) 구간(S540)이 존재하는지 판단한다. 이 경우 스탠바이 노드로 구동되고 있는 제 1 서버(110)의 갭(GAP) 구간(S540)은 액티브 노드로 구동되고 있는 제 2 서버(120)의 갭(GAP) 구간(S540)과 일치가 되지 않는다.
따라서, 갭(GAP)구간(S540)이 존재하는 경우, 페이지 싱크(Page Sync)를 수행한다. 본 발명의 바람직한 일 실시예에서는 제 1 서버(110)의 갭(GAP)구간(S540)과 관련된 페이지들의 목록을 만들고, 해당 페이지들에 대응하는 페이지를 제 2 서버(120)로부터 수신하여 제 1 서버(110)의 페이지에 덮어쓴다.
제 1 서버(110)의 갭(GAP)구간(S540)에서 페이지 싱크(Page Sync)가 수행된 이후에는, 제 2 서버(120)는 마지막으로 동기가 수행된 지점(S520) 이후 SN 131(S530)부터 제 1 서버(110)가 장애가 복구되어 스탠바이 노드로 돌아오기 직전 시점 SN 210(S570)까지 제 2 서버에(120) 기록한 로그를 제 1 서버(110)로 전송한다(S560).
이 과정을 통해 장애가 발생한 제 1 서버(110)의 갭(GAP) 구간(S540)에 발생한 어떠한 변경사항도 무력화시킬 수 있다. 즉, 제 1 서버(110)의 갭(GAP)구간(S540)과 관련된 페이지 목록에 대응하는 최신페이지 목록을 제 2 서버(120)로부터 수신한 후, 제 2 서버(120)에서 새롭게 발생된 트랜잭션 로그를 순차적으로 수신하여 반영한다.
제 2 서버(120)로부터 수신하는 트랜잭션 로그는 단위 로그별로 어떤 페이지에 어떤 작업을 수행하였는지 기록되어 있다. 하나의 단위 로그는 하나의 페이지에 대한 작업만이 기록된다. 그리고, 각각의 페이지에는 해당 페이지에 가장 마지막으로 수행을 한 로그의 시퀀스 번호(SN)가 기록되어 있다.
따라서, 제 1 서버(110)에서는 단위 로그에 기록된 페이지를 검색해서 해당 페이지에 기록된 마지막 로그의 시퀀스번호(SN)와 해당 단위 로그의 시퀀스번호(SN)를 비교하여, 페이지에 기록된 마지막 로그의 시퀀스번호(SN)가 해당 로그의 시퀀스번호(SN)보다 같거나 큰 경우에는 해당 단위 로그 부분을 스킵(skip)하고 넘어갈 수 있다. 다시 말해, 최신 페이지를 이미 가져왔으므로, 기존의 변경사항을 추가로 반영할 필요가 없다. 그 외 최신페이지로 덮어쓰지 않은 페이지에 대해서는 트랜잭션 로그를 순차적으로 수신하여 반영한다.
본 발명의 바람직한 일 실시예로서, 갭(GAP) 구간(S540)에 수행된 로그 오퍼레이션이 삽입(insert), 삭제(delete), 업데이트(update)와 같은 페이지 변경을 발생시키는 로그 오퍼레이션인 경우에는 갭(GAP) 구간(S540) 내의 해당 로그 오퍼레이션이 수행된 페이지(들)의 목록을 만들어 페이지싱크시 이용한다. 반면, 선택(select)와 같은 DML 로그오퍼레이션인 경우는 별도의 처리를 수행하지 않는다.
도 5 에 도시된 환경에서, 아래와 같은 스키마를 갖는 테이블을 가정하자.
table table1(col1 int, col2 int)
시간의 경과에 따른 SN의 증가는 아래와 같다.
마지막으로 동기화가 이루어진 SN : 130(S520)
액티브 노드로 역할했던 제 1 서버(110)의 마지막 로그 : 140(S550)
Gap SN(S540): 131 ~140
● 액티브 서버인 제 1 서버(110)의 SN 130(S520)에서 아래 DML이 시행되었다고 가정한다. 이 때, 이 레코드는 Page 20 의 일부로 기록이 되었다고 가정한다.
insert into table1 (1, 1);
해당 페이지(Page 20)는 SN 120에 마지막으로 터치(touch)한 것으로 가정한다. 이 경우, 제 1서버(110)의 Page 20은 아래와 같이 표시할 수 있다.
DML 작업 수행전 페이지 내역 : [SN:120, Table1, ...]
DML 작업 수행후 페이지 내역 : [SN:130, Table1, Record(1,1), ...]
이상의 변경사항은 제 2 서버(120)의 Page20에도 그대로 반영된다.
● 액티브 서버인 제 1 서버(110)의 SN 131(S530)에서 아래 DML이 시행되었다고 가정한다.
update table1 set col2 = 7 where col1 = 1;
이때, 이 레코드는 Page 20 의 일부로 기록된다. 제 1 서버(110)의 Page 20은 아래와 같이 표시할 수 있다.
DML 작업 수행전 페이지 내역 : [SN:130, Table1, Record(1,1), ...]
DML 작업 수행후 페이지 내역 : [SN:131, Table1, Record(1,7), ...]
이상의 변경은 갭(GAP)구간(S540)에서 발생하였으므로, 제 2 서버(120)에는 반영되지 못했다.
● 스탠바이 서버로 동작하다가 액티브 서버로 변경되는 제 2 서버(120)에서 SN 137에서 아래 DML이 시행되었다고 가정한다.
update table1 set col2 = col2 + 5 where col1 = 1;
이때, 이 레코드는 Page 20 의 일부로 기록된다. 그러나, col2의 값은 제 1 서버(110)에서 수행했던 SN 131(S530)의 내용을 제 2 서버(120)에서는 알지 못하는 상황이므로, 이전 값인 1에 5를 더하여 최종적으로 6이 된다. 따라서, 제 2 서버(120)의 Page 20은 아래와 같이 표시할 수 있다.
DML 작업 수행전 페이지 내역 : [SN:130, Table1, Record(1,1), ...]
DML 작업 수행후 페이지 내역 : [SN:137, Table1, Record(1,6), ...]
이상과 같이, 제 1 서버(110)와 제 2 서버(120)의 Page 20에 대한 내역이 상이함을 알 수 있다. 이 후, 제 1 서버(110)에서 발생한 장애를 복원하는 과정에서 GAP 구간(S540) 중 SN 131(S530)에서 Page 20을 터치한 것을 이용하여, 제 2 서버(120)에서 Page 20을 수신하고, 이 후 제 2 서버(120)에서 SN 131(S530) 이후의 모든 로그를 가져와서 순차적으로 제 1 서버(110)에 반영한다. SN 137의 로그 도 제 2 서버(120)에서 로그를 수신하여 반영하는 과정에서 Page 20을 고치려고 할 때, 시퀀셜 넘버 SN을 비교하는데, 이미 SN이 137이라고 기록되어 있으므로 별도의 반영없이 스킵하도록 구현된다.
도 6 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 제 1 노드 및 제 2 노드의 내부 구성을 도시한다. 도 9는 도 6 과 같은 시스템에서 부분 동기화를 수행하는 흐름도를 도시한다.
이하에서 도 5, 6 및 9를 참고하여 데이터베이스 관리 시스템에서 부분 동기화를 설명하겠다.
도 6에 도시된 데이터베이스 관리 시스템에서는 로그싱크부(630)를 통해 로그 동기화를 수행하고(S910), 마지막 동기화 시점을 검출하여(S920) 페이지싱크부(640)를 통해 검출된 마지막 동기화 시점부터 액티브 노드에 장애가 발생한 지점까지 페이지 싱크를 수행한 후(S930), 부분로그동기화부(650)를 통해 동기화를 수행한다(S940). 도 5를 참고하여 함께 설명하면 다음과 같다.
데이터베이스 관리 시스템은 액티브 노드의 역할을 수행하는 제 1 노드(610)와 스탠바이 노드의 역할을 수행하는 제 2 노드(620)를 포함한다.
제 1 노드(610)는 로그싱크부(630), 페이지싱크부(640) 및 부분로그동기화부(650)를 포함한다. 제 2 노드(620)는 로그싱크부(630) 및 부분로그동기화부(650)를 포함한다.
제 1 노드(610)는 로그싱크부(630)를 통해 비동기적으로 제 2 노드(620)로 로그를 전송한다. 제 2 노드(620)의 로그싱크부(630)에서는 제 1 노드(610)로부터 수신한 로그에 대해 내부적으로 Redo를 수행하도록 구현된다.
도 5의 실시예를 참고하면, 제 1 노드(610)는 제 1 서버(도 5, 110)의 형태로 구현되고, 제 2 노드(620)는 제 2 서버(도 5, 120)의 형태로 구현되었다. 로그싱크부(630)에서는 제 1 서버(도 5, 110)와 제 2 서버(도 5, 120)간에 동기화를 수행한다. 도 5의 일 실시예에서, 마지막으로 동기화를 수행된 지점은 SN 130(S520) 지점이다.
도 6으로 돌아와, 페이지싱크부(640)는 제 1 노드(610)의 갭(GAP) 구간(도 5, S540)에서 수행된 로그 오퍼레이션을 체크한다. 이 후, 갭(GAP)구간(도 5, S540)에서 로그 오퍼레이션이 수행된 로그가 변경시킨 페이지를 제 2 노드(620)로부터 수신하여 덮어쓰는 과정을 통해 페이지 동기화를 수행한다.
이 경우, 수행된 로그 오퍼레이션이 삽입(insert), 삭제(delete), 업데이트(update)와 같은 페이지의 변경이 발생하는 로그 오퍼레이션인 경우에는 해당되는 페이지를 페이지싱크를 위한 페이지 목록에 반영한다.. 반면, 선택(select)과 같은 페이지의 변경이 발생하지 않는 로그오퍼레이션인 경우는 별도의 처리를 수행하지 않는다.
로그 동기화 및 페이지 동기화가 이루어지면, 제 1 노드(610)는 부분로그동기화부(650)를 통해 제 2 노드로부터 제 1 노드(610)와 제 2 노드(620) 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점(도 5, S520) 다음부터, 상기 제 1 노드의 장애가 복구된 시점(도 5, S570)까지의 로그를 수신한다.
이상의 과정을 통해, 본 발명의 바람직한 일 실시예에서는 제 1 노드(610)와 제 2 노드(620) 간의 데이터를 동기화한다.
도 7 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템의 액티브 노드의 내부 구성도를 도시한다.
액티브노드(700)는 검색부(710), 로그확인부(720), 페이지싱크부(730) 및 부분동기화부(740)를 포함한다.
액티브 노드에서는 비동기적으로 로그를 스탠바이 노드로 전송하여 액티브 노드와 스탠바이 노드간에 동기화를 수행한다. 검색부(710)에서는 액티브 노드에 장애가 발생하는 경우, 액티브 노드와 스탠바이 노드 간에 마지막으로 동기화가 이루어진 지점을 검색한다.
이 후, 액티브 노드의 로그확인부(720)에서는 검색부(710)에서 검색된 액티브 노드에서 스탠바이 노드와 마지막으로 동기화가 이루어진 지점 이후에, 액티브 노드에 기록된 로그가 있는지 확인한다.
페이지싱크부(730)에서는 로그확인부(720)에서 확인된 로그에 대해 페이지의 변경을 유발시키는 로그들에 대해서만 페이지 싱크를 위한 페이지 목록에 반영한다.
부분동기화부(740)는 페이지싱크부(730)에서 장애를 복구하면, 액티브 노드에서 마지막으로 동기화가 이루어진 지점 이후부터, 스탠바이 노드가 액티브 노드의 역할을 수행하면서 클라이언트로부터 수신한 작업 요청을 처리하면서 발생시킨 로그(도 5, S530~S570)를 수신하여 동기화를 수행한다.
도 8 은 본 발명의 바람직한 일 실시예로서, 부분동기화를 지원하는 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드의 내부 구성도를 도시한다.
부분동기화를 지원하는 데이터베이스 관리 시스템(800)은 액티브 노드(810) 및 스탠바이노드(820)를 포함한다. 부분동기화를 지원하는 데이터베이스 관리 시스템(800)은 로그싱크부(830)를 통해 액티브 노드(810)와 스탠바이노드(820) 간에 비동기적으로 로그 동기화를 수행한다.
액티브 노드(810)에 장애가 발생할 경우, 스탠바이 노드(820)는 로그 수신부(860)를 통해 로그를 수신하고 있다가, 장애 발생 직후부터 액티브 노드의 역할을 수행한다.
액티브 노드(810)의 장애가 복구된 경우, 액티브 노드(810)는 페이지 싱크부(840)를 통해 갭(GAP) 구간(도 5, S540)에 대해 페이지 싱크를 수행한다. 그 후 부분 로그 동기화부(850)는 스탠바이노드(820)에서 액티브 노드의 역할을 하면서 발생시킨 로그를 수신하여 동기화를 수행한다.
도 10은 본 발명의 바람직한 일 실시예로서, 데이터베이스 관리 시스템에서 액티브 노드 및 스탠바이 노드 간에 로그 부분동기화 흐름도를 도시한다.
액티브노드(1010)는 클라이언트(1000)의 작업 요청(S1010)을 수신한다. 그리고, 클라이언트(1000)로부터 수신한 작업 요청(S1010)을 처리하면서 발생시킨 로그를 비동기적으로 스탠바이 노드(1020)에 전송한다(S1020). 이 과정에서 액티브노드(1010)와 스탠바이 노드(1020)는 비동기적 동기화가 이루어진다.
액티브 노드(1010)에서 장애가 발생한 경우(S1031), 스탠바이노드(1020)는 액티브 노드의 역할을 수행하도록 전환되고(S1031), 그 이후로 클라이언트(1000)의 작업 요청(S1031)을 수신한다. 액티브 노드(1010)에서 장애가 복구된 경우(S1040), 액티브 노드(1010)는 페이지 싱크(S1041)를 수행하고, 스탠바이노드(1020)로부터 액티브노드(1010)와 스탠바이노드(1020)간에 마지막으로 동기화가 이루어진 시점부터 액티브 노드(1010)가 장애가 복구된 시점(S1040)까지의 부분 로그를 수신하여(S1050) 동기화를 수행한다.
한편, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 하드디스크, 광 데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
Claims (15)
- 비동기적으로 제 1 노드에서 제 2 노드로 로그를 전송하고, 상기 제2노드에서 수신한 로그에 대해 내부적으로 리두(Redo)를 수행하는 로그싱크부;
상기 제 1 노드의 갭(GAP) 구간에서 수행된 로그 오퍼레이션을 체크하여, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 단위로 상기 제 2 노드로부터 대응되는 페이지를 수신하여 덮어쓰는 페이지싱크부; 및
상기 제 2 노드에서 상기 제 1 노드와 상기 제 2 노드 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점부터, 상기 제 1 노드의 장애가 복원된 시점까지 발생시킨 로그 데이터를 상기 제 1 노드로 전송하는 부분로그동기화부;를 포함하고,
이 경우 상기 갭(GAP) 구간은 상기 제 1 노드에서 장애가 발생하기 이전에, 상기 제 1 노드와 상기 제 2 노드 간에 마지막으로 동기가 이루어진 지점 이후의 시퀀셜 넘버(SN)부터 상기 제1노드에서 상기 장애 발생 전 마지막 로그가 기록된 시퀀셜 넘버(SN)까지의 로그 구간인 것을 특징으로 하며, 이 경우 상기 페이지싱크부에서 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 삭제
- 제 1 항에 있어서, 상기 페이지싱크부에서
로그 오퍼레이션이 페이지에 변경을 발생시키지 않는 경우 별도의 작업을 수행하지 않는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 액티브 노드에서 비동기적으로 로그를 스탠바이 노드로 전송하는 로그싱크부;
액티브 노드에 장애 발생시 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기화가 이루어진 지점을 검색하는 검색부;
상기 장애 발생시 상기 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후에 기록된 로그가 있는지 확인하는 로그확인부;
액티브 노드에서 상기 로그확인부에서 확인된 로그에 대해 수행된 로그 오퍼레이션을 체크하고, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP) 구간의 불일치를 제거하는 페이지싱크부; 및
액티브 노드에서 장애가 복구되면, 상기 액티브 노드에 장애가 발생하여 상기 스탠바이 노드가 액티브 노드의 역할을 수행하면서 상기 마지막으로 동기화가 이루어진 지점 이후부터 상기 장애가 복구된 시점까지 수신한 로그를 수신하는 부분동기화부;를 포함하고,
이 경우 상기 갭(GAP) 구간은 상기 액티브 노드에서 장애가 발생하기 이전에, 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기가 이루어진 지점 이후의 시퀀셜 넘버(SN)부터 상기 액티브 노드에서 상기 장애 발생 전 마지막 로그가 기록된 시퀀셜 넘버(SN)까지의 로그 구간이며, 이 경우 상기 페이지싱크부에서 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 삭제
- 제 4 항에 있어서, 상기 페이지 싱크(Page Sync)작업은
상기 액티브 노드에서 상기 로그 오퍼레이션이 수행된 데이터가 참조하는 페이지에 대응하는 페이지를 상기 액티브 노드에 장애가 발생한 이후 액티브 노드의 역할을 수행하는 스탠바이 노드로부터 수신하여 덮어쓰는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 제 4 항에 있어서, 상기 액티브 노드는
상기 장애 발생시까지 데이터베이스 관리 시스템(DBMS)의 관리서비스를 수행하는 메인 서버로서, 클라이언트의 요구사항을 처리하는 서버인 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 제 4 항에 있어서, 상기 스탠바이 노드는
상기 액티브 노드와 통신을 통하여 상기 액티브 노드의 데이터를 백업받는 서버로서, 액티브 노드에 장애가 발생하면, 스탠바이 노드에서 트랜잭션 서비스를 수행하여 가용성을 확보하는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 클라이언트와 통신을 수행하며, 클라이언트의 요구사항을 처리하는 액티브 노드;
상기 액티브 노드와 통신을 통해 상기 액티브 노드의 데이터를 비동기적으로 백업받고, 상기 액티브 노드에 장애가 발생하면 트랜잭션 서비스를 상기 액티브 노드 대신 수행하는 스탠바이 노드;
상기 스탠바이 노드에 구현되고, 상기 액티브노드로 부터 로그를 비동기적으로 수신하여 리두(Redo)를 수행하는 로그싱크부;
상기 액티브 노드에 구현되고, 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 경우, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP) 구간의 불일치를 제거하는 페이지 싱크부;
상기 액티브 노드에 구현되고, 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생한 후 다시 장애가 복구된 지점까지 상기 스탠바이 노드에서 상기 액티브 노드를 대신하여 발생시킨 로그 데이터를 상기 액티브 노드에서 수신하는 부분로그동기화부;를 포함하고, 상기 갭(GAP) 구간은 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 지점 이후의 시퀀셜 넘버(SN)부터 상기 액티브 노드에서 상기 장애 발생 전 마지막 로그가 기록된 시퀀셜 넘버(SN)까지의 로그 구간이며, 이 경우 상기 페이지싱크부에서 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 부분동기화 지원 데이터베이스 관리 시스템. - 삭제
- 데이터베이스 관리 시스템에서 로그를 부분동기화하는 방법으로서,
로그싱크부에서 비동기적으로 제 1 노드에서 제 2 노드로 로그를 전송하고, 상기 제2노드에서 수신한 로그에 대해 내부적으로 리두(Redo)를 수행하는 단계;
페이지싱크부에서 상기 제 1 노드의 갭(GAP) 구간에서 수행된 로그 오퍼레이션을 체크하여, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP) 구간의 불일치를 제거하는 단계; 및
부분로그동기화부에서 제 2 노드에서 상기 제 1 노드와 상기 제 2 노드 간에 장애 발생 이전에 마지막으로 동기가 이루어진 시점부터 상기 제 1 노드의 장애가 복구되는 시점까지 발생시킨 로그 데이터를 상기 제 1 노드로 전송하는 단계;를 포함하고,
이 경우 상기 갭(GAP) 구간은 상기 제 1 노드와 상기 제 2 노드 간에 마지막으로 동기가 이루어진 지점 이후의 시퀀셜 넘버(SN)부터 상기 제1노드에서 장애 발생 전 마지막 로그가 기록된 시퀀셜 넘버(SN)까지의 로그 구간이며, 이 경우 상기 페이지싱크부에서 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 방법. - 삭제
- 데이터베이스 관리 시스템의 액티브노드에서 로그를 부분동기화하는 방법으로서,
액티브 노드에서 비동기적으로 로그를 스탠바이 노드로 전송하는 단계;
검색부에서 액티브 노드에 장애 발생시 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기화가 이루어진 지점을 검색하는 단계;
로그확인부에서 상기 장애 발생시 상기 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후에 기록된 로그가 있는지 확인하는 단계;
액티브 노드에서 상기 로그확인부에서 확인된 로그에 대해 수행된 로그 오퍼레이션을 체크하고, 페이지싱크부를 통해 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 갭(GAP) 구간의 불일치를 제거하는 단계; 및
장애 복구시, 부분동기화부를 통해 액티브 노드에서 상기 마지막으로 동기화가 이루어진 지점 이후부터 상기 스탠바이 노드가 상기 장애 복구 시까지 액티브 노드의 역할만 수행하면서 클라이언트로부터 수신한 새로운 작업을 수행하면서 새롭게 생성되는 로그를 상기 스탠바이 노드로부터 수신하는 단계;를 포함하고,
이 경우 상기 갭(GAP) 구간은 상기 액티브 노드에서 장애가 발생하기 이전에, 상기 액티브 노드와 상기 스탠바이 노드 간에 마지막으로 동기가 이루어진 지점 이후의 시퀀셜 넘버(SN)부터 상기 액티브 노드에서 상기 장애 발생 전 마지막 로그가 기록된 시퀀셜 넘버(SN)까지의 로그 구간이며, 이 경우 상기 페이지싱크부에서 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 방법. - 삭제
- 데이터베이스 관리 시스템에서 로그를 부분동기화하는 방법으로서,
상기 데이터베이스 관리 시스템은
클라이언트와 통신을 수행하며, 클라이언트의 요구사항을 처리하는 액티브 노드; 및
상기 액티브 노드와 통신을 통해 상기 액티브 노드의 데이터를 비동기적으로 백업받고, 상기 액티브 노드에 장애가 발생하면 트랜잭션 서비스를 상기 액티브 노드 대신 수행하는 스탠바이 노드;를 포함하고, 상기 방법은
상기 스탠바이 노드에 구현된 로그싱크부에서 상기 액티브노드로 부터 로그를 비동기적으로 수신하여 리두(Redo)를 수행하는 단계;
상기 액티브 노드에 구현된 페이지 싱크부에서, 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 경우, 상기 로그 오퍼레이션이 수행된 데이터에 대해 페이지 싱크(Page Sync)작업을 통해 상기 갭(GAP) 구간의 불일치를 제거하는 단계로서, 상기 갭(GAP) 구간에서 로그 오퍼레이션이 수행된 데이터에 대해 페이지 단위로 제 2 노드로부터 대응되는 페이지를 수신하여 덮어쓰고, 상기 갭(GAP) 구간은 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점 이후의 시퀀셜 넘부(SN)부터 상기 액티브 노드에 장애가 발생하기 이전 마지막으로 로그가 기록된 시퀀셜 넘버(SN)까지의 구간인, 복구 단계;
상기 액티브 노드에 구현된 부분로그동기화부에서, 상기 액티브 노드와 상기 스탠바이 노드간에 마지막으로 동기가 이루어진 시점부터 상기 액티브 노드에 장애가 발생한 후 다시 장애가 복귀된 지점까지 상기 스탠바이 노드에서 상기 액티브 노드를 대신하여 발생시킨 로그 데이터를 상기 액티브 노드에서 수신하는 단계;를 포함하고, 이 경우, 상기 로그 오퍼레이션이 페이지에 변경을 발생시키는 로그 오퍼레이션인 경우에만 페이지싱크의 대상이 되는 페이지로 인식하는 것을 특징으로 하는 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140066514A KR101662212B1 (ko) | 2014-05-30 | 2014-05-30 | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 |
US14/609,097 US20150347250A1 (en) | 2014-05-30 | 2015-01-29 | Database management system for providing partial re-synchronization and partial re-synchronization method of using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140066514A KR101662212B1 (ko) | 2014-05-30 | 2014-05-30 | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150137884A KR20150137884A (ko) | 2015-12-09 |
KR101662212B1 true KR101662212B1 (ko) | 2016-10-04 |
Family
ID=54701876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140066514A KR101662212B1 (ko) | 2014-05-30 | 2014-05-30 | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150347250A1 (ko) |
KR (1) | KR101662212B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108156264A (zh) * | 2018-03-06 | 2018-06-12 | 爱普(福建)科技有限公司 | 一种面向双机冗余的数据同步方法 |
CN108255906A (zh) * | 2017-05-04 | 2018-07-06 | 平安科技(深圳)有限公司 | 数据补录方法及装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367410B2 (en) * | 2014-09-12 | 2016-06-14 | Facebook, Inc. | Failover mechanism in a distributed computing system |
WO2017101016A1 (zh) * | 2015-12-15 | 2017-06-22 | 华为技术有限公司 | 用于存储节点同步业务请求的方法和装置 |
CN107426265A (zh) * | 2016-03-11 | 2017-12-01 | 阿里巴巴集团控股有限公司 | 数据一致性同步的方法及设备 |
CN107357791B (zh) * | 2016-05-10 | 2021-10-15 | 中兴通讯股份有限公司 | 一种数据共享方法及装置 |
US10372559B2 (en) * | 2016-06-07 | 2019-08-06 | International Business Machines Corporation | Managing a redundant computerized database using a replicated database cache |
CN107644030B (zh) * | 2016-07-20 | 2021-05-18 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
KR101823130B1 (ko) | 2016-11-28 | 2018-03-09 | 주식회사 실크로드소프트 | 데이터베이스의 이중화를 위한 기법 |
CN108418887A (zh) * | 2018-03-13 | 2018-08-17 | 山东超越数控电子股份有限公司 | 一种基于桌面同步实现多级热备的方法 |
US11403319B2 (en) * | 2018-06-01 | 2022-08-02 | Hewlett Packard Enterprise Development Lp | High-availability network device database synchronization |
CN110851528B (zh) * | 2019-10-09 | 2022-09-02 | 网联清算有限公司 | 数据库同步方法、装置、存储介质及计算机设备 |
US11706162B2 (en) * | 2019-10-21 | 2023-07-18 | Sap Se | Dynamic, distributed, and scalable single endpoint solution for a service in cloud platform |
KR102382189B1 (ko) * | 2020-07-30 | 2022-04-05 | 주식회사 엘지유플러스 | 다중화 액티브 데이터베이스의 리플리케이션 갭 감지 방법 및 장치 |
CN111966520A (zh) * | 2020-08-10 | 2020-11-20 | 上海中通吉网络技术有限公司 | 数据库高可用切换方法、设备及系统 |
US11249866B1 (en) * | 2021-04-22 | 2022-02-15 | Microsoft Technology Licensing, Llc | Snapshot-based data corruption detection |
KR102428587B1 (ko) * | 2022-04-13 | 2022-08-03 | 주식회사 비투엔 | 마이크로 서비스 아키텍처 기반의 트랜잭션 가용성과 성능 보장 처리 장치 및 방법 |
WO2024080406A1 (ko) * | 2022-10-13 | 2024-04-18 | 한국전자기술연구원 | 데이터 플랫폼 미가동시에도 손실 없이 데이터를 저장하고 제공하는 방법 |
CN116401600B (zh) * | 2023-03-07 | 2024-10-15 | 深圳市丰宜科技有限公司 | 工单系统的同步节点信息的获取方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030048503A (ko) * | 2001-12-12 | 2003-06-25 | 주식회사 엘지이아이 | 이중화 서버 구조의 데이터 동기화를 위한 통신 시스템 및방법 |
US7457829B2 (en) * | 2003-06-23 | 2008-11-25 | Microsoft Corporation | Resynchronization of multiple copies of a database after a divergence in transaction history |
KR101430239B1 (ko) * | 2007-10-24 | 2014-08-19 | 주식회사 케이티 | 액티브-액티브 데이터베이스 서버 시스템에서 데이터동기화 장치 및 방법 |
US8700760B2 (en) * | 2008-08-18 | 2014-04-15 | Ge Fanuc Intelligent Platforms, Inc. | Method and systems for redundant server automatic failover |
KR101265388B1 (ko) * | 2009-07-02 | 2013-05-20 | 엔에이치엔비즈니스플랫폼 주식회사 | 고가용성 데이터베이스 관리 시스템 및 이를 이용한 데이터베이스 관리 방법 |
KR101352959B1 (ko) * | 2011-12-09 | 2014-01-21 | 주식회사 알티베이스 | 메인메모리 데이터베이스 관리 시스템의 액티브 노드 및 스탠바이 노드의 데이터베이스 관리 장치 및 방법 |
-
2014
- 2014-05-30 KR KR1020140066514A patent/KR101662212B1/ko active IP Right Grant
-
2015
- 2015-01-29 US US14/609,097 patent/US20150347250A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255906A (zh) * | 2017-05-04 | 2018-07-06 | 平安科技(深圳)有限公司 | 数据补录方法及装置 |
CN108255906B (zh) * | 2017-05-04 | 2020-08-14 | 平安科技(深圳)有限公司 | 数据补录方法及装置 |
CN108156264A (zh) * | 2018-03-06 | 2018-06-12 | 爱普(福建)科技有限公司 | 一种面向双机冗余的数据同步方法 |
CN108156264B (zh) * | 2018-03-06 | 2021-01-26 | 爱普(福建)科技有限公司 | 一种面向双机冗余的数据同步方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150137884A (ko) | 2015-12-09 |
US20150347250A1 (en) | 2015-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101662212B1 (ko) | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 | |
CN110249321B (zh) | 用于从分布式数据源中捕获变更数据以供异构目标使用的系统和方法 | |
US9658928B2 (en) | File-based cluster-to-cluster replication recovery | |
JP4668763B2 (ja) | ストレージ装置のリストア方法及びストレージ装置 | |
WO2019154394A1 (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN107885758B (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
US10565071B2 (en) | Smart data replication recoverer | |
US8521691B1 (en) | Seamless migration between replication technologies | |
US20150213100A1 (en) | Data synchronization method and system | |
US9672117B1 (en) | Method and system for star replication using multiple replication technologies | |
US9251008B2 (en) | Client object replication between a first backup server and a second backup server | |
US11080148B2 (en) | Method and system for star replication using multiple replication technologies | |
WO2021226905A1 (zh) | 一种数据存储方法、系统及存储介质 | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
JP2016524750A5 (ko) | ||
JP2016524750A (ja) | 索引更新パイプライン | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN105574187A (zh) | 一种异构数据库复制事务一致性保障方法及系统 | |
KR20110002708A (ko) | 고가용성 데이터베이스 관리 시스템 및 이를 이용한 데이터베이스 관리 방법 | |
US20220335011A1 (en) | System and Method for Eliminating Full Rescan Synchronizations on Service Restarts | |
WO2020027840A1 (en) | Distributed recovery of server information | |
JP2007293821A (ja) | データベースシステム管理方法及びデータベースシステム | |
JP5685213B2 (ja) | 差分レプリケーションシステム、マスターデータベース装置、及びスレーブデータベース装置 | |
CN111522688A (zh) | 分布式系统的数据备份方法及装置 | |
US20240281546A1 (en) | Continuous Data Protection System and Method for Modern Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190926 Year of fee payment: 4 |