Source DB 및 Target DB 접속 설정
    • PDF

    Source DB 및 Target DB 접속 설정

    • PDF

    기사 요약

    마이그레이션 전에 Source DB와 Target DB의 설정을 확인하고 데이터베이스 연결을 위한 접속 정보를 설정합니다. 다음 중 마이그레이션하려는 상황에 알맞은 경우를 선택하여 설정 방법을 확인해 주십시오.

    사전 준비

    Source DB와 Target DB를 연결하기 전에 다음 사전 작업을 차례대로 실행해 주십시오.

    1. 네이버 클라우드 플랫폼 콘솔에서 Source DB가 생성된 VPC에 Target DB를 생성해 주십시오.

      • Target DB는 Source DB와 DBMS 종류가 같아야 합니다.
      • Source DB와 Major 버전이 동일한 DBMS 버전이 권장됩니다.
      • Target DB 생성 방법에 대한 자세한 내용은 Cloud DB for MySQL 시작을 참고해 주십시오.
    2. Source DB 복제를 위해, Source DB의 바이너리 로그 설정을 확인해 주십시오.

      • 필수 사항: 바이너리 로그 활성화
        • log_bin의 값이 ON으로 표시되는지 확인
        • server_id 값 지정
      • 권고 사항: 바이너리 로그 보관 기간을 5일 이상으로 설정
        • 설정 변수 expire_logs_days 또는 binlog_expire_logs_seconds의 값 설정
        • 바이너리 로그 보관 기간이 마이그레이션 진행 시간보다 짧을 경우 복제 진행 시 아래와 같은 에러 메시지가 출력됩니다. 이 경우 Source DB 설정 변경 이후 마이그레이션 삭제 및 재생성이 필요합니다.
          Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
    3. Source DB의 Character Set/Collation 및 Definer 계정을 점검해 주십시오.

      • Cloud DB for MySQL은 [utf8, utf8mb4, euckr] Character Set에 대해서만 지원합니다. Source DB상에 이 외의 설정으로 되어 있다면 변경 후 진행해 주시기 바랍니다.
      • Source DB에서 사용하는 Collation이 Target DB에서도 지원하는지 확인해 주시기 바랍니다.
        ex) 8.0 이전 버전에서는 utf8mb4_0900_ai_ci가 지원되지 않습니다.
      • Source DB 상에서 사용 중인 Definer 계정은 계정명과 허용 호스트명이 동일하게 Cloud DB for MySQL에 등록되어 있어야 마이그레이션 진행이 가능합니다.
      • Source DB Character Set 점검 쿼리
      SELECT character_set_name
      FROM information_schema.TABLES T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA
      WHERE CCSA.collation_name = T.table_collation AND TABLE_SCHEMA NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND CCSA.character_set_name NOT IN ( 'utf8', 'utf8mb3', 'utf8mb4', 'euckr' );
      
      SELECT DEFAULT_CHARACTER_SET_NAME
      FROM information_schema.SCHEMATA T
      WHERE SCHEMA_NAME NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND DEFAULT_CHARACTER_SET_NAME NOT IN ( 'utf8', 'utf8mb3', 'utf8mb4', 'euckr');
      
      • Source DB Collation 점검 쿼리
      SELECT DISTINCT (table_collation) as table_collate FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.views WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (DATABASE_COLLATION) as table_collate FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 
      SELECT DISTINCT (COLLATION_CONNECTION) as table_collate FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      SELECT DISTINCT (DATABASE_COLLATION) as table_collate FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      SELECT DISTINCT (DEFAULT_COLLATION_NAME) as table_collate FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
      
      • Source DB Definer 계정 점검 쿼리
      SELECT DEFINER FROM information_schema.ROUTINES
      WHERE ROUTINE_SCHEMA NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND SECURITY_TYPE = 'DEFINER';
      
      SELECT DEFINER FROM information_schema.VIEWS
      WHERE table_schema NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) AND SECURITY_TYPE = 'DEFINER' ;
      
    4. (MySQL 5.7 에서 8.0 으로 mysqldump 방식 이용하는 경우) sql_mode 를 점검해 주십시오.

      • MySQL 5.7 버전 및 MariaDB 10.1.7 이상 버전에서 Default 값으로 지원하는 sql_mode='NO_AUTO_CREATE_USER' 설정은 MySQL 8.0 버전부터는 지원하지 않습니다.
      • 아래 점검은 mysqldump 방식으로 진행시 필요합니다. mydumper 방식을 통해 마이그레이션 진행 시 sql_mode 는 Target DB 설정을 따라가므로 별도 점검이 필요치 않습니다.
      • Source DB에 해당 설정이 적용되어 있다면 아래 내용을 참고하여 조치 후 마이그레이션 진행이 필요합니다.
      • sql_mode 설정 점검 쿼리
      SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
      FROM information_schema.routines
      WHERE ROUTINE_SCHEMA NOT IN ('sys','mysql');
      
      SELECT TRIGGER_SCHEMA, TRIGGER_NAME, sql_mode
      FROM information_schema.triggers
      WHERE TRIGGER_SCHEMA NOT IN ('sys','mysql');
      
      SELECT @@sql_mode ; 
      
      • sql_mode 호환성 이슈 조치 방법
       - Source DB > [DB Config 관리] 에서 sql_mode='NO_AUTO_CREATE_USER'  제거 설정
       - Source DB > Procedure, Function, Trigger 를 삭제 후 재생성  
       1. Procedure, Function, Trigger 에 대해서만 drop 및 create 구문이 생성된 sql 파일 생성
          $ mysqldump -u {사용자명} -p -h {Source DB 호스트명} --set-gtid-purged=OFF --routines --triggers  --no-create-info --no-data --no-create-db --add-drop-trigger {사용자 DB} > backup.sql
       2. backup.sql 파일내 NO_AUTO_CREATE_USER 구문 모두 제거
          ex) SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'  => SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
       3. 적용하기
          $ mysql -u {사용자명} -p -h {Source DB 호스트명} {사용자 DB} < backup.sql          
      

    같은 VPC 안에서 마이그레이션

    Source DB가 네이버 클라우드 플랫폼 내 VPC에 존재하고, Target DB를 같은 VPC에 생성하는 경우에 접속 정보를 설정하는 방법을 설명합니다.
    다음 절차를 차례대로 실행해 주십시오.

    1. Target DB 접속 설정

    Target DB에서 Source DB로 접속할 수 있도록 Target DB 서버에 적용된 ACG의 Outbound 규칙을 설정합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. ACG 설정에 관한 자세한 내용은 Server 사용 가이드의 ACG를 참고해 주십시오.

    ACG 규칙을 설정하는 방법은 다음과 같습니다.

    1. Target DB의 상세 정보에서 Target DB 서버에 적용된 ACG를 확인해 주십시오.
    2. ACG 항목의 i-dms-window을 클릭하여 ACG 화면으로 이동해 주십시오.
    3. Target DB에 적용된 ACG를 클릭한 후 [ACG 설정] 버튼을 클릭해 주십시오.
    4. [Outbound] 탭을 클릭해 주십시오.
    5. 다음 규칙을 입력한 후 [추가] 버튼을 클릭해 주십시오.
      • 프로토콜: TCP 선택
      • 목적지: Source DB가 생성된 서브넷의 IP 주소 범위 입력(<예시> 10.0.0.0/24)
      • 허용 포트: Source DB 접속 포트 입력
    6. [적용] 버튼을 클릭해 주십시오.

    2. Source DB 접속 설정

    Source DB의 접속 정보를 설정해야 합니다. Source DB에 적용된 ACG 규칙과 ACL을 설정해 주십시오.

    Source DB 서버 ACG 설정

    • Source DB 서버의 방화벽(ACG)을 설정하여 Target DB에서 접속할 수 있도록 설정해야 합니다. 다음 트래픽을 허용하도록 Source DB 서버에 적용된 ACG의 Inbound 규칙을 수정해 주십시오.(ACG 참고)
      • 프로토콜: TCP
      • 접근 소스: Target DB가 생성된 서브넷의 IP 주소 범위(<예시> 10.0.0.0/24)
      • 허용 포트: Target DB 접속 포트

    • 아래와 같은 경우 Source DB에 Outbound를 설정해주십시오.
      • Source DB가 ACG가 아닌 NACL 정책을 사용하는 네이버 클라우드 플랫폼 서버
      • 네이버 클라우드 플랫폼 서버가 아닐 경우
    참고
    • ACG는 stateful을 따르기 때문에 outbound를 별도로 설정하지 않아도 가능합니다.
    • Network ACL은 stateless를 따르기 때문에 outbound를 설정해야 합니다.

    Source DB 계정 생성 및 ACL 설정

    Source DB와 Target DB를 연결하기 위해 다음과 같은 계정을 생성하고 ACL에 추가해 주십시오.(DB User 관리 참고)

    Private Subnet / Public Subnet 내 Target DB로 마이그레이션

    Source DB와 Target DB의 도메인이 다르고, Target DB를 Private Subnet에 생성하는 경우에 접속 정보를 설정하는 방법을 설명합니다.
    Target DB가 Public Subnet으로 생성된 경우에도 아래 방법으로 진행이 가능합니다.
    다음 절차를 차례대로 실행해 주십시오.

    1. Target DB 접속 설정

    Target DB의 접속 정보를 설정합니다. 다음 절차를 차례대로 진행해 주십시오.

    1. NAT Gateway 생성

    Target DB 서버와 연결할 NAT Gateway를 생성합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. NAT Gateway 생성에 관한 자세한 내용은 VPC 사용 가이드의 NAT Gateway 생성을 참고해 주십시오.

    NAT Gateway를 생성하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. NAT Gateway 메뉴를 클릭해 주십시오.
    3. [NAT Gateway 생성] 버튼을 클릭해 주십시오.
    4. NAT Gateway 이름을 입력한 후, Target DB가 생성된 VPCZone을 선택해 주십시오.
    5. [생성] 버튼을 클릭해 주십시오.
    6. 생성한 NAT Gateway의 IP주소를 확인해 주십시오.

    2. Route Table 연결

    Route Table을 생성하고 라우팅 규칙에 NAT Gateway를 추가합니다. Target DB가 존재하는 서브넷에 Route Table을 적용합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. Route Table에 관한 자세한 내용은 VPC 사용 가이드의 Route Table을 참고해 주십시오.

    Route Table을 적용하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. Route Table 메뉴를 클릭해 주십시오.
    3. [Route Table 생성] 버튼을 클릭해 주십시오.
    4. Route Table 이름을 입력하고 VPCSubnet 지원 유형을 선택해 주십시오.
      • VPC: Target DB가 생성된 VPC 선택
      • Subnet 지원 유형:
        • Target DB 가 Private Subnet인 경우 사설 선택
        • Target DB 가 Public Subnet인 경우 공인 선택
    5. [생성] 버튼을 클릭해 주십시오.
    6. 생성한 Route Table을 클릭하고 [Route 설정] 버튼을 클릭해 주십시오.
    7. 다음 정보를 입력하고 [생성] 버튼을 클릭해 주십시오.
      • Destination: Source DB에 할당된 Public 도메인의 IP 주소 입력(<예시> 101.101.220.90/32)
      • Target Type: NATGW 선택
      • Target Name: 1. NAT Gateway 생성에서 생성한 NAT Gateway 선택
    8. [확인] 버튼을 클릭해 주십시오.
    9. Route Table을 클릭하고 [연관 Subnet 설정] 버튼을 클릭해 주십시오.
    10. Subnet 이름에서 Target DB가 생성된 서브넷을 선택하고 [생성] 버튼을 클릭해 주십시오.
    11. [확인] 버튼을 클릭해 주십시오.

    3. Target DB 서버 ACG 설정

    Target DB에서 Source DB로 접속할 수 있도록 Target DB 서버에 적용된 ACG의 Outbound 규칙을 설정합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. ACG 설정에 관한 자세한 내용은 Server 사용 가이드의 ACG를 참조해 주십시오.

    ACG 규칙을 설정하는 방법은 다음과 같습니다.

    1. Target DB의 상세 정보에서 Target DB 서버에 적용된 ACG를 확인해 주십시오.
    2. ACG 항목의 i-dms-window을 클릭하여 ACG 화면으로 이동해 주십시오.
    3. Target DB에 적용된 ACG를 클릭한 후 [ACG 설정] 버튼을 클릭해 주십시오.
    4. [Outbound] 탭을 클릭해 주십시오.
    5. 다음 규칙을 입력한 후 [추가] 버튼을 클릭해 주십시오.
      • 프로토콜: TCP 선택
      • 목적지: Source DB의 Public 도메인 IP 주소 입력(<예시> 101.101.220.90/32)
      • 허용 포트: Source DB 접속 포트 입력
    6. [적용] 버튼을 클릭해 주십시오.

    2. Source DB 접속 설정

    Source DB의 접속 정보를 설정해야 합니다. Source DB에 적용된 ACG 규칙과 ACL을 설정해 주십시오.

    Source DB 서버 ACG 설정

    • Source DB 서버의 방화벽(ACG)을 설정하여 Target DB에서 접속할 수 있도록 설정해야 합니다. 다음 트래픽을 허용하도록 Source DB 서버에 적용된 ACG의 Inbound 규칙을 수정해 주십시오.
      • 프로토콜: TCP
      • 접근 소스: 1. NAT Gateway 생성에서 생성한 NAT Gateway의 IP 주소
      • 허용 포트: Target DB 접속 포트

    • 아래와 같은 경우 Source DB에 Outbound를 설정해 주십시오.
      • Source DB가 ACG가 아닌 NACL 정책을 사용하는 네이버 클라우드 플랫폼 서버
      • 네이버 클라우드 플랫폼 서버가 아닐 경우
    참고
    • ACG는 stateful을 따르기 때문에 outbound를 별도로 설정하지 않아도 가능합니다.
    • Network ACL은 stateless를 따르기 때문에 outbound를 설정해야 합니다.

    Source DB 계정 생성 및 ACL 설정

    Source DB와 Target DB를 연결하기 위해 다음과 같은 계정을 생성하고 ACL에 추가해 주십시오.

    Source DB가 Private Subnet인 경우에 대한 마이그레이션

    Source DB와 Target DB가 서로 다른 VPC에 있고, Source DB를 Private Subnet에 생성하는 경우에 접속 정보를 설정하는 방법을 설명합니다.

    다음 절차를 차례대로 실행해 주십시오.

    1. VPC Peering 생성

    Source DB와 Target DB 간 TCP 통신이 이루어질 수 있도록 VPC Peering을 구성하는 방법을 설명합니다. TCP는 양방향 통신 기반이므로 Source DB가 속한 VPC, Target DB가 속한 VPC 각각을 요청 VPC로 한 두 개의 VPC Peering 상품을 생성해 주어야 합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. VPC Peering 생성에 관한 자세한 내용은 Networking 사용 가이드의 VPC Peering을 참조해 주십시오.

    VPC Peering을 구성하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. VPC Peering 메뉴를 클릭해 주십시오.
    3. [VPC Peering 생성] 버튼을 클릭해 주십시오.
      • 요청 VPC: Target DB가 속한 VPC 선택
      • 수락 VPC: Source DB가 속한 VPC 선택
    4. [생성] 버튼을 눌러 주십시오.

    양방향 통신을 위하여 추가적인 VPC Peering 생성이 필요합니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. VPC Peering 메뉴를 클릭해 주십시오.
    3. [VPC Peering 생성] 버튼을 클릭해 주십시오.
      • 요청 VPC: Source DB가 속한 VPC 선택
      • 수락 VPC: Target DB가 속한 VPC 선택
    4. [생성] 버튼을 눌러 주십시오.

    2. Target DB 접속 설정

    Target DB 서버 ACG 설정

    Target DB에서 Source DB로 접속할 수 있도록 Target DB에서 적용된 ACG의 Outbound 규칙을 설정합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. ACG 설정에 관한 자세한 내용은 Server 사용 가이드의 ACG를 참조해 주십시오.

    ACG 규칙을 설정하는 방법은 다음과 같습니다.

    1. Target DB의 상세 정보에서 Target DB 서버에 적용된 ACG를 확인해 주십시오.
    2. ACG 항목의 i-dms-window을 클릭하여 ACG 화면으로 이동해 주십시오.
    3. Target DB에 적용된 ACG를 클릭한 후 [ACG 설정] 버튼을 클릭해 주십시오.
    4. [Outbound] 탭을 클릭해 주십시오.
    5. 다음 규칙을 입력한 후 [추가] 버튼을 클릭해 주십시오.
      • 프로토콜: TCP 선택
      • 목적지: Source DB 서버의 사설 IP 주소 입력(<예시> 10.1.2.16/32)
        • 사설 IP 확인 방법: nslookup {Private 도메인}
      • 허용 포트: Source DB 접속 포트 입력
    6. [적용] 버튼을 클릭해 주십시오.

    Route Table 연결

    Route Table을 생성하고 라우팅 규칙에 VPC Peering을 추가합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. Route Table에 설정에 관한 자세한 내용은 VPC 사용 가이드의 Route Table을 참조해 주십시오.

    Route Table을 적용하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. Route Table 메뉴를 클릭해 주십시오.
    3. [Route Table 생성] 버튼을 클릭해 주십시오.
    4. Route Table 이름을 입력하고 VPC와 Subnet 지원 유형을 선택해 주십시오.
      • VPC: Target DB가 속한 VPC 선택
      • Subnet 지원 유형:
        • Target DB가 Private Subnet에 속한 경우 사설 선택
        • Target DB가 Public Subnet에 속한 경우 공인 선택
    5. [생성] 버튼을 클릭해 주십시오.
    6. 생성한 Route Table을 클릭하고 [Route 설정] 버튼을 클릭해 주십시오.
    7. 다음 정보를 입력하고 [생성] 버튼을 클릭해 주십시오.
      • Destination: Source DB가 속한 Subnet의 IP 주소 입력(<예시> 10.1.2.0/24)
      • Target Type: VPCPEERING 선택
      • Target Name: VPC Peering 생성에서 생성한 VPC Peering 상품 선택
    8. [확인] 버튼을 클릭해 주십시오.
    9. Route Table을 클릭하고 [연관 Subnet 설정] 버튼을 클릭해 주십시오.
    10. Subnet 이름에서 VPC Peering이 생성된 Subnet을 선택하고 [생성] 버튼을 클릭해 주십시오.
    11. [확인] 버튼을 클릭해 주십시오.

    3. Source DB 접속 설정

    Source DB 서버 ACG 설정

    Source DB 서버의 방화벽(ACG)을 설정하여 Target DB에서 접속할 수 있도록 설정해야 합니다. 다음 트래픽을 허용하도록 Source DB 서버에 적용된 ACG의 Inbound 규칙을 수정해 주십시오.

    • 프로토콜: TCP
    • 목적지: Target DB 서버의 사설 IP 주소 입력(<예시> 10.2.0.7/32)
      • 사설 IP 확인 방법: nslookup {Private 도메인}
    • 허용 포트: Target DB 접속 포트 입력

    Route Table 연결

    Route Table을 생성하고 라우팅 규칙에 VPC Peering을 추가합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. Route Table에 설정에 관한 자세한 내용은 VPC 사용 가이드의 Route Table을 참조해 주십시오.

    Route Table을 적용하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > Networking > VPC 메뉴를 차례대로 클릭해 주십시오.
    2. Route Table 메뉴를 클릭해 주십시오.
    3. [Route Table 생성] 버튼을 클릭해 주십시오.
    4. Route Table 이름을 입력하고 VPC와 Subnet 지원 유형을 선택해 주십시오.
      • VPC: Source DB가 속한 VPC 선택
      • Subnet 지원 유형: Source DB가 Private Subnet에 속해 있으므로 사설 선택
    5. [생성] 버튼을 클릭해 주십시오.
    6. 생성한 Route Table을 클릭하고 [Route 설정] 버튼을 클릭해 주십시오.
    7. 다음 정보를 입력하고 [생성] 버튼을 클릭해 주십시오.
      • Destination: Target DB가 속한 Subnet의 IP 주소 입력(<예시> 10.2.0.0/24)
      • Target Type: VPCPEERING 선택
      • Target Name: VPC Peering 생성에서 생성한 VPC Peering 상품 선택
    8. [확인] 버튼을 클릭해 주십시오.
    9. Route Table을 클릭하고 [연관 Subnet 설정] 버튼을 클릭해 주십시오.
    10. Subnet 이름에서 VPC Peering이 생성된 Subnet을 선택하고 [생성] 버튼을 클릭해 주십시오.
    11. [확인] 버튼을 클릭해 주십시오.

    Source DB 계정 생성 및 ACL 설정

    Source DB와 Target DB를 연결하기 위해 다음과 같은 계정을 생성하고 ACL에 추가해 주십시오.

    4. Endpoint 설정

    Migration을 위한 Source DB Endpoint 설정하는 방법을 설명합니다.

    참고

    여기에서는 설정에 필요한 내용만 설명합니다. Endpoint 설정에 관한 자세한 내용은 VPC 사용 가이드의 Endpoint Management을 참조해 주십시오.

    • Endpoint URL: Source DB의 Private Domain
    • DB PORT: Source DB 접속 포트
    • DB User: Source DB 접속 계정
    • DB Password: Source DB 접속 패스워드

    Proxy Server를 이용한 마이그레이션

    Source DB가 Private Subnet에 있고 Target DB가 Public Subnet에 있는 경우, Proxy Server를 구축해 접속 정보를 설정하는 방법을 설명합니다. Proxy Server의 공인 IP만으로 Target DB에서 Source DB에 접근하고자 하는 경우 사용합니다. 이 경우, Source DB와 Proxy Server는 동일한 VPC 내 위치해 있어야 합니다.

    다음 절차를 차례대로 실행해 주십시오.

    1. Nginx를 이용한 Proxy Server 구축

    Target DB가 Server의 공인 IP만으로 Source DB에 접근하기 위한 Proxy Server 구축 방법을 설명합니다. 사전에 Target DB가 있는 Public Subnet에 Server 상품을 생성하신 후 공인 IP 발급이 필요합니다.

    참고

    여기에서는 Proxy 설정에 필요한 내용만 설명합니다. Server 생성과 접속에 관한 자세한 내용은 Compute 가이드의 Server를 참조해 주십시오.

    Proxy Server를 구성하는 방법은 다음과 같습니다.

    1. Server에 접속한 후 Nginx 설치를 진행해 주십시오.

      wget https://nginx.org/download/nginx-1.24.0.tar.gz
      
    2. 설치한 파일을 압축 해제해 주십시오.

       tar -zxvf nginx-1.24.0.tar.gz
      
    3. 압축 해제한 디렉토리로 들어가 컴파일 해 주십시오.

       ./configure --with-stream
       sudo make install
      
    참고

    통신 설정에 Stream 모듈이 필수이므로 --with-stream 옵션과 함께 컴파일 후 설치해 주십시오.

    1. Nginx를 실행시키기 위한 nginx.service 파일을 생성해 주십시오.

      # vi /etc/systemd/system/nginx.service
      ---
      [Unit]
      Description=nginx
      After=network.target
      
      [Service]
      Type=forking
      ExecStart=/usr/local/nginx/sbin/nginx
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      ExecStop=/usr/local/nginx/sbin/nginx -s stop
      PrivateTmp=true
      
      [Install]
      WantedBy=multi-user.target
      
      
    2. Nginx 서비스를 등록해 주십시오.

       systemctl daemon-reload # 등록
       systemctl enable --now nginx # 서버 재시작 시 nginx도 자동 재시작
       systemctl status nginx # 실행 상태 확인
      
    참고

    오류 발생 시 journalctl -xe 명령어로 오류 확인이 가능합니다.

    주의

    Nginx 상태 확인 시, Couldn't stat /var/log/lastlog: No such file or directory 오류가 뜰 경우 해당 파일을 동일한 경로에 생성해 주십시오.

     touch /var/log/lastlog
    
    1. nginx.conf 파일을 아래와 같이 수정해 주십시오.

      #user  nobody;
      worker_processes  1;
      
      error_log  logs/error.log;
      error_log  logs/error.log  notice;
      error_log  logs/error.log  info;
      
      pid        logs/nginx.pid;
      
      stream {
          upstream db_servers {
                  server [Source DB 사설 IP 주소]:[Source DB Port];
          }
          server {
                  listen [Target DB와 통신할 포트] so_keepalive=on;
                  proxy_pass db_servers;
                  proxy_socket_keepalive on;
                  proxy_connect_timeout 30s;
          }
      }
      
      events {
          worker_connections  1024;
      }
      
      
    2. Nginx를 재실행해 주십시오.

       systemctl restart nginx
      
    참고

    여기에서는 Nginx-1.24.0이라는 특정 버전 다운로드 방법을 설명하였지만, 예시일 뿐이며 해당 환경에 맞춰서 최신 버전으로 다운로드해 주십시오.

    2. Target DB 접속 설정

    Target DB 서버 ACG 설정

    Target DB에서 Source DB로 접속할 수 있도록 Target DB에 적용된 ACG의 Outbound 규칙을 설정합니다.

    참고

    여기에서는 접속 설정에 필요한 내용만 설명합니다. ACG 설정에 관한 자세한 내용은 Server 사용 가이드의 ACG를 참조해 주십시오.

    ACG 규칙을 설정하는 방법은 다음과 같습니다.

    1. Target DB의 상세 정보에서 Target DB 서버에 적용된 ACG를 확인해 주십시오.
    2. ACG 항목의 i-dms-window을 클릭하여 ACG 화면으로 이동해 주십시오.
    3. Target DB에 적용된 ACG를 클릭한 후 [ACG 설정] 버튼을 클릭해 주십시오.
    4. [Outbound] 탭을 클릭해 주십시오.
    5. 다음 규칙을 입력한 후 [추가] 버튼을 클릭해 주십시오.
    • 프로토콜: TCP 선택
    • 목적지: 생성한 Server의 공인 IP 주소 입력 (<예시> 223.101.151.223/32)
    • 허용 포트: Target DB와 통신할 포트 입력
    1. [적용] 버튼을 클릭해 주십시오.

    3. Source DB 접속 설정

    Proxy Server와 통신을 위한 Source DB의 ACG 규칙 설정이 필요합니다. 통신을 허용하도록 Source DB 서버에 적용된 ACG의 Inbound 규칙을 설정해 주십시오.

    아래 규칙을 [Inbound] 규칙에 추가해 주십시오.

    • 프로토콜: TCP
    • 목적지: 생성한 Server에 적용된 ACG (<예시> mysql-vpc-default-acg)
    • 허용 포트: Source DB 접속 포트 입력

    4. Proxy Server 접속 설정

    Source DB와 Target DB가 Proxy Server를 통해 통신할 수 있도록 생성한 Server 상품의 ACG 규칙을 설정해야 합니다. Server에 적용된 ACG의 Inbound 규칙과 Outbound 규칙을 수정해 주십시오.

    참고

    이 경우 ACG 설정을 위해 Public Subnet에 생성한 Target DB의 공인 IP 주소가 필요합니다. [Cloud DB for MySQL > DB Server > Target DB 선택 > DB 관리 > Public Domain 관리] 과정을 통해 Target DB의 Public 도메인을 발급해 주십시오.

    • 공인 IP 확인 방법
     nslookup {Target DB Public 도메인}
    
    1. 아래 규칙을 [Inbound] 규칙에 추가해 주십시오.
    • 프로토콜: TCP
    • 목적지: Target DB의 공인 IP 주소 입력 (<예시> 211.101.130.211/32)
    • 허용 포트: Target DB와 통신할 포트 입력
    1. 아래 규칙을 [Outbound] 규칙에 추가해 주십시오.
    • 프로토콜: TCP
    • 목적지: Source DB의 사설 IP 주소 입력 (<예시> 10.1.2.16/32)
    • 허용 포트: Source DB 접속 포트 입력

    5. Endpoint 설정

    Migration을 위한 Source DB Endpoint 설정하는 방법을 설명합니다. Proxy 서버로 통신이 가능하도록 구축하였기에 별도의 Source DB URL 없이 Server 공인 IP로 Endpoint 설정이 가능합니다.

    참고

    여기에서는 설정에 필요한 내용만 설명합니다. Endpoint 설정에 관한 자세한 내용은 VPC 사용 가이드의 Endpoint Management을 참조해 주십시오.

    • Endpoint URL: 생성한 Server의 공인 IP 주소 입력
    • DB PORT: Source DB 접속 포트
    • DB User: Source DB 접속 계정
    • DB Password: Source DB 접속 패스워드

    마이그레이션을 위해 필요한 최소 권한 항목

    • Source DB가 GTID 모드인 경우 아래 명령을 실행해 주십시오.

    백업 방식 : mysqldump 선택할 경우

    Target DB 가 8.0.32 버전 미만인 경우

    GRANT PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT, SHOW VIEW, LOCK TABLES, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';
    

    Target DB 가 8.0.32 버전 이상인 경우

    GRANT {RELOAD|FLUSH_TABLES}, PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT, SHOW VIEW, LOCK TABLES, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';
    
    • Source DB가 GTID 모드가 아닌 경우 아래 명령을 실행해 주십시오.
    GRANT RELOAD, PROCESS , SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT, SHOW VIEW, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';
    
    참고
    • GTID 모드가 아닌 경우 Source DB 유저에 대하여 [RELOAD] 권한이 필요하며, 정책상 이를 부여 받지 못할 경우 Source DB를 GTID 모드로 변경 후 마이그레이션 진행해주시기 바랍니다.
    • AWS RDS 환경에서 마이그레이션 진행을 원하시는 경우 권한 정책상 GTID 모드로 변경 후 마이그레이션 진행이 필요합니다.
    • MySQL 8.0.20 버전 이후 Routine Dump 를 위해서는 [SHOW_ROUTINE] 권한이 필요합니다.
    • Target DB 버전 8.0.32 이후부터는 Source DB가 GTID 모드인 경우에 대해서도 [RELOAD] 혹은 [FLUSH_TABLES] 권한이 추가로 필요합니다. 정책상 이를 부여 받지 못한 경우 Target DB 버전 8.0.32 미만에서 수행해주시기 바랍니다.
    • 시스템 테이블 권한 [Y] 설정이 필요합니다.

    백업 방식 : mydumper 선택할 경우

    GRANT BACKUP_ADMIN, {RELOAD|FLUSH_TABLES}, PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT ON sys.* TO '[사용자명]'@'[HOST IP]';
    GRANT SELECT, SHOW VIEW, LOCK TABLES, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';
    
    참고
    • mydumper 사용을 위서는 Source DB 사용자 계정에 BACKUP_ADMIN, {RELOAD|FLUSH_TABLES} 권한이 필요합니다. 해당 권한 확인 후 필요시 고객문의를 통해 요청 바랍니다.
    • 시스템 테이블 권한 [Y] 설정이 필요합니다.

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.