데이터베이스 읽기 쓰기 분할을 통한 Joomla 확장


9

북미에 Amazon RDS를 사용하는 mysql 서버와 읽기 전용 복제본이 있습니다. 또한 새로운 지역 인 호주에 대한 읽기 전용 복제본도 있습니다.

호주의 서버는 Joomla의 동적 특성으로 인해 N.America의 기본 DB 서버를 읽음으로써 잔인하게 느립니다. 읽기 / 쓰기를 분할하기 위해 mysql 프록시를 사용하려고 시도했지만 장기적인 해결책은 아닙니다. MySQL 프록시 가 효과적으로 죽어 보입니다.

다른 옵션이 있습니까?

답변:


2

Joomla (및 기타 유사한 CMS)는 공통 호스팅을 염두에두고 LAMP 아키텍처를 위해 개발되었습니다. 예를 들어 웹 서버와 데이터베이스 간의 대기 시간이 짧습니다.

Amazon RDS는 클라우드에서 관계형 데이터베이스를 확장하도록 설계되었습니다. 따라서 지역 분포와 중복성이 중요하기 때문에 더 높은 임대가 예상됩니다.

Amazon RDS를 요구하는 특정 요구 사항이있는 경우 다음을 구성 할 수 있습니다.

  • 사이트 일반 관리 (정적 자산, 복제하기 쉬운)를위한 로컬 MySQL을 갖춘 Joomla
  • 개발을위한 애플리케이션 별 연결 인 Amazon RDS 연결

지연 시간을 고려하여 개발 된 타사 확장 프로그램은 Amazon RDS와 함께 작동하지 않습니다.


당신의 두 가지 점을 이해하지 못합니까? 계속해서 RDS를 사용하겠습니다. 호주에서 Master RDS를 제안 하시겠습니까? 또한 Joomla 코어가 아닌 사용자 지정 구성 요소를 사용하여 읽기 전용 복제본으로 RDS 연결을 활용할 수 있습니다. 따라서 응용 프로그램 별 연결의 의미를 모릅니다. 자세히 설명해 주시겠습니까?
Tom

2

최신 버전의 PHP를 사용하고 있다면 아마도 php mysqlnd 드라이버를 사용하고있을 것입니다. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd 같은 방법으로 API 및 기능 할 수 플러그인 사용자 정의를 가지고 MySQL을 프록시가 - 예를 들어 http://pecl.php.net/package/mysqlnd_ms는 분할 플러그인이 읽기 및 쓰기와 최근 공식 출시했다입니다 2,013분의 9

또한 Joomla는 항상 세션 테이블에 씁니다. memcache 또는 apc를 사용하면 세션 메타 데이터가 아닌 세션 데이터가 캐시에 저장됩니다.

#_sessions 테이블을 삭제하고 innodb 또는 myisam 대신 메모리 데이터 엔진을 사용하여 동일한 성능 향상을 얻을 수 있습니다.


1

Joomla가 생성 한 모든 페이지는 세션 테이블에 기록해야합니다.

따라서 세션 관리에 memcache 또는 apc를 사용하는 것이 좋습니다. 이는 데이터베이스에 0으로 쓰지 않는 데 도움이되므로 대부분의 페이지에 읽기 전용 복제본으로 충분합니다.


그것은 훌륭한 지적입니다. 그것은 쓰기에 도움이 될 것이지만 실제로 중요한 것은 Joomla의 핵심에 읽기 복제본을 어떻게 사용합니까? 지금은 mysql 프록시 또는 코어를 옵션으로 해킹하는 것을 볼 수 있습니다. HAproxy도 옵션이지만 그다지 명확하지 않다고 생각합니다.
Tom

1. AWS 자체는 복제를 지원합니다 ( aws.amazon.com/rds/faqs/#replication ) 2. 다른 옵션은 mysql 내장 복제
Shyam

당신이 오해하고 있다고 생각합니다. 이미 RDS와 함께 복제를 사용하고 있습니다. 내 질문은 Joomla 읽기 작업을 해당 읽기 전용 복제본으로 분할하는 방법입니다.
Tom

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.