반응형

MS Sql to MySQL 로 Migration 을 테스트로 진행해 봤다.


간단한 테스트라 Index , View, SP 등을 만들어서 옮기지 않고, 테이블 2개 4만5천건?정도의 데이터를 옮겨봤다.


MySQL WorkBench 를 이용하였으며..

짧게 진행한 부분이라 많은 부분을 공유하기 보다는 어떻게 진행하였고..


문제점에 대해서 해결한 정도다.


여기서 발생한 문제는 lower_case_table_names 가 0 으로 지정되어 있어서 소문자로 테이블이 생겨 테이블이 없다는 에러이었으며,

2번째는 언어 character set 이 맞지 않아 문제가 발생 하였다. (보통 깨져서 들어가기 마련인데...전혀 들어가지 않았다.)


아래는 하나하나 캡쳐한 것이다.


1. MS Sql Server 2008  (Source DB)

2. My SQL 5.7.12    (Target DB)

3. Windows 환경

4. MySQL Workbench 6.3.8 (단순 zip포터블이 아닌 설치형)


1. Source DB 설정 부분이다.

  MS SQL Server라서 ODBC 설정이 필요하다. ODBC 설정은 검색하면 잘 나와 있으니 검색하기 바란다.



2. Target DB(MySQL) 

  둘다 Local 에 설치하였지만 Host에서 접속만 가능하다면 원격지에 있는 것으로 IP 설정하면 된다.

  실제로 원격지에 있는 곳에 설정도 해 보았다.



3. Connection Test



4. Source DB에서 어떠한 DB 를 옮길 것인지 선택



5. 다시 한번 Connection 확인



6. 어떠한 테이블 / 뷰 등을 옮길 것인지 선택



7. 이전 선택한 Type들에 대해 Show selection 을 선택하면 원하는 테이블도 직접 선택이 가능한 옵션



8. 선택한 object들에 대해 체크 및 SQL 생성




9. Migration 대상 표시 및 세부 설정 지정



10. Target DB(MySQL)에 테이블 생성 및 SQL Schema Script 생성



11. 생성 되는 동안 상태 표시



12. 완료 현항 표시

  - 만약 에러 발생시 우측 화면에 오류 스크립트 표시



13. Migration Data에 대한 어떤 형태로 진행할 것인지 선태

  - Online의 경우 바로 Target DB에 생성

  - batch file 의 경우 batch file(bat) 파일로 생성되며 바로 Online DB로 Migration 은 되지 않음..

   단, batch file 을 실행 할 경우 해당 Online (Target DB)로 Migration 진행

  - 위와 동일한 개념으로 shell script 파일로 생성도 가능


  - 하단의 Option 의 경우 Migration 진행하기 전 해당 Table 을 Truncate 여부 등을 선택 가능

  - (Driver seeds data already encoded as UTF-8 )encoded를 이미 UTF-8일 경우 dump 하는 경우 (체크 하였더니 한글 부분은 깨져서 표시 되는것을 확인 -> 미체크로 한 후 진행)

  - 이외의 것들은 테스트 해 보지 않아서 잘 모르겠네요.ㅠ



14. 오류 발생1. 

  - 해당 오류의 경우 Data Migration fair 된 경우로 생성된 테이블명이 달라서 발생된 문제이다.

  - MySQL lower_case_table_names 이 0으로 되어 있어서 리눅스 mysql의 경우(My.cnf) 1로, MS 윈도우 내의 MySQL의 경우(My.ini) 2로 변경 후 MySQL 재시작을 해야한다.


   오류 발생2.

  - MySQL이 기본으로 설치하여 Latin1 으로 설정되어 있었던 부분을 확인

  - 그래서 Latin1 을 utf8mb4 로 변경 및 테이블도 character 변환 후 작업 하였더니 제대로 동작하였다.


15. 완료 후 해당 테이블에 대한 데이터 결과 및 완료 화면




이렇게 MS SQL to MySQL Migration 을 진행해 보았다.

비록 MySQL Workbench 를 이용하였으며, 단순 테이블 / 데이터 이관이었지만 추후에 필요시 해당 내용을 바탕으로 진행 된다면

분명 좋은 결과를 가져올 것이라고 예상한다.


반응형
  1. goblinmaniac 2017.05.16 10:18

    정보글 잘 보았습니다. 혹시 workbench로 진행하면 online상태에서 이관이 가능한건가요...??

    • Louis.Kim 2017.05.16 17:51 신고

      네, 해당 테스트는 online상태에서 진행 하였습니다.

  2. Louis.Kim 2019.08.05 11:35 신고

    추가로 Connection Test 이후에 이관할 테이블이 보이지 않는다면, MS sql에서 권한 체크해 보시기 바랍니다.
    이번에 다른 업무로 진행하던 도중 Connection 처리 잘 되었지만 이후에 테이블이 보여지지 않아, 확인한 결과(에러로그 미존재) 필요 권한 문제인 것으로 해결 하였습니다.

    정확한 필요 권한은 확인하지 못하였고, SA 권한급으로 진행하여 해결 하였습니다.

+ Recent posts