ubuntu 서버에 있는 데이터를 가져와서 로컬서버로 실행시키고 싶을때 사용하는 명령어이다.
(MySQL WorkBench에서 파일을 받는 방법이 아닌 ubuntu에서 dump 한 방법을 이용하여 로컬로 받는 방법입니다.)
(해당 방법은 보안을 고려하지 않은 경우로 사용하는 방법이니 보안을 고려하는 분들은 해당 방법을 사용하는것에 대해 지양합니다.)
보통 MySQL 서버에 접속해서 쿼리를 이용해 dump 파일을 추출할 경우 --secure--file경로에만 저장이 가능하게 한다.
그러기에 해당 에러가 나오지 않는 다른 경로를 우회해야 하는데 ubuntu 최상단 경로에 dump하여 로컬로 보내는 방법이다.
해당 필자는 /tmp 경로로 저장하였다.
mysqldump -u <username> -p <database_name> <table_name> > /tmp/<dump_table_name>.xml
그리고 .sql로 저장하는 것 보단 .xml파일로 받는 것이 좋다. sql로 받을 경우 파일이 이상하게 저장하는 경우가 있어 xml로 받아 테이블 생성, 데이터를 넣어줘야 하는 insert into 쿼리문이 명확하게 보이기에 xml로 하는 편이 좋을 것이다.
dump 명령어 후 /tmp 디렉터리에 xml파일로 저장된 후 이제 로컬로 보내야 한다.
scp -i <pem 키 이름.pem> ubuntu@<ip_address>:/tmp/foods_backup.xml ~/<자신이 위치할 디렉토리>
해당 명령어를 입력후 성공하면 100% 전송되었고 용량은 얼마인지 속도는 얼마인지 알려준다.
dump 후 xml파일을 열게되면(필자는 VSCODE로 염) CREATE TABLE쿼리문을 복사하여(해당 TABLE이 없을시) 테이블 생생후
Lock TABLES 명령어를 사용하여 중간에 다른유저가 읽기 작업을 할 수 없게 차단후 INSERT INTO 쿼리를 주입하면 된다.
INSERT INTO 후 주입한 테이블을 조회하면 dump 데이터가 잘 들어간 것을 볼 수 있다.
'SQL 정리' 카테고리의 다른 글
MySQL 엔진 종류 (0) | 2025.02.12 |
---|---|
3개 이상 쿼리를 조회할때 (0) | 2024.08.08 |
COALESCE (0) | 2024.08.08 |
시간대를 나누는 쿼리 (0) | 2024.08.08 |
오프라인/온라인 판매 데이터 통합하기(IFNULL, UNION) (0) | 2024.08.06 |