-
RDS에서 docker db에 import하기ETC/MacOS,Rancher 2025. 1. 21. 16:45
AWS RDS에서 Export 받아서 macOS상의 도커 컨네이너 MariaDB에 Import 하는 과정을 정리해 둔다.
예전에도 정리했는데 이런 저런 작업을 하다보니 내용이 정리가 잘 안된듯 하여 마무리 정리 함 하자!
1. 쉘스크립트 만들기
1.1. MariaDB 컨테이너 실행 스크립트 작성
- build-mariaDB.sh
#!/bin/sh IMAGE_NAME=mariadb IMAGE_VERSION=10.6.8 usage(){ if [ -z "$1" ]; then echo "사용법: $0 help|up|down|rm|createVolume" echo "명령어: ./build-mariaDB.sh up" exit fi } up() { echo "" echo "############### [RUN] - docker run ##### - STARTED" down echo "" rm echo "" echo "##### [RUN] - docker run $IMAGE_NAME-$IMAGE_VERSION ...options" docker run -d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=test1234@ \ -v ${PWD}/config/conf.d:/etc/mysql/conf.d \ -v ${PWD}/dump:/dump \ -v mariadb-data:/var/lib/mysql \ --name "$IMAGE_NAME-$IMAGE_VERSION" \ $IMAGE_NAME:$IMAGE_VERSION docker ps -a echo "############### [RUN] - docker run ##### - ENDED" echo "" } down() { echo "##### [STOP] - docker stop $IMAGE_NAME-$IMAGE_VERSION" docker stop "$IMAGE_NAME-$IMAGE_VERSION" } rm() { echo "##### [RM] - docker rm $IMAGE_NAME-$IMAGE_VERSION" docker rm "$IMAGE_NAME-$IMAGE_VERSION" } createVolume() { docker volume create mariadb-data docker volume ls } main() { local cmd=${1:-''} case "${cmd}" in "up") up ;; "down") down ;; "rm") rm ;; "createVolume") createVolume ;; "help"|*) usage exit ;; esac } main ${@}
- conf/conf.d/my.conf
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqldump] default-character-set = utf8mb4 [mysqld] require_secure_transport=OFF skip-character-set-client-handshake init_connect="SET collation_connection = utf8mb4_unicode_ci" init_connect="SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci" character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci default-time-zone = "+09:00"
1.2. RDS Export 스크립트 작성
- dump/dump-export.sh
mariadb-dump -h aaaaaaaaa.rds.amazonaws.com \ -u test-user \ -p \ --ignore-table-data=test-user.TEST_LOG \ --ignore-table-data=test-user.TEST_TOKEN \ test-user > nf_dump.sql echo "UPDATE TEST SET VIRTUAL_TEL_NO = '999-9999-9999';" >> nf_dump.sql echo "UPDATE TEST SET HP_NO = '999-9999-9999';" >> nf_dump.sql echo "UPDATE TEST SET TEL_NO = '999-9999-9999';" >> nf_dump.sql echo "UPDATE TEST_APPROVE SET HP_NO = '999-9999-9999';" >> nf_dump.sql echo "UPDATE ADVERTISE SET BILLING_KEY = NULL;" >> nf_dump.sql echo "UPDATE TEST SET HP_NO = '010-1111-2222', AUTH_CD = 'AUTHA12345' WHERE LOGIN_ID = 'test1';" >> nf_dump.sql echo "UPDATE MEMBER SET HP_NO = '010-1111-3333', AUTH_CD = 'AUTHA12345' WHERE LOGIN_ID = 'test2';" >> nf_dump.sql sed -i 's/DEFINER=[^*]*\*/\*/g' test_dump.sql # sed -i'' 's/DEFINER=[^*]*\*/\*/g' test_dump.sql
2. 데이터 베이스 컨테이너 실행
2.1. 도커 볼륨 생성
맥의 파일시스템이 리눅스와 달라서 맥 폴더 자체를 볼륨 마운트 하게 되면 캐릭터셋 에러등등 기타 많은 에러들이 발생한다.
볼륨을 생성하고 해야함
$ ./build-mariaDB.sh createVolume
2.2. 데이터 베이스 실행
$ ./build-mariaDB.sh up
3. 데이터 베이스 생성
3.1. 데이터 베이스 생성
- 실행된 도커 컨테이너 확인
$ docker ps -a
- 컨테이너 접속
$ docker exec -it mariadb-10.6.8 /bin/bash
- root 계정으로 접속
# 아래 실행 후 패스워드를 입력한다. $ mysql -u root -p
- test-db 생성
CREATE DATABASE `test-db`;
- test-user 사용자 생성
CREATE USER 'test-user'@'%' IDENTIFIED BY 'test1234@';
- 접속권한 부여
GRANT ALL PRIVILEGES ON `test-db`.* TO 'test-user'@'%'; flush privileges;
4. RDS에서 Export하고 Import하기
4.1. Export
- 컨테이너 접속
$ docker exec -it mariadb-10.6.8 /bin/bash
- 도커실행시 볼륨 마운트된 dump 폴더로 이동 후 RDS에서 DB를 export하는 쉘을 실행한다.
$ ls -al $ cd dump # 아래 실행 후 패스워드 입력 $ ./dump_export.sh
실행이 종료되면 test_dump.sql이 생성되어 있다. (/dump/backup/test_dump.sql)
4.2. Import
export 받은 `test_dump.sql` 덤프 파일을 root계정으로 접속해서 적용해 준다.
- root 계정으로 접속
# 아래 실행 후 패스워드를 입력한다. $ mysql -u root -p
- 덤프파일 적용
source /dump/backup/test_dump.sql
끝
'ETC > MacOS,Rancher' 카테고리의 다른 글
맥에서 방해금지 모드 설정 (0) 2025.01.17 Rancher/Docker/oracle 서버 실행하기 (4) 2024.11.09 Rancher - nginx 쉘로 띄워보기 (0) 2024.07.11 Mac에서 Python으로 된 thumbor Rancher로 기동 (0) 2024.04.12 Mac crontab 설정 (0) 2024.04.08