tencent cloud

피드백

자동 읽기/쓰기 분리 소개

마지막 업데이트 시간:2023-01-29 14:56:14

    본 문서는 TencentDB for MySQL 데이터베이스 프록시 서비스의 읽기/쓰기 분리, 기능 장점, 읽기/쓰기 분리 라우팅 규칙에 대해 소개합니다.

    자동 읽기쓰기 분리

    현재 대부분의 네트워크 사용자 비즈니스 시나리오에는 읽기가 많고 쓰기가 적거나 서비스 부하를 예측할 수 없는 시나리오가 많습니다. 대량의 읽기 요청이 있는 응용 시나리오의 경우, 하나의 인스턴스가 읽기의 압력을 버틸 수 없어 서비스에 영향을 줍니다. 읽기 능력을 탄력적으로 확장하고, 데이터베이스의 압력을 분산하기 위해, 하나 혹은 다수의 읽기 전용 인스턴스를 생성하여 읽기 전용 인스턴스를 통해 대량의 데이터베이스 읽기 수요를 충족시킬 수 있습니다. 하지만 이런 솔루션은 서비스 측의 읽기/쓰기 분리의 개조가 지원되어야 하고, 코드의 견고성이 비즈니스 읽기/쓰기 분리의 품질을 결정하기 때문에 고객에 대한 기술 요구도가 높고 유연성이나 확장성이 낮습니다.

    따라서 읽기 전용 인스턴스 생성 후, 데이터베이스 프록시를 구매하여 액세스 주소 정책을 구성할 수 있으며, 응용 프로그램에서 데이터베이스 프록시 주소를 구성하여 쓰기 요청을 프라이머리 인스턴스에 자동으로 포워딩하고 읽기 요청을 원본 인스턴스에 자동으로 포워딩할 수 있습니다. 또한 다음과 같이 다른 서비스 문제에 대해서도 자연스러운 솔루션을 제공할 수 있습니다.

    • 부하가 예측할 수 없거나 불규칙하게 변동하는/부하 ‘피크’ 현상이 명백한 시나리오
      인터넷 비즈니스 시나리오에서 비즈니스 부하 및 액세스 부하는 종종 예측할 수 없고 불안정하며 빈번한 변동 및 ‘피크’가 발생합니다. 서비스에서 데이터베이스에 액세스하기 위해 많은 수의 짧은 연결을 사용하는 경우 이러한 시나리오에서 많은 수의 연결을 생성하기 쉽습니다. 즉, 데이터베이스와 응용 프로그램 간의 연결 수는 비즈니스 액세스 압력의 빈번한 변화에 따라 변동될 가능성이 있으며 이러한 시나리오는 사전에 예측하기 어려운 경우가 많습니다.
      데이터베이스 전용 프록시의 연결 관리를 통해 고객은 데이터베이스 연결을 효율적으로 재사용하여 예측할 수 없는 워크로드를 처리하는 응용 프로그램을 적절하게 확장할 수 있습니다. 첫째, 다수의 응용 프로그램 연결이 데이터베이스 연결을 공유하도록 하여 데이터베이스 리소스를 효과적으로 활용할 수 있습니다. 둘째, 고객이 열린 데이터베이스 연결 수를 조정하여 예측 가능한 데이터베이스 성능을 유지할 수 있도록 합니다. 마지막으로, 사용할 수 없는 응용 프로그램 요청을 삭제하여 응용 프로그램의 전체 성능과 가용성을 유지할 수 있습니다.

    • 응용 프로그램과 데이터베이스가 자주 설정 및 연결 해제되는 시나리오
      서버리스, PHP 또는 Ruby on Rails와 같은 기술을 기반으로 구축된 응용 프로그램. 응용 프로그램 요청을 충족하기 위해 데이터베이스 연결을 자주 열고 닫을 수 있습니다.
      데이터베이스 전용 프록시를 사용하면 고객이 데이터베이스 연결 풀을 유지 관리하여 데이터베이스 계산과 새 연결을 설정하는 데 사용되는 메모리에 대한 불필요한 부담을 방지할 수 있습니다.

    • 데이터베이스 액세스 연결이 오랫동안 유휴 상태이고 릴리스되지 않은 시나리오
      SaaS 또는 전자 상거래 산업의 기존 응용 프로그램은 고객이 다시 참여할 때 응답 시간을 최소화하기 위해 데이터베이스 연결을 유휴 상태로 유지할 수 있습니다. 고객은 대부분의 유휴 연결을 지원하기 위해 임계값을 과도하게 조정하거나 더 높은 성능의 데이터베이스를 제공하는 대신, 데이터베이스 전용 프록시를 사용하여 유휴 연결을 유지할 수 있습니다.

    • 데이터베이스 PaaS 서비스 장애 조치 시나리오의 원활성 및 안정성 향상
      데이터베이스 전용 프록시를 사용하여 사용자는 복잡한 장애 처리 코드를 작성하지 않고도 데이터베이스 장애 조치(능동/수동)를 투명하게 허용할 수 있는 응용 프로그램을 구축할 수 있습니다. 데이터베이스 전용 프록시는 응용 프로그램 연결을 유지하면서 읽기 트래픽을 새 데이터베이스 인스턴스로 자동 라우팅합니다.

    기능 및 장점

    • 자체적인 읽기/쓰기 분리, 통합적인 주소 액세스
    • 네이티브 링크 지원, 성능 향상 및 유지 보수 비용 절감
    • 가중치 및 임계값 설정 가능, 사용자의 유연적 선택 지원
    • 장애 조치 기능 지원, 데이터베이스 프록시 장애에도 원본 데이터베이스 정상 액세스 가능
    • 원본 인스턴스 전환, 변경, 읽기 전용 인스턴스 증가/감소 등 상황에도, 데이터베이스 프록시는 동적 설정 로딩이 가능하며, 네트워크 끊김 또는 재시작 현상이 발생하지 않음

    읽기/쓰기 분리 라우팅 규칙

    원본 인스턴스로 발송

    • CREATE、ALTER、DROP、RENAME 등 DDL 명령.
    • INSERT、UPDATE、DELETE 등 DML 명령.
    • SELECT FOR UPDATE 명령.
    • 임시 테이블 관련 명령.
    • 일부 시스템 함수 호출(예: last_insert_id()) 및 모든 사용자 정의 함수 호출.
    • LOCK 관련 명령.
    • 트랜잭션 활성화 이후의 명령(set autocommit=0 포함).
    • 스토리지 과정.
    • ‘;’로 연결된 다중 명령.
    • KILL(SQL 명령 중의 KILL,비명령어 KILL).
    • 사용자 변수에 대한 모든 쿼리 및 수정

    읽기 전용 인스턴스로 발송

    • 트랜잭션 외 읽기 (SELECT) 명령.

    모든 인스턴스로 발송

    • show processlist 명령.
    • 모든 시스템 변수의 수정 (SET명령).
    • USE 명령어.
    문의하기

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

    기술 지원

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

    연중무휴 24시간 전화 지원