데이터베이스 운영 과정에서 오작동이 발생할 수 있으며 비즈니스에 심각한 영향을 미칠 수 있습니다. 롤백 및 클론은 오작동에 대한 일반적인 복구 방법이지만 사소한 데이터 변경 및 긴급한 문제 해결 시 오류가 발생하기 쉽고 시간이 많이 소요되며 주요 데이터 변경 사항을 처리할 때 복구 시간을 제어할 수 없습니다.
TXSQL 팀은 Innodb 엔진을 위한 플래시백 쿼리 기능을 개발하고 구현했습니다. 간단한 SQL 문으로 오작동 이전의 과거 데이터를 쿼리하고 특정 SQL 구문을 통해 특정 시점의 데이터를 쿼리할 수 있습니다. 이를 통해 데이터 쿼리 및 복구 시간을 크게 절약하고 신속한 데이터 복구를 통해 비즈니스 연속성을 개선할 수 있습니다.
커널 마이너 버전 확인 및 업그레이드 방법에 대한 자세한 내용은 커널 마이너 버전 업그레이드를 참고하십시오.
플래시백 쿼리 기능은 데이터베이스 운영 중 오작동이 발생한 후 과거 데이터를 빠르게 쿼리하는 데 사용됩니다.
이 기능을 사용할 때 다음 사항에 주의해야 합니다.
show status like '%backquery%'
를 실행하여 상태 변수 Innodb_backquery_up_time 및 Innodb_backquery_low_time을 통해 볼 수 있음)내에 있어야 합니다.플래시백 쿼리는 새 AS OF 구문을 제공합니다. Innodb_backquery_enable 매개변수를 ON으로 설정하여 플래시백 쿼리 기능을 활성화한 다음 다음 구문을 통해 지정된 시간에 데이터를 쿼리할 수 있습니다.
SELECT ... FROM <테이블 이름>
AS OF TIMESTAMP <시간>;
지정된 시간의 데이터 쿼리 예시
MySQL [test]> create table t1(id int,c1 int) engine=innodb;
Query OK, 0 rows affected (0.06 sec)
MySQL [test]> insert into t1 values(1,1),(2,2),(3,3),(4,4);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
MySQL [test]> select now();
+---------------------+
| now() |
+---------------------+
| 2022-02-17 16:01:01 |
+---------------------+
1 row in set (0.00 sec)
MySQL [test]> delete from t1 where id=4;
Query OK, 1 row affected (0.00 sec)
MySQL [test]> select * from t1;
+------+------+
| id | c1 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+------+------+
3 rows in set (0.00 sec)
MySQL [test]> select * from t1 as of timestamp '2022-02-17 16:01:01';
+------+------+
| id | c1 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+------+------+
4 rows in set (0.00 sec)
과거 데이터에서 테이블 생성 예시
create table t3 select * from t1 as of timestamp '2022-02-17 16:01:01';
과거 데이터를 테이블에 삽입하는 예시
insert into t4 select * from t1 as of timestamp '2022-02-17 16:01:01';
다음 표에는 플래시백 쿼리 기능의 구성 가능한 매개변수가 나열되어 있습니다.
매개변수 | 범위 | 유형 | 기본값 | 값 범위/유효한 값 | 다시 시작 필요 | 설명 |
---|---|---|---|---|---|---|
Innodb_backquery_enable | 글로벌 | Boolean | OFF | ON\OFF | No | 플래시백 쿼리 기능의 스위치입니다. |
Innodb_backquery_window | 글로벌 | Integer | 900 | 1 - 86400 | No | 플래시백 쿼리의 시간 범위(초)입니다. 이 매개변수의 값이 클수록 플래시백 쿼리에 지원되는 과거 데이터 쿼리 시간이 길어지고 실행 취소 테이블스페이스에서 사용하는 저장 공간이 늘어납니다. |
Innodb_backquery_history_limit | 글로벌 | Integer | 8000000 | 1 - 9223372036854476000 | No | 플래시백 쿼리에 대한 undo 연결 목록의 길이입니다. 이 값을 초과하면 Innodb_backquery_window가 무시되고 이전 연결 목록 길이가 이 값보다 작을 때까지 purge가 트리거됩니다. |
문제 해결에 도움이 되었나요?