컴퓨터 / Computer

MySQL/MariaDB Table 이동 시키기

공유지기 1 1,506 2022.09.18 23:26

mariadb_org_rgb_v_stroke.png 








MySQL이나 MariaDB에서 DB 복구를 하거나 특정 테이블만 이동을 시켜야 할 때가 있다. 보통은 dump 를 이용하여 복사나 복구를 할 수 있는데, 운영 중인 서비스를 중단할 수 없을때에는 상당히 난감하다. 그럴 경우에는 아래와 같이 해 볼 수 있다. (일단 전제조건은 MySQL/MariaDB에서 InnoDB 엔진을 사용하는 경우이다. 그리고 테이블별로 파일을 생성할 수 있게 설정한 경우이다. 테이블 파일은 확장자가 .ibd 이다. 특정 Database에서 이 파일을 복사하여 다른 Database 폴더에 넣어 인식하면 좋지만 그렇지가 않기에 이 절차를 거치게 한다. ) 


1. 새로운 DB 내지는 복구하려는 DB에서 임시 테이블을 생성한다. (기존 테이블이 깨졌을 경우 그걸 그대로 생성하면 자료가 다 날아갈 수 있다. 명심하자. DB에서는 삭제보단 추가를 하는게 후회가 적다.) 그리고 새 테이블을 생성하면 테이블 구조를 복사해야 하는데, 복사 과정이 힘들 수 있으니 phpmyadmin 같은 곳에서 테이블 구조가 같은 기존 테이블을 "구조"만 복사하는게 무척 좋다. 


2. 이때 새 DB에는 .frm과 .ibd가 생긴다. 아래와 같이 SQL 문을 실행하여 .ibd 파일을 삭제한다.


 alter table [테이블이름] discard tablespace; 


3. 그리고 기존에 가지고 있던 .ibd 파일을 새 DB 내지는 복구하려는 테이블이 있는 DB 폴더에 복사를 한다. 보통 cp 명령어로 복사를 하는데, 복사한 후 권한 설정까지 해야 한다. 그래서 아래와 같이 입력하면 좋다. 



 cp  /old/file.ibd /new/file.ibd && chown -R mysql:mysql file.ibd 


위 구문에 대해서 자세한 설명은 생략하겠다. 복사를 한 후 복사한 파일의 소유자와 권한을 mysql 로 바꾸어 주어야 한다.


4. 이제 새 DB에서 아래와 같이 SQL 문을 실행한다. 



 alter table [테이블이름] import tablespace; 


권한 설정이 제대로 되었으면 새 DB에 테이블 하나를 다 채운다. 


5. 오류 

작업 중 몇 가지 오류가 생기는 경우가 있다. 이제까지 경험한 것은 아래 두 가지이다. 


 - 권한 : chown -R mysql:mysql 을 실행하면 오류가 없어진다.

 - 인덱스 : primary 키를 제외한 나머지 키가 있으면 그 키값들은 모두 삭제하는게 좋다. foreign keys 라고 되어 있거나 multiple indexes 라는 단어가 포함된 경우가 그 경우이다. primary 키 외에 다른 키를 삭제하는 방법은 검색해 보시면 될 듯. 





Comments

사랑방지기 2022.09.19 00:40
https://dbknowledge.tistory.com/m/20


이게 foreign key 관련 글입니다.
리얼 통가죽 가파치 벨트 남성용 청바지 소가죽 혁띠
리플러무지니삭스 시스루 심플 주름 무지 데일리 양말
여성 여름 롱 랩스커트 1P A라인 데일리 쉬폰 긴치마
초등 미니 슬링백 캐주얼 학생 여행용 크로스백
클리어하드케이스 투명케이스 갤럭시 A7 2016 A710
이케아YUPPIENALLE 위우피에날레 휴대폰홀더 열쇠고리
팔걸이마우스패드 - 대의자 책상 팔받침대
MIPRO호환 강의용 공연용 무선 헤드마이크 숲 학원
3T점착데코타일 유광 대리석 마블그레이 WBTI6-06
멀티트롤리5단 이동식선반 세탁실수납장 바퀴달린틈새
소형 수납함 4x5/플라스틱 투명 조립식수납장 서랍장
(나룸) JSC-003 복을부르는풍수_액자 벽시계(무소음)
오랄비 청소년칫솔 4단계 8세이상 4개 크로스액션
샘표 양조간장 501 500ML + 1.7L
코카콜라 업소용 500ml 24PET
조지아 크래프트 블랙 800ml x 12PET대용량

고무줄 넓은생 노랑 1000 0159 7x1 500 1개입
칠성상회
당기는 1초 완성 리본장식 9cm 포장재료
칠성상회

맨위로↑