문서번호 : 11-269353
SingleStore 는 전체 백업 또는 증분 백업을 수행할 수 있습니다. 이러한 백업과 백업 작동 방법의
차이점을 설명합니다.
1. 전체 백업 및 복원
전체 백업에는 데이터베이스의 전체 복사본이 포함됩니다.
1) 전체 백업 생성
전체 백업을 만들려면 백업 데이터베이스 명령을 실행합니다. 백업할 데이터베이스 이름을
지정한 다음 백업이 위치할 Disk 의 디렉터리를 지정하십시오. 다음 예시에서는 test 백업을
만들어 /memsql-backup/test_202205123 디렉토리에 저장합니다.
singlestore> BACKUP DATABASE test to "/memsql-backup/test_202205123";
+-----------+----------------+----------------------+---------------+---------------------+---------------------+----------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+------+----------------+------+------+----------------+--------------+----------------+--------------------+
| Backup_Id | Cluster_Name | Cluster_Id | Database_Name | Start_Timestamp | End_Timestamp | Num_Partitions | Backup_Path | Checksum | Status | Size | Incr_Backup_Id | Type | Tags | Server_Version | Memory_Usage | Implementation | Lockfree_Timestamp |
+-----------+----------------+----------------------+---------------+---------------------+---------------------+----------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+------+----------------+------+------+----------------+--------------+----------------+--------------------+
| 1000 | memsql_cluster | 10872438042438904773 | test | 2022-05-23 04:50:42 | 2022-05-23 04:50:46 | 32 | /home/min/memsql-backup/test_20220523/test.backup | fa124e9c88b44a597978ee17ed58d7e7a726e8143fe156b548b80e8e57e05a1fd25085bcb26b6081470aef0f86f011216c42eddbe0d524bce8ead6adcb4c727c19a2ee24a0d94b149bb008cb9e7db538ed836a3635e71b2c84964156a64f16c4aea28e01998f83cb015048d3ee5be3fbe6ec786b29e0f811f3f76e9ff242f02e19b4ffe4 | Success | NULL | NULL | FULL | NULL | 7.8.2 | 0 | Lockfree | 23068673 |
+-----------+----------------+----------------------+---------------+---------------------+---------------------+----------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+------+----------------+------+------+----------------+--------------+----------------+--------------------+
Bash
복사
BACKUP DATABASE는 BACKUP_ID 컬럼이 포함된 로우 하나를 출력합니다. 이 컬럼에는 방금 만든 백업 ID가 포함되어 있습니다.
2) 백업 목록 확인
information_schema.mv_backup_history 를 조회 하여 클러스터에서 수행된 모든 백업 기록을 볼
수 있습니다.
singlestore> select BACKUP_ID, INCR_BACKUP_ID, DATABASE_NAME, START_TIMESTAMP from information_schema.mv_backup_history order by backup_id;
+-----------+----------------+---------------+---------------------+
| BACKUP_ID | INCR_BACKUP_ID | DATABASE_NAME | START_TIMESTAMP |
+-----------+----------------+---------------+---------------------+
| 1000 | NULL | test | 2022-05-23 04:50:42 |
+-----------+----------------+---------------+---------------------+
Bash
복사
전체 백업이 이미 포함된 디렉토리에는 전체 백업을 저장할 수 없습니다. 대신 전체 백업을
다른 디렉터리에 저장하거나 원본 디렉터리의 내용을 삭제하십시오.
3) 전체 백업 복원
다음 예시는 "/memsql-backup/test_202205123” 디렉토리에서 test 를 복원합니다.
(test 데이터베이스 drop 후 복원)
singlestore> RESTORE DATABASE test FROM "/memsql-backup/test_202205123";
Query OK, 1 row affected (2.06 sec)
Bash
복사
2. Columnstore 의 증분 백업 및 복원
[정보]
•
SingleStore Tools sdb-admin create-backup 명령을 사용 한 백업에는 적용되지 않습니다.
•
Rowstore 데이터가 있는 데이터베이스에서 증분 백업을 수행할 수 있지만 Rowstore 데이터
의 전체 복사본이 백업에 저장됩니다.
•
증분 백업은 모든 노드가 같은 경로로 공유하는 파일시스템이어야 합니다.
증분 백업에는 이전 백업을 수행한 이후 변경된 Columnstore 데이터만 포함됩니다. 증분 백업은
NFS, Azure, GCS, S3 또는 S3 호환 Storage 만 대상으로 지정할 수 있습니다.
백업 세트에는 초기의 전체 백업과 여러 개의 증분 백업이 포함됩니다. 백업 세트의 모든 백업은
동일한 디렉토리에 저장됩니다.
1) 증분 백업 생성
1.
먼저 다음 예시와 같이 WITH INIT절을 포함한 BACKUP DATABASE 명령을 실행하여 초기 전체 백업을 수행합니다.
singlestore> BACKUP DATABASE test WITH INIT to "/memsql-backup/test_week_1";
Bash
복사
2.
첫 번째 증분 백업을 수행하려면 WITH DIFFERENTIAL절을 포함하여 BACKUP DATABASE 명령을 실행합니다. 이는 다음 예시에 나와 있습니다.
singlestore> BACKUP DATABASE test WITH DIFFERENTIAL to "/memsql-backup/test_week_1";
Bash
복사
3.
두 번째 증분 백업을 만들려면 동일한 명령을 다시 실행합니다.
singlestore> BACKUP DATABASE test WITH DIFFERENTIAL to "/memsql-backup/test_week_1";
Bash
복사
2) 백업 목록 확인
information_schema.mv_backup_history 를 조회하여 클러스터에서 수행된 모든 백업 기록을 볼
수 있습니다.
singlestore> select BACKUP_ID, INCR_BACKUP_ID, DATABASE_NAME, START_TIMESTAMP from information_schema.mv_backup_history order by backup_id;
+-----------+----------------+---------------+---------------------+
| backup_id | incr_backup_id | database_name | start_timestamp |
+-----------+----------------+---------------+---------------------+
| 1001 | 11000014 | test | 2022-05-23 05:23:22 |
| 1002 | 11000015 | test | 2022-05-23 05:24:33 |
| 1003 | 11000016 | test | 2022-05-23 05:25:42 |
+-----------+----------------+---------------+---------------------+
Bash
복사
3) 증분 백업 복원
WITH FILE 절에 복원할 증분 백업의 incr_backup_id 를 지정하여, RESTORE DATABASE 명령을
실행합니다.
singlestore> RESTORE DATABASE test FROM "/memsql-backup/test_week_1" WITH FILE = 11000016;
Bash
복사
내부적으로 SingleStore DB 는 incr_backup_id 11000014 의 초기 전체 백업을 사용하고 incr_backup_id 11000015 및 11000016 의 변경 사항을 적용하여 백업을 복원합니다.
백업 세트에서 어떤 증분 백업이든 복원할 수 있습니다. 앞선 예시에서와 같이 최신 증분 백업
만 복원해야 하는 것은 아닙니다.
4) 잦은 증분 백업 및 드문 전체 백업 생성
증분 백업을 수행하면 이전 증분 백업의 Columnstore 데이터가 더 이상 포함되지 않을 수 있습니다. 이전 백업의 데이터는 현재 백업이 이루어진 후에는 필요하지 않습니다. (데이터가 추가 Disk 공간을 차지하게 됩니다.)
공간을 절약하기 위해 증분 백업과 때때로 전체 백업을 수행할 수 있습니다. 다음 예시에서 사용 가능한 백업 일정에 대해 설명합니다.
백업 일정 예시
•
일요일을 제외한 모든 요일에 증분 백업을 만듭니다.
•
일요일에는 BACKUP DATABASE... WITH INIT를 사용하여 초기 전체 백업을 수행합니다.
그러면 새 백업 세트가 생성됩니다.
•
각 주에 대한 백업을 별도의 디렉토리에 저장합니다.
•
새 주의 일요일에 수행된 전체 백업이 성공하면 이전 주의 백업 디렉터리를 (원하는 경우) 삭제합니다.
5) 증분 백업 성능
증분 백업에는 이전 백업이 수행된 이후 변경된 내용만 포함되기 때문에 일반적으로 전체 백업보다 훨씬 더 빠릅니다.
증분 백업을 수행하기 전에 OPTIMIZE TABLE FULL 을 실행하는 경우 백업을 완료하는 데 보통
때보다 훨씬 오래 걸립니다. 해당 명령이 전체 Columnstore 테이블을 정렬하기 때문입니다.
일자 | 작성자 | 비고 |
2022.5.23 | min | |