gh-ost
MySQL에 대한 트리거가없는 온라인 스키마 마이그레이션 솔루션입니다. 테스트 가능하며 일시 정지 성, 동적 제어/재구성, 감사 및 많은 운영 특전을 제공합니다.
gh-ost
마스터에서 마스터에 가벼운 워크로드를 생성하여 마이그레이션 테이블의 기존 워크로드에서 분리됩니다.
기존 솔루션에 대한 수년간의 경험을 기반으로 설계되었으며 테이블 마이그레이션의 패러다임을 변경합니다.
기존의 모든 온라인 스키마 변화 도구는 비슷한 방식으로 작동합니다. 원래 테이블과 비슷한 유령 테이블을 만들고, 비워진 상태에서 해당 테이블을 마이그레이션하고, 천천히, 천천히 및 점진적으로 귀신 테이블로 데이터를 복사하여 진행중인 변경 사항을 전파합니다. (테이블에 적용되는 모든 INSERT
, DELETE
, UPDATE
) 고스트 테이블에. 마지막으로, 적절한 시간에 그들은 원래 테이블을 고스트 테이블로 교체합니다.
gh-ost
동일한 패턴을 사용합니다. 그러나 트리거를 사용하지 않음으로써 모든 기존 도구와 다릅니다. 우리는 방아쇠가 많은 제한과 위험의 원천임을 인식했습니다.
대신 gh-ost
이진 로그 스트림을 사용하여 테이블 변경을 캡처하고 고스트 테이블에 비동기 적으로 적용합니다. gh-ost
다른 도구가 데이터베이스가 수행하기 위해 떠나는 작업을 스스로 사용합니다. 결과적으로, gh-ost
마이그레이션 프로세스를 더 크게 제어합니다. 진정으로 중단 할 수 있습니다. 마스터의 워크로드에서 마이그레이션의 쓰기 부하를 진정으로 분해 할 수 있습니다.
또한, 그것은 더 안전하고 신뢰할 수 있고 사용하기 재미있는 많은 운영 특권을 제공합니다.
gh-ost
에 대한 신뢰를 구축하십시오. gh-ost
마스터와 동일한 흐름을 발행하고 원래 테이블을 실제로 교체하지 않고 복제본에서 테이블을 마이그레이션하여 복제본을 두 개의 테이블로 남겨두고 도구가 올바르게 작동하는 것을 비교하고 만족시킬 수 있습니다. 이것이 생산에서 gh-ost
지속적으로 테스트하는 방법입니다.gh-ost
스로틀이 스로틀을 할 때, 그것은 진정으로 마스터에게 글을 멈 춥니 다. 스로틀 링으로, 당신은 마스터를 원래의 워크로드로 반환합니다.gh-ost
재구성 할 수 있습니다. 당신은 강제로 스로틀링을 시작할 수 있습니다.gh-ost
쿼리 할 수 있습니다. gh-ost
UNIX 소켓 또는 TCP에서 청취합니다.gh-ost
아마도 가장 중요한 단계 인 것을 연기하도록 지시받을 수 있습니다. 편안하게 사용할 수있는 시간까지 테이블 스왑. ETA가 근무 시간 외부 시간에 대해 걱정할 필요가 없습니다.gh-ost
연결할 수 있습니다.자세한 내용은 문서를 참조하십시오. 아니요, 실제로 문서를 읽으십시오.
치트 시트에는 모든 것이 있습니다. 다양한 모드에서 gh-ost
호출하는 데 관심이있을 수 있습니다.
gh-ost
관련 서버의 신원을 파악합니다. 마스터가 명령문 기반 복제를 사용하는 경우 필수 모드)gh-ost
전자를 선호합니다)gh-ost
의 운영에 대한 신뢰를 구축하는 방법.우리의 팁 :
--test-on-replica
복제하십시오. 더 나은 방법은 연속적으로 만드십시오. 우리는 전체 생산 테이블 전체를 반복하여 하나씩 마이그레이션하고 결과를 확인하고 마이그레이션을 확인하는 것이 좋습니다.--execute
통해 실제 일을 발행하십시오.더 많은 팁 :
--exact-rowcount
사용하십시오--postpone-cut-over-flag-file
사용하여 컷오버 타이밍을 제어 할 수 있습니다또한 참조 :
gh-ost
사용gh-ost
사용 원래 이것은 Facebook Online Schema Change 및 PT-Online-Schema-Change와 같은 gh-osc
: Github Online Schema Change로 명명되었습니다.
그러나 드문 유전자 돌연변이가 발생했고 c
t
로 변형되었다. 그리고 그것은 우리에게 새로운 약어를 알아 내려고 노력하는 길을 보냈습니다. gh-ost
(Pronounce : Ghost ), Github의 온라인 스키마 트랜스 모그라이퍼/번역기/변압기/트랜스 피거 레이터의 약자
gh-ost
MIT 라이센스에 따라 라이센스가 부여됩니다
gh-ost
각각 자체 라이센스가있는 타사 라이브러리를 사용합니다. 이것들은 여기에 있습니다.
gh-ost
안정적인 상태로 풀려나지만 마일리지가 있습니다. 우리는 요청을 가져 오기 위해 열려 있습니다. 먼저 문제를 통해 의도에 대해 논의하십시오.
우리는 Github와 지역 사회에서 gh-ost
개발합니다. 우리는 다른 사람들과 다른 우선 순위를 가질 수 있습니다. 때때로 우리는 즉각적인 로드맵에 있지 않지만 다른 사람들에게 호소 할 수있는 기여를 제안 할 수 있습니다.
GH-OST로 시작하기위한 가이드는 GH-OST 코딩을 참조하십시오.
gh-ost
이제 GA이며 안정적입니다.
gh-ost
Linux 및 Mac OS/X 용 이진 형식으로 제공됩니다.
여기에서 최신 릴리스를 다운로드하십시오
gh-ost
GO 프로젝트입니다. Go 1.15
이상으로 제작되었습니다. 혼자서 구축하려면 다음 중 하나를 사용하십시오.
./bin/gh-ost
바이너리입니다.tar.gz
아티팩트 /tmp/gh-ost-release
를 구축하기위한 build.sh 일반적으로 master
브랜치는 안정적이지만 릴리스 만 생산에 사용됩니다.
gh-ost
는 GitHub의 데이터베이스 인프라 팀이 설계, 저술, 검토 및 테스트했습니다.