반응형

Transaction Backup을 매 시간 마다 받고 있다.

여러가지 이유가 있지만 그 중에는 Transaction log가 Full 차는 경우도 있는걸로 알고 있다.

이 부분은 추가 적으로 정리해서 공유 하도록 하겠습니다.


그래서 매 시간마다 받고 있는데, 이것을 이용하여 시간마다 백업 DB에 동기화 하여 기획자나, 운영자가 Read only로 

조회 하는 것을 만들고자 제안을 했다.


이것을 Log shipping 이라고 하는 것인데, SQL Server 내 기능이 아닌 (SQL Log shipping) Transaction backup을 이용하여 log shipping을 만드는 것이다.


기존 Full backup 파일이나 Transaction log를 가지고 복원을 한다면 매번 full backup을 이용한 복구 후에 Transaction log로 복원을 해야한다.

이렇게 되면 매 시간마다 불필요한 작업이 진행되기 때문에 전체적으로 resource 낭비라고 생각했다.


그래서 full backup은 한번만 복구 후 이 후 Transaction backup파일을 가지고 진행이 안될까 찾던 중 sql server 관련한 유명한 분께 용기내어 메일을 보냈고, read only로 진행하면 가능하다는 답변을 받았다.(영광영광!!!*_* http://sqlmvp.kr )

(여담이지만 read only까지는 생각을 했지만 어디까지나 가정이었다...여기저기 검색하던 중에 이렇게 하면 되지 않을까...라는 생각..)


아래는 내가 직접 진행하고 확인한 것들이다.


(With standby 를 해 주면 된다.)


이렇게 진행하면 굳이 restore 완료 후 recovery를 하지 않아도 read only 모드로 테이블 조회가 가능하다.


RESTORE DATABASE [shipping2] FROM  DISK = N'C:\repl\backup.bak'
WITH  FILE = 1
,  MOVE N'Shipping2_Data' TO N'c:\Shipping2_data.mdf'
,  MOVE N'Shipping2_Log' TO N'c:\Shipping2_log.ldf'
, standby = 'E:\Shipping\standby.ldf'
,  norecovery
GO
- 순차 복구
restore log shipping2
from disk = N'C:\repl\Shipping2_log1.bak'
with standby = 'E:\Shipping\standby.ldf'
;
RESTORE LOG shipping2
FROM  DISK = N'C:\repl\Shipping2_log2.bak'
WITH standby = 'E:\Shipping\standby.ldf'

;




보는 바와 같이 logoff 시간을 보면 정상적으로 Transaction log가 적용 된 것을 확인할 수 있다.


더 자세한 내용은 아래 페이지에 접속해서 확인하면 좋을 듯 싶다.


개념 뿐만 아니라 많은 내용 들이 있어서 이해하기 수훨 하였다.


http://aruesoft.tistory.com/16


공식 문서

https://technet.microsoft.com/ko-kr/library/ms178034(v=sql.105).aspx

반응형

'SQL Server(MSSQL)' 카테고리의 다른 글

[mssql] database mdf/ldf 파일 이동  (0) 2017.09.28
[MSSQL] 시작..  (0) 2017.09.28
반응형

SQL Server의 가장 큰 장점은 한글로 된 공식 문서가 많다는 것이다.

단점보다 아쉬운건 다른 DBA분들의 공유 내용이 많지 않다는 것 같다.


그 공유란 것이 대부분 GUI로 하는 공유라 난 SQL를 원하고 있으며 공식 문서는 이런 부분이 조금 이해하기 힘들다?(적어도 나에게는)는 것이다.




현재 Replication 구축중이다. 이미 10년 넘게 운영되고 있는 DB라 건드는게 여간 쉽지가 않다.

하지만 Replication 구축도 제대로 안되어 있기에 이 부분을 집중하고 있다.


기본적으로 DB를 생성 후 디스크 용량으로 인해 이동하려는데 대부분 GUI로만 설명이 되어 있어서

SQL 문으로 설명 추가해 본다.


정말 사소한거지만 또 모르고 있으면 곤란하기에 간단한것부터 공유하며 적어 본다.


공식 문서(GUI)

https://support.microsoft.com/ko-kr/help/980163


create database shipping;


use shipping;

-- 해당 데이터 파일 생성된 위치 및 이름을 확인하자(위치는 물리파일 이동 해야 되기 때문에 위치는 반드시 파악하자)
-- log는 트랜잭션 log이므로 같이 옮기자. 물론 둘을 물리적 디스크로 분리하는 것이 성능적으로는 효과 적이다.
-- 하지만 우리는 테스트 이기에 같이 옮기자.

select name, physical_name from sys.database_files;

--원하는 위치로 설정
alter database shipping modify file (NAME = shipping, FILENAME='E:\Shipping\Shipping_data.mdf');
alter database shipping modify file (NAME = shipping_log, FILENAME='E:\Shipping\Shipping_log.ldf');

use master;
--오프라인으로 설정(이제 해당 DB는 사용 불가 / 운영시에는 session 유입을 꼭 확인하자)
alter database shipping set offline;

--이제 물리적인 파일을 서버 상에서 이동하자(위에 physical_name의 결과가 해당 물리적인 파일 위치이므로 참고하자)
windows cmd> move "기존 물리파일 위치(physical_name)" "E:\Shipping\Shipping_data.mdf"
windows cmd> move "기존 물리파일 위치(physical_name)" "E:\Shipping\Shipping_log.ldf"

-- online 으로 변경한 후 제대로 변경 되었는지 확인하자
alter database shipping set online;

use shipping;
select namephysical_name from sys.database_files;


GUI가 편하면 GUI로 진행하고 나같이 쿼리가 편하면 쿼리로 하는 것이 좋을 듯 싶다.


기초지만 다시는 안보고 할 정도로 정리는 필수!


반응형

'SQL Server(MSSQL)' 카테고리의 다른 글

[MS SQL] Transaction Backup Restore (with Standby)  (0) 2017.10.10
[MSSQL] 시작..  (0) 2017.09.28
반응형

DBA로써 여러 DB를 알고 있는것도 좋은거고..

또한 하나의 DB를 깊게 아는 것도 중요하다.


욕심은 MySQL 를 깊게 알고 Oracle / SQL Server를 중급레벨 이상이면 좋지만, 중급정도는 알고 싶었다.


하지만 모든게 내 뜻데로 되지 않듯이..

SQL Server를 본의 아니게 조금 더 일찍 시작하게 되었다.


후회는 없지만 MySQL 를 조금 더 깊게 파지 못하는 아쉬움이 있지만, 다행히 MySQL 도 놓지 않고 계속

컨트롤 할 수 있기에 여기서 SQL Server를 시작하게 되었다.


이것저것 어느정도 개념과 사용 방법을 어렵지 않게 익혔지만

아직 쉽지 않은것은 사실이다.


아쉬움은 있지만 후회는 없으며,

DBA로써 오히려 더 즐거움과 피드백이 생겼다.


시작이라고 적지만 이것은 DBA로써 연장이라고 생각하며 더 깊게 들어갈 수 있는 기회라고 생각한다.



반응형

+ Recent posts