서버 패치 등의 이유로 테이블을 update 하는 경우가 있는데 작업 전 테이블을 백업하는 습관을 들이면 좋다. 그래야 실수를 하거나 패치가 제대로 안 됐을 때 롤백이 가능하다.
이 글은 MySQL을 기준으로 작성하긴 했지만 대부분의 RDBMS에서도 똑같이 적용할 수 있는 방법이다.
RDBMS 테이블 백업하기
1. GUI (HeidiSQL)에서 테이블 백업
HeidiSQL 같은 GUI 툴을 쓰면 이럴 때 좀 편하다. 간단한 작업들은 마우스 클릭으로도 동작이 되기 때문인데 테이블 백업도 마찬가지다.
- 관련 글 : HeidiSQL 외부 접속 허용 방법
original_table을 백업해보자.

테이블 우클릭 > 새로 생성 > 테이블 복사 를 선택한다.

복사할 열과 인덱스, 데이터를 선택할 수 있다. 기본적으로 모두 체크되어 있으니 백업 테이블 이름만 원하는대로 수정해서 확인을 누르면 끝이다.

백업 테이블이 생성됐다. 기존 인덱스까지 그대로 옮겨줬다.

이렇게 백업해두고 오리지널 테이블에 변경 작업을 한 뒤 문제가 있으면 오리지널 테이블의 이름과 백업한 테이블의 이름을 바꾸면 된다. 아래 테이블 정보에서 이름을 바꾸고 엔터를 치면 된다.

2. SQL로 테이블 백업
CLI 환경에서는 SQL 문으로 하면 된다.
우선 인덱스까지 그대로 가져오기 위해 original_table 테이블과 동일한 테이블을 생성한다.
CREATE TABLE original_table_copy LIKE original_table;
그리고 그 안에 있는 데이터를 모두 insert 한다.
INSERT INTO original_table_copy SELECT * FROM original_table;
테이블 백업이 완료된다.
백업 테이블 복구를 위한 테이블 명 변경은
RENAME TABLE original_table TO original_table_bak;
RENAME TABLE original_table_copy TO original_table;
이런 식으로 rename 구문을 쓰면 된다.