* RDS 에서 내보내기 (백업)
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html

mysqldump 옵션

--set-gtid-purged=OFF 가 있어야 한다. 
    SESSION.SQL_LOG_BIN 항목과 SET @@GLOBAL.GTID_PURGED=''; 이 빠짐

   - 없으면 복원시 에러 발생
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation


 --routines : Functions, Procedures를 포함해서 백업



//========
// 백업

#!/bin/bash

now=$(date +%y%m%d-%H%M%S)
bak_file=dbbak-"$now"-0.sql

HOST=db address
USER=id
PASSWORD=pass
DATABASE=db
DB_FILE=${bak_file}
EXCLUDED_TABLES=(
db1
db2
db3
)

echo ${DB_FILE}


IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
   IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done

echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data   --triggers  --set-gtid-purged=OFF  ${DATABASE} > ${DB_FILE}

echo "Dump content"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers  --set-gtid-purged=OFF ${IGNORED_TABLES_STRING} >> ${DB_FILE}


read -p "Press Any Key..."



//========================
* DB 복원
mysql -u 유저 --password=패스워드 -h 주소 -D 디비이름 --show-warnings < %1

 

 

 

//=============

* RDS 에서 백업받은 것을 RDS로 복원하려고 하면 아래의 에러가 발생 한다.

    - 에러 메시지

ERROR 1227 (42000) at line 693: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

 

    - 원인

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED='';

 

   - 해결 방법

mysqldump 로 백업시 --set-gtid-purged=OFF 옵션을 사용한다.

 


//=========================
// 에러 처리

* 에러 메시지
ERROR 1227  Access denied; you need (at least one of) the SUPER privilege(s) for this operation
1054 - Unknown column 'ERROR (RDS): SUPER PRIVILEGE CANNOT BE GRANTED OR MAINTAINED' in 'field list'


* 해결 방법
- log_bin_trust_function_creators 값을 1로 설정

- 확인
show variables like '%log_bin_trust_function_creators%';

- 설정

* 파라미터 그룹 생성
- 현재 옵션에서 파라미터 그룹 을 사용하지 않고 있다면 생성
- 사용중이라면 사용중이 파라미터 그룹을 변경 (실시간 적용됨)


amazon RDS 콘솔 -> 파라미터 그룹 
-> '파라미터 그룹 생성' 선택
- 1개의 DB에 설정할수 있는 옵션 파라메터 그룹은 1개이다. 1개의 파라메터 그룹에 여러 설정을 넣어야 한다.

-> 생성된 파라메터 그룹 선택
-> log_bin_trust_function_creators 검색 -> 체크 -> '파라미터 편집' 선택
-> 1 선택 -> '변경 사항 저장' 선택


* 옵션 변경 설정
- 새로운 파라미터 그룹 을 지정
- 사용중인 파라미터 그룹 을 변경했다면 필요없는 과정

RDS 콘솔 -> 데이터베이스 -> 해당 데이터베이스 선택 -> '수정' 선택
-> 데이터베이스 옵션 변경


* 재부팅
- 사용중인 파라미터 그룹 을 변경했다면 필요없는 과정
RDS 콘솔 -> 데이터베이스 -> 데이터베이스 선택 -> 작업 -> 재부팅


Posted by 코덴스

댓글을 달아 주세요