티스토리 뷰

DEVELOPE/MYSQL&MARIADB

MYSQL 백업과 복구

소찾나 2017. 2. 6. 16:36
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MySQL 백업과 복구 

MYSQL 백업과 복구

 

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  ----> formtec 백업방식    mysqldump -uuser -ppw works > works.sql //  디비백업


/usr/local/mysql/bin/mysqldump -uroot -p패스워드 system > backup.sql  ----> formtec 백업방식    mysqldump -uuser -ppw works faq > works.sql //  테이블 백업


우편번호 txt 파일 가져와서 입력시


LOAD DATA local INFILE './Busan/1.txt' INTO TABLE new_zipcode_20131203 FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' ;



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 


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


이럴 때는 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[공백][디비명] < [파일명]




댓글