반응형

그럴 때 필요한 것이 바로 mysqldump 다.

 

mysqldump --help 라고 치면 모든 OPTION들의 설명이 나와있겠지만,

그래도 아래 3가지 옵션은 알아 두는 것이 좋을 것 같다.

 

일단, 맨 위의 값들은 mysqldump가 사용하는 변수의 목록이다.

즉, 아무런 값도 치지 않고 (아! 물론  데이터 베이스는 선택해야 한다.)

명령어를 입력하면, 위의 값들을 바탕으로 결과가 만들어진다는 것이지.

 

그렇지만, 역시나 속도가 생명인 IT의 건아들은 

뭔가 오밀조밀하게 만져서 조금더 빠르게 덤프를 뜨고 싶을 것이다.

 

 

**** 속도가 관건인 분에게 아래의 OPTION들을 권하오~~

 

--no-autocommit=1 : 일단 autocommit을 끄고, 

                           1개의 테이블 입력이 완료될 까지

                           기다렸다가 commit 수행 한다. 요거이 좋다!!!

                           대신 뻑나면, 다시 첨부터~~~ 우어!!!

 

--single-transaction=1 : 작업 후에 변경 된 데이터의 내역을 다시 적용하지 않는다.

                                 , 중간에 값이 바뀌질 않는다면 가능하다는 말씀.

 

--extended-insert=1 : 요거이 관건인데, 쓸데 없이 INSERT 구문이 늘어나는 것을 

                             막아준다. 가령 

                            ->  INSERT INTO `A` VALUES (1,10),(2,20);

                             이러면 것을 , 

                            -> INSERT INTO `A` VALUES (1,10); 

                            -> INSERT INTO `A` VALUES (2,20);

                             으로 늘려준다. 이러면 하루 종일 도는 거다 --;;

 

 

그럼 덤프 방법을 보자.

리눅스건 윈도우 커맨드건 간에 어차피 양식은 같다.

(아래의 대문자는 당신이 넣어야 할 내용들이다.)

 

@@@@ 덤프 할 때 @@@@

c:\>mysqldump -hHOST_NAME -uMY_ID -pMY_PASSWORD --databases DB_NAME --tables TABLES_OF_DB_NAME --no-autocommit=1 --single-transaction=1 --extended-insert=1 > c:\DUMP_FILE.sql

 

요러면, 아무것도 모르고 그냥 뽑아내는 방식보다,

(지가 무슨 고급 승용차인줄 아는지 거의가 풀 옵션이다 --;;)

사이즈가 1/4 정도로 확 줄고,

속도는 광속을 뽐내게 된다.

 

즉, 관건은, 

덤프의 시간이 아니라 RESTORE의 시간인데,

개인적인 체감 속도로 판단하자면, 

진짜 시간이 1/10 정도는 감소하는 것 같다눙... -0-/

 

@@@@ 복원 할 때 @@@@

c:\>mysql -hHOST_NAME -uMY_ID -pMY_PASSWORD --database DB_NAME < c:\DUMP_FILE.sql 

 

 

mysqldump 옵션

--no-autocommit=1
일단 autocommit을 끄고,
1개의 테이블 입력이 완료될 때 까지
기다렸다가 commit을 수행 한다. 요거이 좋다!!!
대신 뻑나면, 다시 첨부터~~~ 우어!!!

--single-transaction=1
작업 후에 변경 된 데이터의 내역을 다시 적용하지 않는다.
즉, 중간에 값이 바뀌질 않는다면 가능하다는 말씀.

--extended-insert=1
요거이 관건인데, 쓸데 없이 INSERT 구문이 늘어나는 것을
 막아준다. 가령
->  INSERT INTO `A` VALUES (1,10),(2,20);
 이러면 될 것을 ,
-> INSERT INTO `A` VALUES (1,10);
-> INSERT INTO `A` VALUES (2,20);
 으로 늘려준다. 이러면 하루 온 종일 도는 거다 --;;

이 3가지 옵션으로 백업을 한결과.... 놀라움을 극치 못했습니다 연습용 10기가 용량이 육박하는

데이터베이스를 보통 백업을 뜰때 30~40분 정도가 소요됬습니다(서버가 켄츠할배와 같은시기에 나온 제온..)

근데............. 그런데!!!!!!!!!! 저 3가지 옵션을 준후에는 10분 안짝으로 백업이 되는것 입니다..

놀라움을 극치 못하고 그러면 원본 포스팅에서 복원 속도도 체감상 1/10로 줄어들었다는데.......

정말이지 진짜 체감상 1/10로 줄어든 기분입니다.....하~ 이렇게 좋은 옵션이 있을줄은 생각지도 못했네요

일단 대용량 백업을 자주 뜨시는 분들이 계시면 저 옵션도 추천해드리고 실시간 백업을 요하는 분들은

Xtrabackup 솔루션을 추천드립니다 ( 증분 백업이 가능합니다! )

 

출처: http://dongwonme.tistory.com/entry/MySQL-대용량-백업-복원-빨리하기 [Dongwon.me]

 

출처: <http://dongwonme.tistory.com/entry/MySQL-%EB%8C%80%EC%9A%A9%EB%9F%89-%EB%B0%B1%EC%97%85-%EB%B3%B5%EC%9B%90-%EB%B9%A8%EB%A6%AC%ED%95%98%EA%B8%B0>

 

 

 

 

출처: http://blackbull.tistory.com/8 [음머어's 까망별]

 

출처: <http://blackbull.tistory.com/8>

반응형

+ Recent posts