1. 원격으로 DB(schema) 접속하여, 백업파일 생성하기
  1. AWS 같이, MySQL이 타 서버에 위치해있을 경우
    • mysqldump --host={백업할 schema ip주소} --port={백업할 schema port} --routines --triggers --bind-address=0.0.0.0 --user={백업할 schema user} --password={백업할 schema password} --databases {백업할 schema 명} > backup.sql


  2. MySQL 가 위치한 서버에 접속할 수 있을 경우
    • mysqldump --host={백업할 schema ip주소} --port={백업할 schema port} --routines --triggers --user={백업할 schema user} --password={백업할 schema password} --databases {백업할 schema 명} > backup.sql


  3. Docker container 내부에 MySQL이 위치해있을 경우
    • mysql container 에 접속하기
      ex) docker exec -it {mysql conatiner 명} bash
    • mysqldump --host={백업할 schema ip주소} --port={백업할 schema port} --routines --triggers --user={백업할 schema user} --password={백업할 schema password} --databases {백업할 schema 명} > backup.sql

 

 2.  DB(schema) 및 계정 생성하기
  • mysql -u root -p  # 새로운 mysql 접속하기
  • create database {데이터베이스명};  # 새로운 DB 생성
  • create user '{user 명}'@'%' identified by '{passwd}'; # 새로운 user 계정 생성
  • grant all privileges on *.* to '{user 명}'@'%' with grant option; # 새로 생성한 user 에 권한 부여하기
  • flush privileges;  # 부여한 권한 적용하기

 3. 백업한 파일로, DB(schema) 복구하기
  • mysql -u {user명} -p --database={데이터베이스명} < backup.sql

 


※ 백업시 발생하는 오류 해결방법

  1. ERROR 2003 (HY000): Can't connect to MySQL server on
  2. This function has 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)
    • (원인) function 을 생성할 수 있는 권한이 없어서 발생한 오류이다. 
    • (해결방법) log_bin_trust_function_creators 옵션을 활성화하여, 권한을 부여한다.
      권한 부여하는 방법은 아래 코드 참고한다.
SET GLOBAL log_bin_trust_function_creators = 1;
SET @@SQL_MODE='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;

 

 

반응형

+ Recent posts