tencent cloud

피드백

읽기/쓰기 분리로 TencentDB for MySQL 성능 향상

마지막 업데이트 시간:2022-07-04 15:20:25

    본 문서에서는 데이터베이스 프록시 서비스를 통해 읽기/쓰기 분리 기능을 활성화하여 수평 확장을 구현하고 TencentDB for MySQL의 성능을 향상시키는 방법을 설명합니다.

    데이터베이스 프록시를 통한 읽기/쓰기 분리 아키텍처 구현

    데이터베이스 프록시

    데이터베이스 프록시는 TencentDB 서비스와 애플리케이션 서비스 사이에 위치한 네트워크 프록시 서비스입니다. 애플리케이션 서비스가 TencentDB에 액세스할 때 발생하는 모든 요청을 중계하는 데 사용됩니다.
    데이터베이스 프록시 액세스 주소는 원래 데이터베이스 액세스 주소와 무관합니다. 프록시 주소에 도달하는 요청은 모두 프록시 클러스터를 통해 릴레이되어 데이터베이스의 원본 및 복제본 노드에 액세스합니다. 읽기/쓰기 요청이 분리되어 읽기 요청이 읽기 전용 인스턴스로 전달되어 원본 데이터베이스의 부하가 줄어듭니다.

    자동 읽기/쓰기 분리

    귀하의 비즈니스는 예측 불가능한 비즈니스 부하뿐만 아니라 더 많은 읽기, 더 적은 쓰기 시나리오에 직면할 수 있습니다. 읽기 요청이 많은 애플리케이션 시나리오에서는 단일 인스턴스가 부하를 견디지 못하여 잠재적으로 비즈니스에 영향을 줄 수 있습니다.
    읽기 기능의 자동 크기 조정을 구현하고 데이터베이스 부하를 완화하기 위해 하나 이상의 읽기 전용 인스턴스를 만들고 이를 사용하여 많은 수의 데이터베이스 읽기를 유지할 수 있습니다. 그러나 이 솔루션은 비즈니스가 읽기/쓰기 분리를 지원하도록 변환될 수 있어야 하며 코드 견고성은 비즈니스 읽기/쓰기 분리의 품질을 결정하므로 높은 기술 요구 사항을 필요로 하며 유연성과 확장성이 낮습니다.

    읽기 전용 인스턴스를 생성한 후 데이터베이스 프록시 서비스를 구매하여 읽기/쓰기 분리 기능을 활성화할 수 있습니다. 그런 다음, 쓰기 요청을 원본 인스턴스에 자동으로 전달하고 읽기 요청을 읽기 전용 인스턴스에 전달하도록 애플리케이션에서 데이터베이스 프록시 주소를 구성할 수 있습니다.

    데이터베이스 프록시를 통한 읽기/쓰기 분리 활성화

    1단계: 데이터베이스 프록시 활성화

    1. TencentDB for MySQL 콘솔에 로그인한 뒤, 인스턴스 리스트에서 프록시를 활성화할 원본 인스턴스를 선택하고, 인스턴스 ID 혹은 작업열의 관리를 클릭하여 인스턴스 관리 페이지로 이동합니다.
    2. 인스턴스 관리 페이지에서 데이터베이스 프록시 탭을 선택하고 지금 활성화를 클릭합니다.
    3. 팝업 창에서 사양 노드를 선택하고 확인을 클릭한 다음 페이지를 새로고침 합니다.
      • 네트워크 유형: VPC만 지원하며, 기본 설정은 원본 인스턴스와 동일합니다.
      • 프록시 사양: 2코어 4000MB 메모리, 4코어 8000MB 메모리, 8코어 16000MB 메모리.
      • 노드 개수: 프록시 노드 수. 프록시 노드 수는 원본 인스턴스와 읽기 전용 인스턴스 CPU 코어 수 합의 1/8(올림한 정수)로 설정을 권장합니다. 예: 원본 인스턴스의 CPU가 4코어이고, 읽기 전용 인스턴스의 CPU는 8코어일 경우, 권장 프록시 수 = (4 + 8 ) / 8 ≈ 2
      • 연결 풀 상태: 연결 풀은 비영구적 연결 비즈니스에서 빈번한 새 연결로 인해 발생하는 과도하게 높은 데이터베이스 인스턴스 부하를 완화할 수 있습니다.
      • 보안 그룹: 네트워크 보안 격리의 중요한 수단이며 필요에 따라 기존 보안 그룹을 선택하거나 새 보안 그룹을 생성할 수 있습니다.
    4. 서비스를 성공적으로 활성화한 후 데이터베이스 프록시 페이지에서 기본 정보 조회, 프록시 노드를 관리, 데이터베이스 프록시 주소 수정, 구성 조정 등을 수행할 수 있습니다.
      설명:

      • 프록시 노드 목록에서 연결 수를 확인하거나 각 프록시 노드의 성능 모니터링 데이터를 확인하여 노드의 연결 수가 불균형한지 확인할 수 있으며, 불균형한 경우 리밸런싱을 클릭하여 연결을 분산할 수 있습니다.
      • 리밸런싱으로 인해 프록시 노드가 다시 시작되고 다시 시작하는 동안 서비스를 일시적으로 사용할 수 없게 됩니다. 사용량이 적은 시간에 서비스를 다시 시작하는 것이 좋습니다. 귀하의 비즈니스에 재연결 메커니즘이 있는지 확인하십시오.

    2단계: 데이터베이스 프록시 읽기/쓰기 분리 활성화

    1. MySQL 콘솔에 로그인합니다.
    2. 위에서 리전을 선택하고 인스턴스 ID 및 작업 열에서 관리를 클릭하여 인스턴스 관리 페이지로 이동합니다.
    3. 인스턴스 관리 페이지의 데이터베이스 프록시 페이지에서 읽기/쓰기 분리 페이지를 선택하고 지금 활성화를 클릭합니다.
    4. 팝업 창에서 관련 설정을 선택하고 확인을 클릭합니다.
      주의:

      • 실행 상태에 있는 원본 및 읽기 전용 인스턴스만 데이터베이스 프록시에 추가할 수 있습니다.
      • 현재 원격 RO와 딜레이 RO는 데이터베이스 프록시에 마운트 할 수 없습니다.
    • 읽기 전용 인스턴스 딜레이 제거: 제거 정책 실행 여부. 읽기 전용 인스턴스에서 복사 이상 경고가 발생(복사 딜레이, 복사 중단)할 경우, 데이터베이스 프록시는 읽기 전용 인스턴스의 읽기/쓰기 분리를 일시적으로 삭제합니다. 딜레이 제거 임계값의 기본 설정은 10초이며, 읽기 전용 인스턴스의 최소 보관 수량은 1개 입니다.
      설명:

      읽기 전용 인스턴스 제거 임계값과 최소 보관 수량을 설정하면 새롭게 연결된 것에 한해서만 설정이 적용이 됩니다.

    • 딜레이 제거 임계값: 읽기 전용 인스턴스가 원본 인스턴스의 데이터를 동기화할 때 허용되는 최대 지연 시간을 지정합니다. 읽기 전용 인스턴스의 지연이 이 임계값을 초과하면 가중치에 관계없이 읽기 요청이 인스턴스로 전달되지 않습니다. 값은 1 이상의 정수여야 합니다.
      • 만약 읽기 전용 인스턴스 딜레이가 임계값을 초과할 경우 삭제되며, 삭제된 인스턴스의 가중치는 0으로 자동 설정되고 시스템은 사용자에게 알람을 발송합니다(먼저 ‘데이터베이스 프록시 마운트 노드 제거’ 알람을 구독해야 하며, 설정에 관하여는 알람 정책을 참고 바랍니다.)
      • 읽기 전용 인스턴스의 딜레이가 임계값보다 작을 경우 다시 새롭게 데이터베이스 프록시에 추가됩니다. 동시에 딜레이 제거 기능 활성화 여부에 상관 없이 읽기 전용 인스턴스의 장애가 제거 되어 복구 되면, 복구된 인스턴스도 다시 새롭게 데이터베이스 프록시에 추가됩니다.
      • 읽기 전용 최소 보관 수량 설정을 통해 데이터베이스 프록시가 현재 라우팅 중인 읽기 전용 인스턴스가 설정한 값보다 작은 것을 발견 시, 오류가 난 읽기 전용 인스턴스를 읽기 전용 인스턴스 개수가 최소 보관 수량에 만족할 때까지 읽기/쓰기 분리로 이동시킵니다.
        주의:

        읽기 전용 라이브러리에서 치명적인 장애(예: 시스템 다운)가 발생할 경우, 최소 보류 수량은 치명적인 장애가 발생한 인스턴스에 대하여 작용하지 못합니다.

    • 읽기 전용 인스턴스 최소 보관 수: 보장되어야 하는 인스턴스 하한치로, 현재 읽기 전용 인스턴스 수가 해당 하한치와 같거나 적고, 딜레이 시간이 임계값을 초과하면 현재의 읽기 전용 인스턴스는 제거되지 않습니다.
    • 읽기 가중치 할당: 인스턴스에 읽기 가중치를 할당하며, 시스템에서 자동으로 할당하거나 사용자 정의를 선택할 수 있으며 가중치 할당 범위는 0 - 100까지의 정수입니다. 가중치 할당 설정 읽기 후 모든 연결에 즉시 적용됩니다.
      • 데이터베이스 프록시는 가중치 설정에 따라 읽기 요청의 트래픽을 할당합니다. 예를 들어, 2개의 읽기 전용 데이터베이스의 가중치가 각각 10과 20인 경우, 읽기 요청 트래픽은 1:2의 비율로 할당됩니다.
      • 여기서 가중치는 쓰기 요청이 가중치 계산에 참여하지 않고 원본 데이터베이스로 직접 라우팅되기 때문에 읽기 요청 가중치만을 나타냅니다. 예를 들어 클라이언트가 10개의 쓰기 명령문과 10개의 읽기 명령문을 보내고 원본 및 읽기 전용 인스턴스 가중치의 비율이 1:1인 경우 원본 인스턴스는 10개의 쓰기 명령문과 5개의 읽기 명령문을 수신하고 읽기 전용 인스턴스는 5개의 읽기 문만 받습니다.
      • 시스템에 의해 할당을 선택하면 시스템이 인스턴스의 CPU 및 메모리 사양에 따라 자동으로 가중치를 할당하며 이 경우 원본 인스턴스의 가중치만 설정할 수 있습니다.
      • 읽기 전용 인스턴스의 가중치가 0인 경우 데이터베이스 프록시는 인스턴스에 연결하지 않습니다. 가중치가 0에서 다른 값으로 변경되면 가중치는 새 연결에만 적용됩니다.
    • 장애 조치: 이 매개변수를 활성화하거나 비활성화합니다. 모든 읽기 전용 인스턴스가 비정상인 경우 데이터베이스 프록시가 원본 인스턴스에 읽기 요청을 보낼 수 있도록 이 매개변수를 활성화하는 것이 좋습니다.
      설명:

      장애 조치 설정 후 새로운 연결에 한해서만 설정 적용됩니다.

    • 읽기 전용 인스턴스 자동 추가: 활성화 여부를 설정합니다. 활성화 후 새로운 읽기 전용 인스턴스를 구매하면 데이터베이스 프록시에 자동으로 추가됩니다.
      • 시스템에서 자동으로 읽기 가중치를 할당할 경우 구매한 읽기 전용 인스턴스에 규격 크기에 따라 기본 가중치를 할당합니다.
      • 읽기 가중치가 사용자 정의인 경우 구매한 읽기 전용 인스턴스의 가중치는 기본적으로 0이며, 데이터베이스 프록시 읽기/쓰기 분리의 설정 변경을 통해 수정할 수 있습니다.

    데이터베이스 프록시 읽기/쓰기 분리 사용

    데이터베이스 프록시 읽기/쓰기 분리 기능이 성공적으로 활성화된 후 데이터베이스 프록시 페이지는 다음과 같습니다.

    관련 문서

    문의하기

    고객의 업무에 전용 서비스를 제공해드립니다.

    기술 지원

    더 많은 도움이 필요하시면, 티켓을 통해 연락 바랍니다. 티켓 서비스는 연중무휴 24시간 제공됩니다.

    연중무휴 24시간 전화 지원