Review

[LA DB 스터디] 2016-11-01 LA 한인 SQL Server 스터디 모임(가칭)

SQL Angeles 2019. 4. 15. 23:34

[LA DB 스터디] 2016-11-01 LA 한인 SQL Server 스터디 모임(가칭)

 

안녕하세요. 강성욱 입니다.

저희 스터디 그룹은 매주 화요일 8PM ~ 10PM (2시간) 스터디를 진행하며(상황에 따라 장소 및 시간은 변경 될 수 있습니다.) SQL Server를 함께 공부하고 업계의 다양한 트렌드 및 이슈를 공유하며 기술 및 네트워크를 공유하는 모임 입니다. LA 한인 SQL Server 스터디에 참여하고 싶은 분들은 카카오톡(ID : SQLMVP), 페이스북 메신져, email(jevida@naver.com) 등으로 연락 주시기 바랍니다. 사내 오피스에서 진행되기 때문에 출입이 자유롭지 못한 관계로 반드시 사전에 협의가 되어야 합니다.

 

스터디는 회원제로 운영되며 월회비($20)가 있습니다. 불성실 회원의 경우 회칙에 따라 참여 또는 기타 활동이 제한될 수 있습니다.

 

오늘의 주제는 SQL Server Internals Storage 부분에 대해서 강성욱님께서 발표해 주셨습니다. 지난 시간에 발표했던 스토리지 내용을 이어서 실제 SQL에서 발생할 수 있는 Disk corruption 부분에 대해서 살펴보고 SQL 장애 상황을 재현하여 해결하는 과정을 데모를 통해 직접 보여주었습니다.

 

 

스토리지에 대한 세션은 2주에 걸쳐 진행되었으며 1부에서는 디스크의 유형 및 특징, RAID 구성 등 디스크에 대한 일반적인 기술에 대해서 다루었으며 금일 2부에서는 디스크의 장애 유형, 해결 방법, SQL에서 디스크를 효율적으로 사용하는 방법에 대해서 살펴보았습니다.

 

 

이번 발표는 한국의 SQLTAG 스터디(http://sqltag.org)에서 2012년에 발표했던 내용으로 LA 한인 SQL Server 스터디에서 한번 더 진행하게 되었습니다. 최근에는 스토리지에도 세대교체가 진행되어 대부분의 많은 DB 시스템들이 SSD를 도입하여 사용하고 있어 일부 자료는 트렌드에 뒤쳐진 느낌도 있지만 실제 디스크 커럽션이나 장애 복구에 대한 내용은 여전히 필요한 기술로 직접 데모를 통한 실습으로 실제 데이터를 복구하는 방법에 대해서 다시 한번 살펴 볼 수 있는 시간이었습니다. 아래 이미지는 지난주에 이어 금일 발표했던 2차분의 발표 슬라이드 입니다.

 

 

 

 

 

 

 

파일은 서로 다른 배열에 위치하는 것이 좋다. 가장 좋은 것은 데이터 파일과 로그 파일, tempdb, 백업파일이 서로 다른 배열에 있는 것이다.

 

 

 

일반적으로 로그파일은 1+0에 위치하는것이 좋다. 로그 파일은 많은 쓰기가 필요 하다. RAID 1+0은 빠른 쓰기에 탁월하다. 최적의 디스크 구성은 비즈니스 및 스토리지 벤더의 권고를 참고하여 선택할 수 있도록 한다.

 

 

 

 

가능하면 백업은 디스크를 분리하자. 동일한 드라이브를 사용하지 않기 때문에 드라이브를 읽어서 빠른 기록이 가능하다. 데이터는 데이터드라이브를 스트리밍하고 백업도 가능한 빨리 기록 한다. 그리고 별도 배열에 있기 때문에 데이터 드라이브 손상시 백업이 손실 되지 않는다.

 

 

 

 

 

큰 용량의 소수 디스크보다 적은 용량의 많은 드라이브를 사용하는 것이 성능 면에서는 유리하다.

스핀들 파워라고 하여 디스크의 전체 성능을 고루 사용할 수 있도록 구성한다.

 

 

 

PHYSICAL_ONLY 페이지 및 레코드 헤더의 물리적 구조의 무결성 및 데이터베이스 할당 일관성으로 검사를 제한한다. 이 검사는 데이터베이스의 물리적 일관성 검사의 오버헤드를 줄이기 위한 목적으로 사용하며 사용자의 데이터를 손상시킬 가능성이 있는 조각난 페이지와 체크섬 오류, 그리고 일반적인 하드웨어 오류도 찾을 수 있다.

DBCC CHECKTABLE 전체 실행이 완료되는 데 걸리는 시간이 이전 버전보다 상당히 길 수 있다.. 그 이유는 1)논리적 검사가 더 포괄적 2)검사할 기본 구조 일부가 더 복잡함.

따라서 새로운 기능을 포괄할 수 있도록 여러 가지 검사 작업이 새로 도입되었다. 대형 데이터베이스에서는 PHYSICAL_ONLY 옵션을 사용하여 DBCC CHECKDB 실행 시간을 훨씬 단축시킬 수 있으므로 생산 시스템에서의 잦은 검사 작업에는 이 옵션을 사용하는 것이 좋다. 하지만 정기적으로 DBCC CHECKDB 전체 실행을 수행하는 것이 좋다. 이러한 실행 빈도는 개별 비즈니스 및 프로덕션 환경과 관련된 여러 가지 요소에 따라 달라진다. PHYSICAL_ONLY는 항상 NO_INFOMSGS와 함께 사용되며 어떠한 복구 옵션과도 함께 사용할 수 없다.

 

 

 

REPAIR_REBUILD데이터 손실 가능성이 없는 복구를 수행한다. 여기에는 비클러스터형 인덱스의 누락 행 복구와 같은 빠른 복구 작업과 인덱스 다시 작성과 같이 시간이 오래 걸리는 복구가 모두 포함된다. REPAIR_REBUILD FILESTREAM 데이터 관련 오류를 복구하지 않는다.

 

 

그리고 나머지 실습에서 데모 데이터베이스를 생성하고 Hexedit 툴을 이용하여 디스크의 바이너리를 강제로 수정하여 실제 디스크 일관성 오류 상황을 재현하고 이를 위의 방법을 이용하여 데이터를 복구하는 방법에 대해서 살펴보았습니다.

 

2016-11-01 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

LA 한인 SQL 스터디 모임, LA IT 모임, DB 스터디, SQL 스터디, SQL Server, DB 스터디, LA SQL Server, sqlmvp, SQL Angeles