Vitess: 간편한 데이터베이스 배포, 클러스터 및 확장!
Vitess는 대형 소스 데이터베이스 실례 집단을 배치하고 조정하며 관리하는 데 사용되는 데이터베이스 솔루션이다.현재 MySQL, Percona 및 MariaDB를 지원합니다.그것의 구조는 공공 또는 개인 클라우드 구조에서 전용 하드웨어와 같이 효과적으로 일할 수 있다.그것은 많은 중요한 SQL 특성과 NoSQL 데이터베이스의 확장성을 결합하고 확장했다.Vitess는 다음과 같은 문제를 해결할 수 있습니다.
건축하다
Vitess 플랫폼은 몇 개의 서버 프로세스, 명령행 유틸리티, 웹 기반 유틸리티로 구성되어 있으며, 일치된 메타데이터 저장 지원이 있습니다.
응용 프로그램의 현재 상태에 따라 몇 가지 다른 절차를 통해 완전한 Vitess를 실현할 수 있다.예를 들어 처음부터 서비스를 구축하려면 Vitess를 사용하는 첫 번째 단계는 데이터베이스 토폴로지를 정의하는 것입니다.그러나 기존 데이터베이스를 확장해야 한다면 연결 에이전트를 배치하는 것부터 시작할 수 있다.
Vitess 도구와 서버는 완전한 데이터베이스 그룹에서 시작하든 시간의 흐름에 따라 소형으로 시작하든 도움을 주기 위한 것입니다.비교적 작은 실현에 있어 vttablet의 연결 탱크와 조회 리셋 등 기능은 기존 하드웨어를 더욱 잘 활용하는 데 도움을 줄 수 있습니다.Vitess 자동화 툴은 대규모 배포를 위한 추가적인 이점을 제공합니다.
다음 그림은 Vitess 구성 요소를 보여 줍니다.
이 문서의 뒷부분과 기타 구성 요소는 이 문서의 뒷부분에 설명되어 있으며 이 솔루션의 뒷면에 숨겨진 비밀을 설명합니다.)
지원되는 데이터베이스:
이 예에서, 우리는 Minikube를 사용하여 리눅스에 로컬로 설치할 것이며, 적어도 11개의 Gig를 사용할 수 있다.이렇게 하려면 Kubernetes(Minikube)에 Vites를 배치하고 사용하려면 다음 절차를 따르십시오.
Minikube를 시작하려면:
minikube start — kubernetes-version=v1.14.10 — cpus=8 — memory=11000 — disk-size=50g
kubectl을 설치하려면 다음과 같이 하십시오.curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.9/bin/linux/amd64/kubectl
클라이언트를 설치하여 MySQL에 액세스하려면:apt install mysql-client
vtctlclient 설치:참고: 이 단계에서는 먼저 GO 언어를 설치해야 합니다.
go get vitess.io/vitess/go/cmd/vtctlclient
설치 운영자:클론 git 항목:
git clone [email protected]:vitessio/vitess.git
cd vitess/examples/operator
설치를 수행하려면 다음과 같이 하십시오.kubectl apply -f operator.yaml
로컬 클러스터 제안:kubectl apply -f 101_initial_cluster.yaml
클러스터 확인:Kubernetes에서 연결 포트를 구성하려면:
./pf.sh &
alias vtctlclient=”vtctlclient -server=localhost:15999"
alias mysql=”mysql -h 127.0.0.1 -P 15306 -u user”
모드를 만들려면 다음과 같이 하십시오.vtctlclient ApplySchema -sql=”$(cat create_commerce_schema.sql)” commerce
vtctlclient ApplyVSchema -vschema=”$(cat vschema_commerce_initial.json)” commerce
클러스터에 연결:이 예에서, 우리는 'commerce' 라는 비공유 키 공간을 배치했다.비공유 키 공간에는 '0' 이라는 파편이 있습니다.다음 모델은 스크립트가 작성한 일반적인 전자 상거래 시나리오를 반영합니다.
자동 분할: Vitess의 진정한 비밀:
보통 데이터베이스를 찢을 때, 당신이 생각하는 것은 모두 데이터베이스입니다. 당신의 찢는 키가 무엇입니까? 그리고 이렇게 데이터베이스를 찢는 것이 맞습니까?그러나 데이터베이스에서 실제로 무엇을 했는지, 그 기능, 무엇이 필요했는지, 그리고 지리멸렬한 환경에서 이런 기능들이 얼마나 의미가 있는지.그래서 조각 키만 있는 게 아니야.
먼저, 데이터베이스에 모델이 있는 것처럼Vitess에는 VSchema가 있는데 기본적으로 모델 묘사표의 조직 방식과 같이 VSchema는 절분된 조직 방식을 묘사한다.데이터베이스에 메인 키가 있습니다.Vitess에는 하나의 주vindex가 있는데, 마치 절단키와 같다. 그러나 더 많은 이유는 절단키에서 절단키만 선택하면, 절단키가 어디로 갈지, 데이터가 어디로 갈지 시스템이 결정하기 때문이다.Vitess를 사용하여 세그먼트 키와 맵 함수를 정의합니다.
이 점을 상세히 논술한 것은 이런 동기를 바탕으로 데이터가 서로 다른 장면에 분포되어 있기 때문이다.때때로 그것은 점차 자란다.때로는 이런 증가가 열 조각을 초래하는 것을 원하지 않거나, 때로는 같은 조각에 범위를 두는 것을 원하지 않는다.그래서 이 모든 결정은 시스템이 어떻게 분할될지 결정해야 한다는 것을 의미한다.주vindex는 이 줄의 위치를 정하는 데 사용할 열과 맵 함수를 선택할 수 있습니다.
Secondary vindex는 세그먼트 키 대신 WHERE 자문을 사용할 수 있는 또 다른 핵심 개념입니다.이것은 크로스 섹션 인덱스이지만, 그 실현 방식은Vitess의 다른 표에 불과하다.이것은 단지 다른 표일 뿐, 열을 우리가 말한 키 공간 ID에 비추기 때문에, 이것은 약간 한 줄의 거리 주소와 같다.장점은 메인 테이블에 한 줄을 삽입하는 것이다.Vitess가 자동으로 테이블을 채웁니다.열에 WHERE 자구가 있으면 나중에 행을 찾을 수 있도록 테이블에 다른 역방향 찾기를 삽입합니다.너는 단일하고 비배타적인 것을 가질 수 있다.이것은 데이터베이스 개념이 파편화 환경에서의 우아한 확장이다.
데이터베이스에 외부 키가 있고 병행된 것은 공유된vindexes이다.MySQL에는 자동 증가분이 있고 Vitess에는 시퀀스가 있습니다.이것은 비파편화 시스템에서 파편화 시스템으로 이동하는 고통을 감소시켰다.
Vitess의 가장 좋은 점은 조각이 잘리면 조각이 갑자기 특정한 크기에 이르게 된다는 것이다. 지금은 커져야 한다. Vitess에서 다시 경화할 수 있고, 정지할 필요가 없다.너는 분할과 합병을 할 수 있지만, 응용은 심지어 무슨 일이 일어났는지 모른다.모든 것은 데이터 분실이 없도록 각종 데이터 검사를 통해 안전하게 완성되었다.이것은 Vitess가 가장 환영받는 기능 중의 하나이자 Vitess가 가장 환영받는 기능 중의 하나이다.
이 글은 내가 이 대형 MySQL 데이터베이스 집단 해결 방안과 그 파생 제품에 대해 흥미를 느끼는 부분을 정리했다.본 문서의 일부 텍스트는 공식 문서와 InfoQ 솔루션의 공동 창립자인 Sugu Sougoumarane의 강연에도 포함되어 있습니다.나는 이 화제를 깊이 연구하고 싶은 누구에게도 추천한다.
** 참조 자료: **
https://vitess.io/
https://www.infoq.com/presentations/vitess/
따라와Medium:
Reference
이 문제에 관하여(Vitess: 간편한 데이터베이스 배포, 클러스터 및 확장!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jlgjosue/vitess-easy-database-deployment-clustering-and-scaling-164l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)