◘ MySQL 백업과 복구

 

 

▮ mysqldump


  mysqldump [옵션] db_name [table_name] > backup_filename

  mysqldump [옵션] --databases [옵션] db_name1, db_name2, .... > backup_filename

  mysqldump [옵션] --all-databases [옵션] > backup_filename

 

  [옵션]

     -A, --all-databases     : 모든 DB를 덤프

     --add-locks                : 덤프 전에 lock 덤프 후에 unlock

     --add-drop-table         : 덤프 이후에 출력물의 앞에 drop table 명령 추가 (복구 위해)

     -B, --databases          : 여러 DB를 동시에 덤프할 때 사용

     -f, --force                   : 에러를 무시

     -h, --host                   : 지정한 호스트의 데이터를 덤프

     -t                  : data만 덤프

     -d                 : 데이터를 제외하고 스키마만 덤프

     -p                 : 사용자의 암호를 지정

     -P                 : 포트번호 지정

     -u                 : 사용자명 지정

 

 

▮ Data만을 백업


  : LOAD DATA INFILE에서 사용한 파일의 경우 Data만 포함하는 것처럼 select 명령을 이용해서 Data만 포함된 형식으로 백업

 

   [문법]

       - SELECT column_name, output_type

        INTO OUTFILE '경로 및 파일명‘

        [FIELDS TERMINATED BY '종단문자‘]

        FROM table_name

        WHERE 조건구문 ;

 

ex) student table의 내용을 각 컬럼을 | 로 구분해서 성이 마씨인 학생만 ‘/root/student.dat'로 저장

 

 mysql> select *

       -> into outfile '/root/student.dat'

       -> fields terminated by '|'

       -> from student

       -> where sname like '마%';

 Query OK, 3 rows affected (0.00 sec)

  

 [root@linux /root]# cat student.dat

 012312|마량|남|3|물리|3.50

 013213|마초|남|2|화학|2.42

 013111|마대|남|1|생물|1.23

    

 ※ [= 외부 명령어]


    #  mysql -p -e "select * from school.student where sname like '마%';"

 

 

▮ 복구

  : 백업된 내용의 복구는 mysql 명령어나 mysqladmin 명령어를 사용함

 

  ex) root의 password가 12345인 상태에서 database1을 백업한 data.db라는 백업파일을 복구

 

   $ mysqladmin -u root -p12345 drop database1       // database1 삭제

   $ mysqladmin -u root -p12345 create database1   // database1 생성 

   $ mysql -u root -p12345 database1 < data.db        // data.db파일로 database1 복구

 ======================================================================================

백업파일을 생성할 위치로 이동한다.

 

MySQL 백업

mysqldump -u사용자명 -p패스워드 DB명 > 생성할 파일

 

예)

/usr/local/mysql/bin/mysqldump -uroot -p패스워드 system > backup.sql

 

가끔 한글이 깨져서 나올 때가 있다.

이럴 때는 character set 을 지정하여 백업파일을 만들면 된다.

 

예)

/usr/local/mysql/bin/mysqldump -uroot -p패스워드 system --default-character-set latin1 > backup.sql;

 

그럼 DB의 character set 은 어떻게 알까?

 

MySQL에 접속하신 다음 status 치면 된다.

 

...

Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
...

 

복구할때는

 

예)

mysqladmin -u root -p패스워드 create database명

mysql -u root -p패스워드 database명 < backup.sql

 

database 명을 지정하지 않고 전체를 다할 경우,,

 

-- 전체 백업
/usr/local/mysql/bin/mysqldump -u아이디 -p패스워드 --all-database > backup.sql

 

-- 전체 복원
/usr/local/mysql/bin/mysql -u아이디 -p패스워드 < backup.sql

 ==================================================================================

MySQL DUMP 백업 및 복원

 

백업/복구 모두 cmd모드에서 할것.

 

====백업====

 

1.cmd접속

-권한이 있는 계정으로 dump할것 .(보통 root계정)

 

2.명령어

-p[비밀번호]는 한칸 띄우지 말고 붙여서 할것.

 

3.저장위치를 파일명 앞에 적지않으면 현재 위치해 있는 폴더에 백업한다.

 

====복구====

 

1. Mysql 5.0 계정생성, 디비생성 참조.

-계정 및 계정에 권한을 주고 db까지 셋팅.

 

2.cmd접속

-권한이 있는 계정으로 dump할것 .(보통 root계정)

 

2.명령어(밑에)

-u[아이디] -p[비밀번호]는 한칸 띄우지 말고 붙여서 할것.

 

 

명령어

 

== 백업 ==


DB전체 덤프
mysqldump -u[아이디] -p[비밀번호] --all-databases > [저장될 파일명]

 

DB만 덤프
mysqldump -u[아이디] -p[비밀번호] [디비명] > [저장될 파일명]

 

테이블 구조만
mysqldump -u[아이디] -p[비밀번호] --no-data [디비명] [테이블명] > [저장될 파일명]

 

테이블구조를 제외한 데이터만 덤프
mysqldump -u[아이디] -p[비밀번호] --no-create [디비명] [테이블명] > [저장될 파일명]

 

==복구 ==


덤프파일을 이용한 복구
mysql -u[아이디] -p[암호][디비명] < [파일명]

 

패스워드 동시 입력시 복구 안되면
mysql -u[아이디] -p[공백][디비명] < [파일명]


Posted by 세모아