ETC/MacOS,Rancher

Rancher/MariaDB Dump file import

건담아빠 2022. 10. 6. 10:49


개발 GUI 툴 및 MySQL Workbench 툴 등으로 MariaDB에서 내려받은 덤프파일을 MariaDB에 Import 하다보니 MyriaDB버전 과 툴에서 제공하는 MySQL 버전이 다르고 여러 이유에 의해서 테이블 데이터, 테이블 생성, 뷰생성등에 문제가 발생 하였다.
그래서 문제가 없고 제일 간단한 방법인 콘솔에서 덤프파일을 Import 해보려고 한다.

아래와 같은 스크립트로 데이터 베이스 생성되어 있다는 전제

CREATE DATABASE `test_db`;
CREATE USER 'test-user'@'%' IDENTIFIED BY 'test1234@';
GRANT ALL PRIVILEGES ON `test_db`.* TO 'test-user'@'%';
flush privileges;

DEFAULT CHARACTER SET을 다르게 사용한다면 따로 설정해 줘야 한다.

안그럼 덤프파일 받아오거나 할때 코멘트에서 한글깨짐과 동시에 난리 부르스가...

아래 좀더 확인이 필요함..!

ALTER DATABASE gobang DEFAULT CHARACTER SET utf8mb3;

아래로!

ALTER DATABASE gobang DEFAULT CHARACTER SET utf8mb4;

 

케릭터셋 여러가지 확인방법

SELECT DEFAULT_CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'gobang';

SELECT TABLE_COLLATION, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'gobang';

SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = "gobang"
AND TABLE_NAME = "CONTRACT";

SHOW GLOBAL VARIABLES WHERE variable_name LIKE 'character\_set\_%' OR variable_name LIKE 'collation%';
SHOW GLOBAL VARIABLES WHERE variable_name LIKE 'character%' OR variable_name LIKE 'collation%';

 

Import 시도

아래와 같이 실행하면 어떠한 이유에 의해서인지 실행되지 않았다. (시간상 원인파악은 생략)

nerdctl exec c944e23202cc mysql -uroot -p<패스워드> test_db < ./Dump20221005_dev.sql

컨테이너 외부의 파일을 실행함과 시간적인 제약이 있을것으로 생각되어 컨테이너 안에 덤프파일을 넣어두고 실행하면 될것 같아서 아래와 같이 시도해 보았다.

Import 성공

아래 와 같은 방식으로 컨테이너를 기동하게 되면 volumn이 mount되어 있는데 Dump20221005_dev.sql 덤프 파일을 해당위치 (/data/rancher/mysql) 에 이동시키고 `nerdctl exec -it c944e23202cc /bin/bash` 명령어를 통하여 컨테이너 내부에 접속하여 공유된 경로(/var/lib/mysql)의 Dump20221005_dev.sql 파일을 import 실행하면 된다.
https://dchkang83.tistory.com/66?category=1069985

 

Rancher/MariaDB, MySQL 컨테이너 기동

기본 $ nerdctl run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<패스워드> mysql:latest MySQL Run $ nerdctl run -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=<패스워드> mysql:latest MariaDB Run..

dchkang83.tistory.com

$ nerdctl exec -it c944e23202cc /bin/bash
$ mysql -uroot -p<패스워드> test_db < ./Dump20221005_dev.sql


혹시 모르니 아래 명령어로 컨테이너 로그도 확인하면서 진행하면 좋을것 같다.

$ nerlctl logs -f c944e23202cc

 

source로 진행하는 방법

source /var/lib/mysql/test_db_dump.sql

참조: https://dchkang83.tistory.com/182

 

aws db에서 dump Rancher에서 import

로컬에서 db 환경을 구성하다 보니 엔코딩 관련된 문제들이 많이 발생한다. 개발할 시간도 부족한데 이런데 시간 허비하는게 너무 아깝게 생각되었다. 이번에 정리해 두고 개발 외적인 곳에 시

dchkang83.tistory.com