37. MySQL MariaDB 백업 & 복원하기
어떠한 원인에 의해 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을 사용합니다.
특수문자는 특수문자 앞에 \을 통해 구분할 수 있습니다.