이기종 Database를 마이그레이션 하는 방법 중 Mysql Workbench를 소개한다.
Mysql Workbench는 Mysql 에서 다른 Mysql 서버로 이관하는것 뿐만아니라 다른 종류의 DBMS에서 Mysql로 이관하는것도 지원하고 있다. 단, Target은 Mysql만 설정 가능하다.
여러가지 DBMS중 SQL Server의 Data를 Mysql로 이관하는 Test를 해보았다.
모든 데이터와 프로그램 소스가 완벽하게 이관되지는 않고 일부 에러나는 경우도 있으며 procedure나 function 등의 Object는 스크립트 추출정도는 지원하지만 실시간 적용은 하지않는것 같다.
상세한 내용은 공식문서를 참조할 수 있다.
그럼 마이그레이션 방법을 순차적으로 정리해 보았다.
1. 화살표 이미지를 클릭하거나 Database 메뉴에서 Migration Wizard… 항목을 클릭한다.
2. Start Migration을 클릭한다.
3. Source 서버 설정으로 SQL Server를 선택하고 Connection Method는 ODBC (native)를 선택하여 DB 접속정보를 입력한다.
4. Target 서버 설정으로 Mysql 서버의 접속 정보를 입력한다.
5. 데이터 Migration한 Schema를 선택한다.
6. 대상 Table을 선택한다. 프로시저나 펑션 등도 선택할 수 있지만 실제 migration시 생성은 되지않고 sql 스크립트 파일로는 생성이 되어 직접 적용을 해줘야 한다.
7. Migration 할 대상의 스크립트를 생성한다.
8. 오른쪽 위의 View를 클릭하여 Column Mappings를 선택하면 아래와 같이 컬럼 매핑정보를 볼수 있고 Target DB에 생성할 스크립트 수정이 가능하다.
9. Target DB에 schema 생성 옵션을 체크하고 SQL Script file도 체크하면 Next를 누르면 실제 Schema를 생성하고 SQL문으로 DDL문을 받을수 있다.
10. Table 생성이 정삭적으로 되었는지 로그를 확인할 수 있다.
11. Table 생성 결과를 확인 할 수 있으며 생성문을 수정하여 Recreate Objects를 누르면 재생성도 가능하다.
12. 마지막 Data Migration 작업으로 Online Copy of table data to target RDBMS를 선택하면 실시간으로 데이터가 Copy가 된다. Option 부분에서 UTF-8을 선택하면 한글이 깨져서 에러가 날 수 있으니 선택하지 않아도 될거 같다.
13. 최종 이관이 완료되면 로그로 이관된 내용을 확인할 수 있다. 내가 테스트한 결과는 전체 대상 Table 중 Table 1개는 실패하였다.
한개의 Table 마이그레이션을 실패한 이유
실제 SQL Server에서 numeric(20)으로 된 컬럼의 값이 아래와 같으며 숫자 컬럼은 Mysql로 마이그레이션시 Bigint 타입으로 변환한다. 이 과정에서 실제 데이터가 bigint의 자릿수를 넘어간다면 오류가 발생한다.
EX) SQL Server 데이터 : 99202012171409057319
bigint 최대 범위 : 18446744073709551615
MS-SQL에서 해당 컬럼을 decimal로 변환하였지만 조회시 bigint로 변환하여 조회되므로 varchar(20)으로 변환하여 데이터를 복사하였다.
'Database > Mysql' 카테고리의 다른 글
MariaDB root password 모를 때 변경 방법 (0) | 2023.12.11 |
---|---|
MySQL 파라메터 재기동 없이 설정 PERSIST 기능 (0) | 2023.07.04 |
Xtrabackup 설치 및 백업, 복구 방법 (0) | 2023.02.17 |
Mysql using 사용법 (0) | 2022.08.10 |
Mysql Fuction Based Index (함수기반인덱스) (0) | 2022.08.09 |
댓글