마스터 파일 시스템의 복제+차이 역할을 하는 가상 파일 시스템

마스터 파일 시스템의 복제+차이 역할을 하는 가상 파일 시스템

우리 회사에서는 약 10명의 개발자가 우분투 개발 서버를 공유합니다. 별도의 코드 디렉터리가 있지만 데이터베이스 크기(약 50GB)로 인해 각 개발자에 대해 mysql 데이터베이스를 복제하는 것은 실용적이지 않습니다. 그래서 지금 우리는 모두 단일 데이터베이스를 공유하고 있습니다. 그러나 이것이 가능한지 궁금합니다.

50GB 데이터베이스를 저장하는 마스터 파일 시스템(ext4)을 생성합니다. 이 파일 시스템에는 mysql 서버가 실행되지 않으며 실제로는 읽기 전용입니다. 마스터 파일 시스템을 참조하고 각 변경 사항의 차이점을 저장하는 각 개발자에 대한 가상 파일 시스템을 만듭니다. 각 가상 파일 시스템에서 mysql 서버를 실행하십시오. 그런 다음 각 개발자는 50GB 데이터베이스를 불필요하게 복제하지 않고도 원하는 작업을 수행할 수 있는 자신의 데이터베이스를 갖게 됩니다.

나는 mysql이 디스크에 데이터를 어떻게 저장하는지 살펴보지 않았지만 디스크 I/O를 최소화하려는 욕구 때문에 일상적인 테스트에서 수행하는 작은 변경 사항이 가상 환경에서 큰 차이를 만들지 않을 것이라고 생각합니다. 파일 시스템.

구체적으로 내 질문은 다음과 같습니다.

  • 이런 아키텍처가 가능한가요?
  • 이것이 내 목표를 달성하는 가장 쉬운 방법입니까?
  • 그러한 가상 파일 시스템이 이미 존재합니까?

답변1

귀하의 질문에 답변하려면(다음번에 참조하기 쉽도록 번호를 매겨주세요):

  • 가능해야 한다
  • 가장 쉬운 방법처럼 들리지 않습니다
  • 예, 그러한 가상 FS가 존재합니다.

귀하의 아이디어는오버레이. 기존 데이터베이스 FS를 "하위" 파일 시스템으로 사용하고 개발자별 "diff" FS를 "상위" 파일 시스템으로 사용할 수 있습니다. Overlayfs를 사용하면 디렉터리를 "상위" 및 "하위"로 사용할 수 있으므로 반드시 데이터베이스를 다른 디렉터리에 마운트할 필요가 없습니다.

그런 다음 서로 다른 datadir을 사용하도록 각 개발자별 MySQL 인스턴스를 구성해야 합니다.

가장 쉬운 방법은 최대한 빨리 서버에 1TB 하드 드라이브를 장착하고, 각 개발자에 대해 필요한 횟수만큼 데이터베이스를 복제하고, 각 개발자에 대해 MySQL 인스턴스를 실행하거나 하나의 인스턴스로 관리하도록 하는 것입니다. 모든 데이터베이스. 여기서 개발자의 차이점은 다른 포트와 다른 데이터베이스 이름을 지정한다는 것입니다. IMHO 하나의 MySQL 인스턴스만 갖는 것이 더 간단할 것입니다. 이는 움직이는 부분이 적다는 것을 의미하기 때문입니다.

여기서 고려해야 할 요소는 overlayfs 솔루션을 개발하는 데 걸리는 시간과 특정 서버 하드웨어에 대한 1TB 하드 드라이브 비용이 얼마나 되는가입니다. 귀하의 시간에는 비용이 듭니다. 3일 작업을 시간당 50달러(여기서는 매우 보수적으로)로 총 1,200달러로 보고 있고 하드 드라이브 솔루션에 2시간 작업과 밤새 데이터베이스 동기화를 수행할 수 있는 경우가 있습니다. 잊어버리면 1TB 하드 드라이브에 대한 예산이 1,100달러가 됩니다. 또한 "해킹"이나 속임수가 관련되지 않기 때문에 대용량 디스크 솔루션의 유지 관리가 더 쉽습니다. 거대한 하드 디스크를 갖춘 DB 서버 일뿐입니다.

물론 Ubuntu 서버가 클라우드 어딘가에 있는 경우 해당 1TB 스토리지 슬라이스의 비용이 더 높을 수 있습니다. 그래도 결정을 내리려면 비용/이익 분석을 고려하십시오. 장기적으로 돈과 시간을 절약할 수 있습니다 :)

관련 정보