All Articles

MySQL database 백업하기, 복원하기

DB 백업하기, 복원하기

데이터베이스를 손쉽게 주고받고 복원해보자.

mysqldump -u 아이디 -p DB이름 > 파일명.sql
MySQL database 안에 있는 데이터 백업하기

mysql -u 아이디 -p DB이름 < 파일명.sql
.sql 파일로 만든 데이터를 데이터베이스 안에 넣기
첫 명령어가 mysql인 것과 화살표 방향 주의. 데이터 받을 땐 명령어 mysqldump 아님.

만약 덤프 뜬 파일을 db에 저장할 때 다음과 같은 오류가 발생한다면,

ERROR 1418 (HY000) : This function hasn none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

mysql 상에서 아래 명령어를 입력하면 해결할 수 있다. 1(on, true) 상태일 때만 함수를 생성할 수 있어서 생기는 에러다.

SET GLOBAL log_bin_trust_function_creators = 1;

.sql 파일로 models.py 만들기

.sql 파일만으로 models.py를 자동으로 생성할 수도 있다. 장고 공식 문서

python manage.py inspectdb > models.py

이렇게 models.py를 생성하면 파일 상단에 몇 가지 안내사항이 생긴다.

  • 테이블 순서는 (프로젝트 진행자의 의도에 맞게) 다시 조정해야 한다.
  • 모든 클래스에는 자동으로 Primary key 필드가 지정되며, (primary_key=True) 속성이 있는 필드가 pk로 지정된 필드다.
  • ForeignKey 필드와 OneToOne 필드의 on_delete 속성값을 다시 확인해야 한다.
  • 장고가 테이블을 생성하고 수정하고 삭제하게 하려면 각 클래스 안 Meta 클래스의 managed = False 설정을 지워준다.
  • 클래스 이름은 수정해도 되지만 테이블 이름(db_table 값)과 필드명은 수정하면 안 된다.

참고해서 models.py를 다듬으면 된다.

번외. DB schema가 든 sql 파일로 Aquery 생성하기

‘SQL로 테이블 생성’ 메뉴 선택 후 schema 내용만 dump한 sql 파일 내용을 긁어다 붙이면 끝. 테이블 간 연결까지 모두 자동으로 된다. 문명 짱!