MySQL

37. MySQL MariaDB 백업 & 복원하기

drizzle0925 2021. 10. 29. 17:26
728x90

어떠한 원인에 의해 DB서버는 언제든지 문제가 생길 수 있으므로 백업은 매우 중요합니다.

 

백업은 mysqldump를 이용했습니다.

이 방법은 innoDB 엔진에 대한 백업 방식이며, 논리 백업 방식을 사용하면서도 간단하게 실행할 수 있어 무난히 사용할 수 있습니다.

다만, 데이터 수가 많아질수록 속도가 매우 느려지는 단점을 지녔습니다.


테스트용 테이블 & 데이터 생성

테스트를 위해 테이블을 하나 생성합니다.

CREATE TABLE fruit(
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  price INT NOT NULL
);

 

fruit라는 테이블을 생성했습니다.

 

테스트를 위한 데이터를 삽입합니다.

INSERT INTO fruit(id, name, price) VALUES(1, 'apple', 1000);
INSERT INTO fruit(id, name, price) VALUES(2, 'banana', 1500);
INSERT INTO fruit(id, name, price) VALUES(3, 'grape', 2000);

 

데이터가 잘 등록됐는지 조회합니다.

SELECT * FROM fruit;


백업하기

1. 전체 데이터 베이스 백업

  1) mysqldump -u [아이디] -p [패스워드] -all-databases > [백업할 파일이름].sql

  2) mysqldump -u [아이디] -p -all-databases > [백업할 파일이름].sql

     [패스워드]

 

2. 하나의 데이터 베이스 백업

  1) mysqldump -u [아이디] -p [패스워드] [데이터베이스 이름] > [백업할 파일이름].sql

  2) mysqldump -u [아이디] -p [데이터베이스 이름] > [백업할 파일이름].sql

     [패스워드]

 

3. 특정 테이블만 백업하기

  1) mysqldump -u [아이디] -p [패스워드] [데이터베이스 이름] [테이블 이름] > [백업할 파일이름].sql

  2) mysqldump -u [아이디] -p [데이터베이스 이름] [테이블 이름] > [백업할 파일이름].sql

     [패스워드]

 

4. 테이블 구조만 백업 내용은 백업하지 않음(프로시저 없이 테이블만 백업)

  1) mysqldump -u [아이디] -p [패스워드] --no-data [데이터베이스 이름] > [백업할 파일이름].sql

  2) mysqldump -u [아이디] -p --no-data [데이터베이스 이름] > [백업할 파일이름].sql

     [패스워드]

 

5. 테이블 구조만 백업 내용은 백업하지 않음(프로시저, 함수 포함 테이블만 백업)

  1) mysqldump -u [아이디] -p [패스워드] --no-data --routines [데이터베이스 이름] > [백업할 파일이름].sql

  2) mysqldump -u [아이디] -p --no-data --routines [데이터베이스 이름] > [백업할 파일이름].sql

     [패스워드]


옵션

  • --no-data : 데이터 없이 구조만 백업
  • -all-databases : 모든 데이터베이스
  • --routines : 프로시저, 함수 포함

복구하기

1. 전체 데이터 베이스 복구

  1) mysql -u [아이디] -p [패스워드] -all-databases < [백업 파일이름].sql

  2) mysql -u [아이디] -p -all-databases < [백업 파일이름].sql

     [패스워드]

 

2. 일부 데이터 베이스 복구

  1) mysql -u [아이디] -p [패스워드] [데이터 베이스 이름] < [백업 파일이름].sql

  2) mysql -u [아이디] -p [데이터 베이스 이름] < [백업 파일이름].sql

     [패스워드]

 

3. 일부 테이블 복구하기

  1) mysql -u [아이디] -p [패스워드] [데이터 베이스 이름] < [백업 파일이름].sql

  2) mysql -u [아이디] -p [데이터 베이스 이름] < [백업 파일이름].sql

     [패스워드]

 

4. 데이터 없이 테이블 구조만 복구하기

  1) mysql -u [아이디] -p [비밀번호] [데이터베이스 이름] < [백업파일 이름].sql

  2) mysql -u [아이디] -p [데이터베이스 이름] < [백업파일 이름].sql


데이터 베이스 단위로 백업된 파일은 다른 데이터 베이스에도 넣을 수 있습니다.(복사, 붙여 넣기)

백업한 데이터는 복구 대상이 없으면 복구되지 않습니다.

백업할 때는 mysqldump, 복구할 때는 mysql을 사용합니다.

특수문자는 특수문자 앞에 \을 통해 구분할 수 있습니다.

728x90