db 백업하기

리눅스 2019. 1. 23. 16:22

출처: http://www.happyjung.com/lecture/50?sca=MySQL&page=3&device=mobile


Linux 서버에서 mysqldump 받기 +++++++++++++++++++

mysql DB를 백업하시려면 우선, 텔넷으로 웹서버에 접속을 한 다음 아래와 같이 명령을 넣어주시면 됩니다.

명령어 : mysqldump -h DB서버주소 -u 계정 -p DB명 > 저장할 파일명
(부등호의 방향에 주의합니다.)
위와 같은 명령을 실행하면 Database 안에 있는 모든 자료가 입력한 "파일명"을 가진 파일로 저장됩니다.


1.1 데이타베이스 전체
$> mysqldump -u[사용자아이디] -p 데이터베이스명 > 저장될 파일명
예1) mysqldump -uhappy -p db_happy > db.sql
예2) mysqldump --default-character-set=utf8 --set-charset --extended-insert=FALSE -uhappy -p db_happy > db.sql

1.2 테이블 전체
$> mysqldump -u[사용자아이디] -p 데이터베이스명 테이블명 > 저장될 파일명
예) mysqldump -uhappy -p db_happy tbl_happy > db_table.sql

1.3 특정 DB의 특정 테이블만 덤프
mysqldump -u mysql_admin -p edu a -w'no=>7 and no=<10' > edu_a_cond.sql

1.4. 디비 스키마(Schema)만 백업받기 (DDL)
mysqldump -u mysql_admin -p -d edu > edu_db.sql

1.5 특정DB의 틎정 테이블 스키마만 백업받기(DDL)
mysqldump -u mysql_admin -p -d edu a> edu_a_table.sql

[환경옵션]은 백업시에 어떤환경으로 백업을 할것인가에 대한 옵션이다.
--default-character-set=utf8 # 지정된 캐릭터셋을 기본으로함
--set-charset # 기본지정된 캐릭터셋(default-character-set)을 SET NAMES default-character-set로 설정
--opt # 메모리에 로드하지 않고 바로 화일로 덤프
--create-options # create문 백업시에 테이블 설정을 포함함.
--compatible=DB # 백업sql이 특정 db에 호환되도록 함 예) mysql40, mysql41, oracle, mssql
--extended-insert=FALSE # insert 문을 한줄씩 만든다
--result-file=file # 지정된 file 로 바로 넣음.. "> /BackUp/Mysql/Backup.sql" 과 같은 의미
--triggers # 트리거 덤프
--no-create-db # DB 생성정보를 뺌
--no-create-info # 테이블 생성정보를 뺌
--no-data # 테이블의 데이터를 뺌


2. mysqldump를 이용한 Backup

가장 널리 이용하는 방법이고 가장 확실한 방법이다.
다만 DB 데이터가 큰 경우 Backup 시간이 많이 걸릴수 있기 때문에
보통 크론등을 이용하여 주기적으로 새벽시간을 이용하여 백업받는다.

사용방법은 다음과 같다.
/usr/local/mysql/bin/mysqldump -uroot -pPassword [백업옵션] [환경옵션] > /BackUp/Mysql/Backup.sql
/BackUp/Mysql/ <== 임의로 정한 백업화일 위치이다.

[백업옵션] 의 내용은 아래의 4가지 형태만 알아도 될듯하다.
옵션들에 주의 해주면 다양한 형태로 백업을 받을수 있다.
--all-databases # mysql DB 전체를 백업다는것을 의미한다.
--databases DB1 DB2 DB3 # mysql 에서 특정 DB만 백업받는 것을 의미한다.
DB1 # DB1 이라는 DB 만 백업받을때 사용한다.
DB1 table1 # DB1 이라는 DB의 table1 이라는 테이블만 백업받을때 사용한다.

[환경옵션]은 백업시에 어떤환경으로 백업을 할것인가에 대한 옵션이다.
--default-character-set=utf8 # 지정된 캐릭터셋을 기본으로함
--set-charset # 기본지정된 캐릭터셋(default-character-set)을 SET NAMES default-character-set로 설정
--opt # 메모리에 로드하지 않고 바로 화일로 덤프
--create-options # create문 백업시에 테이블 설정을 포함함.
--compatible=DB # 백업sql이 특정 db에 호환되도록 함 예) mysql40, mysql41, oracle, mssql
--extended-insert=FALSE # insert 문을 한줄씩 만든다
--result-file=file # 지정된 file 로 바로 넣음.. "> /BackUp/Mysql/Backup.sql" 과 같은 의미
--triggers # 트리거 덤프
--no-create-db # DB 생성정보를 뺌
--no-create-info # 테이블 생성정보를 뺌
--no-data # 테이블의 데이터를 뺌
------------------------------------------------------------------------------------------

2.1 MySQL에 등록된 모든 DB 백업 받기.
# mysqldump --all-databases > mysql_all_db.dump

2.2 MySQL에 등록된 moffice21 과 sms DB 백업 받기.
# mysqldump --databases moffice21 sms > mysql_moffice21_sms_db.dump

2.3 MySQL에 등록된 moffice21 DB 백업 받기.
# mysqldump moffice21 > mysql_moffice21_db.dump

2.4 MySQL에 등록된 moffice21 DB의 approval table 백업 받기.
# mysqldump moffice21 approval > mysql_moffice21_approval_table.dump

2.5 MySQL에 등록된 moffice21 DB의 스키마만 백업 받기.
# mysqldump -d moffice21 > mysql_moffice21_schema.dump

2.6 MySQL에 등록된 moffice21 DB의 데이터만 백업 받기.
# mysqldump -t moffice21 > mysql_moffice21_data.dump

글구 옵션[Option] 설명.
--quick : C API의 mysql_use_result() 함수를 사용하므로 속도가 빠르다.
--add-drop-table : 덤프 결과에서 create table 앞에 drop table 절을 추가합니다.
--add-locks : 덤프하기 전에 LOCK table을 이용하여 테이블을 잠그고 덤프후 UNLOCK table을 실행합니다.
--extended-insert : insert 문 하나에서 모든 레코드를 삽입하는 insert 문을 생성합니다.
※ --opt : 위에 나온 옵션을 동시에 사용한 것과 같은 결과를 가져옵니다.
--no-date or -d : 테이블의 스키마만 덤프합니다.
--no-create-info or -t : create table을 출력하지 않고 데이터만 덤프합니다.
--opt 옵션을 주어서 백업하면 나중에 원복을 할때 기존 DB와 TABLE, DATA를 삭제하고 백업한 내용으로 Update를 합니다.
★ --opt 옵션과 -d or -t는 같이 사용할 수 있습니다.

----------------------------------------------------------------------------------
mysqldump -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// local 호스트가 아닌경우 호스트를 지정
mysqldump -h192.168.11.10 -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// 일반 port가 아닌 포트를 지정한 경우 socket 옵션
mysqldump --socket=(소켓모듈) -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// 테이블 구조만 백업받기
mysqldump -h host -u user -ppassword -d database > script.sql
----------------------------------------------------------------------------------



Windows 서버에서 mysqldump 받기 +++++++++++++++++++

1. 원격접속으로 서버에 접속

2. 시작 > 실행 > cmd (windows98 인경우 command)

3. 실행된 도스창에서 mysql > bin 폴더로 이동

4. mysqldump -udbID -p dbName > 백업파일.sql (엔터)
Enter password: dbPass (엔터)

5. 파일 생성을 확인


###### 데이타를 특정 캐릭터셋으로 백업받고자 할때 ###### (2007-06-01 추가)
## euc-kr 백업
$ mysqldump --default-character-set=euckr -hdb.com -udbID -p dbName > backup.sql
Enter password: dbPass (엔터)

$ mysqldump --default-character-set=euckr --extended-insert=FALSE -h주소 -u아이디 -p비밀번호 디비명 > db20101101.sql

## utf8 백업
$ mysqldump --default-character-set=utf8 -hdb.com -udbID -p dbName > backup.sql
Enter password: dbPass (엔터)

$ mysqldump --default-character-set=utf8 --extended-insert=FALSE -h주소 -u아이디 -p비밀번호 디비명 > db20101101.sql


<< 참조 >>
http://cafe.naver.com/bioms/3037
http://tong.nate.com/delusion/33780281
http://blog.naver.com/owner71?Redirect=Log&logNo=20045354948