* 백업과 복원
> 서버의 하드가 깨져서 중요한 데이터를 잃어버릴 경우를 대비해 백업과 복원은 중요.
별도의 디스크를 준비하기 어려우므로 폴더를 다른 디스크라고 생각하자.
쇼핑몰DB에 producttbl테이블에 3개의 데이터가 있는 것을 확인
1,2. workbench의 Navigator > MANAGEMENT > Data Export(데이터 내보내기) > Data Export 창이 열린다.
3,4. Shopdb 데이터베이스를 선택하면, 오른쪽에 테이블, 뷰 등이 보인다. 모두 체크.
5. Object to Export 도 모두 체크해서 스토어드 프로시저, 스토어드 함수, 트리거 등도 백업을 한다.
6. 백업될 경로와 아래 모두 체크 : 모든 내용 백업 설정
7. 다됐으면 startExport
Sql 문으로 백업이 되었다.
데이터를 삭제하는 사고가 났다고 가정하자.
복원을 시켜야하는데, 사용중인 DB를 복원하면 문제가 생길 수도 있으므로, 우선 현재 데이터베이스를 다른 데이터베이스로 변경해야한다. sys데이터베이스를 사용하자.
1. workbench의 Navigator > Data Import/Restore
2. 백업파일 선택
3. 타겟 데이터베이스 선택
4. 복원시작
잘 복원된 것을 확인할 수 있다.
* 상용 제품인 MySQL Enterprise Edition에는 MySQL Enterprise Backup 툴을 제공해주는데 이 툴을 사용하면 실시간으로 변경되는 내용들도 백업이 되는 기업 환경의 백업 툴을 제공한다.
Source 명령어를 통해서도 sql 파일을 실행시킬 수 있다.
Insert문에 values 없이 select문을 통해 데이터 복사가 가능하다. 물론, select문의 결과 열의 갯수는 insert 할 테이블의 열 개수와 일치해야한다.
Create select 문을 혼합하여 복사도 가능하다. Pk, fk 는 복사되지 않는다. 물론, select문의 결과 열의 갯수는 insert 할 테이블의 열 개수와 일치해야한다.
위처럼 여러 개 insert 한문장으로 가능함
대용량 테이블 삭제
7. delete : DML문인 delete는 트랜잭션 로그를 기록하는 작업 때문에 삭제시 오래걸림.
8. Drop : DDL문인 DROP문 DDL은 트랜잭션을 발생시키지 않는다.
9. truncate : 동작은 delete와 동일하지만, DDL 트랜잭션을 발생시키지 않아 빠름. 테이블 구조를 남겨 놓고 필요없다 여겨지는 테이블은 이걸로 삭제시킴.
7. 이미 membertbl에는 BBK 아이디가 있으므로 걍 insert문은 에러가 나고 나머지는 인서트가 되지 않는다.
11~13. Ignore를 붙여주면 하나가 오류가 나더라도 무시하고 나머지를 진행한다.
4. on duplicate key update : 기본키가 중복되면 update, 기본키가 없으면 insert. BBK는 원래 바비킴이였다. 수정됨. 동짜몽은 원래 없었으므로 insert
* 쿼리의 결과를 file로 저장
129. secure-file-priv : 보안을 강화하기 위해서 지정한 폴더 외에는 파일의 읽기/쓰기를 금지하며 MySQL5.1.17 이후부터 적용된다. 또한 이 옵션은 여러 개가 쓰여져 있어도 관계없지만, 제일 마지막의 것만 적용된다.
위처럼 한꺼번에 복사가 가능하다.
요런식으로 백업이 진행된다.
'SQL' 카테고리의 다른 글
[MySQL/MariaDB] 사용자 관리 (0) | 2021.03.06 |
---|---|
[MySQL] 모델링_워크벤치ERD (0) | 2021.03.05 |
[MySQL_MariaDB] 트리거 (0) | 2021.03.03 |
[MySQL_MariaDB] 스토어드프로시저_변수_if_case_while_에러처리_동적쿼리 (0) | 2021.03.02 |
[MySQL_MariaDB] 뷰 정리 (0) | 2021.03.01 |