2011-08-27 1 views
19

처음으로 대규모 데이터베이스 프로젝트를 직접 시도하고 있습니다. 많은 양의 다양한 데이터를 소비하는 php 앱으로 서버 1에 myisam mysql db가 있습니다. 서버 2에서 mysql myisam을 선택하고 데이터를 표시하는 PHP 응용 프로그램이 있습니다. Muzak 복제 조언 및 기술

  • 당신이 서버 2의의 MyISAM
  • I에 서버 1의 이노를 복제 할 수 있습니다 이노 디비에

    1. 내가 변경해야합니다 서버 1 MySQL의 DB를 :

      나는 2

      질문 서버에 데이터를 복제 할 라이브 서버에서 스트레스를 덜어주기 위해 캐시를 사용할 의도로 미디어를 얼룩으로 저장하고 있습니다. 파일 시스템 저장소와 rsync를 사용해야합니까?

    2. 다른 경험이있는 사람들의 일반적인 조언은 무엇입니까?
  • 답변

    26

    다음은 내 경험에 근거한 제안입니다.

    1. 두 서버 모두 한 종류의 엔진 (MyISAM 또는 InnoDB)을 사용할 수 있습니다. 두 엔진을 혼합하면 교착 상태, 트랜잭션 문제 등이 발생할 수 있으며 시간을 고치면 고통 스러울 수 있습니다. 조금 전에 InnoDB -> MyISAM으로 문제가있었습니다. 이제 모든 서버에서 MyISAM을 사용했습니다.

    2. 미디어 (이미지, 비디오 또는 문서)를 저장하려면 NFS를 만들고/usermedia /와 같은 폴더를 마운트 할 수 있습니다. 따라서 매번 rsync 할 필요가 없습니다. 또한 메타 데이터 또는 미디어 정보를 참조 용으로 데이터베이스에 저장하고 파일이 디스크에 저장되는 위치를 지정할 수 있습니다. 참고 : 파일을 저장하기 위해 blob을 사용하면 미디어에 따라 좋을 수 있습니다. 약 1 기가의 파일을 가지고 있다면 데이터베이스에 저장하는 것이 좋습니다.

    3. 캐싱 시스템을 사용하여 데이터 (예 : memcached)를 검색합니다. 예를 들어 데이터를 요청한 후 사용자에게 표시해야하는 경우 캐시에서 먼저 찾습니다. 캐시에 없으면 데이터베이스를 쿼리하여 캐시에 저장하고 표시합니다. 다음 번에 동일한 정보가 요청되면 서버에서 요청하지 않고 메모리에서 요청합니다. 이 솔루션은 성능을 향상시킬 데이터베이스 서버에서의 많은 호출을 피할 것입니다.

    추가 도움이 필요하면 알려주세요.

    +0

    감사합니다. 미디어 파일은 이미지입니다. 다른 크기로 동일한 이미지의 3 버전. 파일 크기는 약 10k에서 80k 사이이며 그 이상은 아닙니다. 그 점을 염두에두고 여전히 크기가 큰 DB가 될 것입니다. 그게 중요합니까? 또는 mysql이 작업하기에 충분히 힘들다. 물론 memcached는 라이브 측면에서 활용 될 것입니다. – user915831

    +0

    나는 nfs의 아이디어를 좋아한다. 그러나 이것이 개인 프로젝트이기 때문에 자금이 제한됩니다. 좋은 라이브 전용 서버가 있습니다. 측정되지 않은 대역폭 및 t1 연결이있는 데이터 센터. 사무실에 내부 서버가 있지만 인터넷 업스트림 연결로 인해 약 512up 20mbs 아래로 제한됩니다. 따라서 사내 서버의이 아이콘 연결 nfs 연결을 사용하면 소모 소프트웨어가 다운되는 속도가 느려 집니까? – user915831

    +0

    동일한 데이터 센터에있는 서버입니까? 그들은 VPN없이 서로 이야기 할 수 있습니까? 이 링크 http://how-to.linuxcareer.com/how-to-configure-nfs-on-linux를 확인하십시오. 이미지가 작기 때문에 데이터베이스에 이미지를 저장 한 다음 더 큰 미디어로 업그레이드하면 NFS 솔루션으로 이동할 수 있습니다. –

    23

    InnoDB (거래, 행 잠금 및 테이블 잠금이 아닌) 및 캐싱으로 매우 빠르고 효율적인 것이 좋습니다