개발자가 작업 중 실수로 운영중인 기관의 테이블을 날려먹어 복구가 필요하다는 이야기를 들었다.
그나마 다행히도 MariaDB의 데이터베이스는 안날린게 어디인가. 복구 해보도록 하자
[root@db DB_BACKUP]$ cd MARIADB/ [root@db MARIADB]$ ll -rhtk | grep 20250502 -rw-r--r-- 1 root root 4.2M 5월 2 01:00 20250502_routines.sql -rw-r--r-- 1 root root 1.5M 5월 2 01:00 20250502_scheme.sql -rw-r--r-- 1 root root 3.6G 5월 2 01:05 20250502_data.sql |
다행히도 DB 백업본은 잘 돌고 있었으나, 용량이 3.6G이다.
이런 생각보다 데이터가 많다.
3.6GB나 되는 그 많은 양에서 데이터를 어떻게 뽑을 것인가?
파일빼는것도 오래걸리고 재가공도 귀찮은데... 열어보자
파일 받는것도 오래걸렸고, 열리지도 않는다.
압축본으로 데이터를 추출하면 내부 문자열이 깨질것이다.
그렇다면 그냥 VScode나 Eclipse 뭐 이런 툴로 열면 되는거 아니냐? 할수 있는데
이관할것도 아니고 그렇게 큰 공수는 들이고 싶지 않은걸.
간단하게 sed -n으로 파일을 뽑아보도록 하자.
일단 백업데이터를 vi로 열어보자.
여는대만 한세월이 걸린다. 한 10초 내외
문단의 끝을 확인해 보자
Ctrl + Alt + G |
10473690 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 10473691 10473692 -- Dump completed on 2025-05-02 1:05:36 |
이야. 10,473,692줄이나 있는것을 확인 할수 있다.
다시 상단으로 가보자
gg |
1 -- MariaDB dump 10.19 Distrib 10.11.7-MariaDB, for linux-systemd (x86_64) 2 -- 3 -- Host: localhost Database: 나눙데이터 4 -- ------------------------------------------------------ 5 -- Server version 10.11.7-MariaDB 6 7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
여기서 복구에 필요한 데이터베이스 내 테이블명을 개발자에게 알려달라하자.
bdg_ebdg_cpl 라는 테이블이라고 한다.
그럼 조건은 다 충족 되었다. 복구할 DB백업본 파일도 있고, 복구가 필요한 테이블도 있다.
우리가 해야할건 테이블이 시작되는 첫줄과 끝나는 마지막 줄을 확보해야한다.
vi 20250502_data.sql 을 들어가서
:set nu 을 쳐주도록 하자.
2. 복구에 필요한 테이블명을 검색한다
/bdg_ebdg_cpl
자 처음시작하는 복구테이블은 2198546번째 줄이다.
해당 테이블은 2232835번째 줄에서 끝나는 것을 알수 있다.
3. DB백업본에서 해당 테이블 데이터만 추출하자.
sed -n '2198546, 2232835p' 20250502_data.sql > bdg_ebdg_cpl.sql |
[root@db MARIADB]# ll -rhtl | grep bdg_ebdg_cpl.sql -rw-r--r-- 1 root root 8.5M 5월 3 14:18 bdg_ebdg_cpl.sql |
파일이 잘 뽑힌것을 볼수 있다
해당 데이터를 개발자에게 던져주자.
.
.
.
잘 복구 되었다고 한다. 끝
'IT > DB' 카테고리의 다른 글
Tibero JDBC-3002:Out of memory (unable to allocate 304 bytes of shared pool memory) (2) | 2025.05.07 |
---|---|
마리아, 오라클, 티베로 스키마 계정 권한 부여(Grant) 및 Heidi를 통한 권한 부여 방법 (0) | 2025.05.05 |
ORACLE ORA-28009/ORA-01017 와 Grant 권한 부여 (0) | 2025.04.25 |
Tibero Demo license 교체 (0) | 2025.04.14 |
TIBERO JDBC-5072(Failure converting NUMBER to or from a native type) 해결 방안 (0) | 2025.04.03 |