728x90

참 오랜만에 글을 적는 것 같으다..

오늘은 팀장님이 안 쓰는 데이터베이스 백업해 놓고 지우라고 하셔서

mysqldump 를 써서 백업을 받으려고 한다..

데이터가 3100만건이니, 내 개인서버에서 테수트 해보고 새벽에 일찍 나와서 지워야지 ㅋㅋ

일단 내 서버에서 mysqldump 요렇게 쳐보니 ..

[root@kjsic2 ~]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

옵션적고, 데이터베이스적고, 테이블적으면 된다고 되 있다.. 몰옵션을 원하면 --help 를 치라고 한다..

근데 쳤더니 ㅜㅜ 정말 한없이 나온다. 필요한것만 정리해 놔야겠다...

[root@kjsic2 ~]# mysqldump -u root -p -A >backup1.sql

가장 기본적인 백업이다..

-u 는 뒤에 유저명,

-p 패스워드

-A 전체패스워드 의미

> backup1.sql : 백업1.sql 에 저장해라..

: 전체백업을 의미한다.. 현재 db 에 저장된 모든 것을 저장하라는 의미 ..

[root@kjsic2 ~]# mysqldump -u root -p test >backup2.sql

나머지는 앞과 동일하고

test 라는 이름의 데이터베이스를 백업해라!

[root@kjsic2 ~]# mysqldump -u root -p test test_20110427 >backup3.sql

이 명령어는 test 라는 이름의 데이터베이스의

test_20110427 이라는 이름의 테이블을 백업하라는 의미이다..

[root@kjsic2 ~]# mysqldump -u root -p -d test test_20110427 >backup3.sql

데이터를 제외하고 DDL 스키마만 백업한다.

[root@kjsic2 ~]# mysqldump -u root -p -t test test_20110427 >backup3.sql

데이터만 백업한다.

[root@kjsic2 ~]# mysqldump -u root -p --lock_all_tables test test_20110427 >backup4.sql

덤프받는 동안에 DB접근을 금지시킨다.

[root@kjsic2 ~]# mysqldump -u root -p --add-locks test test_20110427 >backup4.sql

백업할때 항상 느끼는 거지만 전회사에서 사건 터진게 자꾸 기억에 남는다...

데이터가 약 천만건 되는 데이터를 크론을 이용해서 매일 백업을 받았었는데 ..

새벽4시에 항상 로드에버리지 (load average) 가 자꾸 치는 것이다...

그것만 그러면 상관없는데 ... 백업이 되는 사이에 데이터가 누락이 되거나 중복해서 들어가는 것이었다...

근데 알고 보니 문제가.. --add-locks 때문이었다... 해당옵션은 덤프전에 대상에 대해 lock 을 걸어놓고

덤프후에 unlock 을 시켜서 문제가 발생했었다...

서비스가 진행되고 있을 때는 --add-locks 옵션금지!

옵션만 또 주르륵 나열된거 나타내주고 마무리하자!!

728x90

+ Recent posts