MySQL의 마스터 (반 동기식 복제 비동기 복제)에서 복사

1.MySQl 마스터 - 슬레이브 복제

  • 원리 : 서버로부터 마스터 서버 복사 바이너리 로그 기록은 마스터 데이터의 일관된 상태를 얻기 위해 다시 수행 할.

  • 프로세스 : 라이브러리에서 I / O 스레드를 열고, 요청이 바이너리 로그를 중앙 도서관을 기록합니다. 마스터 노드 바이너리 로그 덤프 나사 턴은 자신의 바이너리 로그를 확인하고, 슬레이브 노드를 전송, 릴레이 로그 라이브러리에서 수신 된 데이터를 저장 릴레이에 추가 SQL 스레드를 열고 작업을 (릴레이 로그) 기계 자체에 다시 수행

  • 장점 :
    • 백업 데이터베이스로서, 트래픽에 영향을주지 않습니다
    • 읽기 및 분리, 일반적으로 쓸 수있는 라이브러리를 작성하려면 어떻게해야합니까, 다른 서버에 분산 된 하나 이상의 라이브러리를 읽고, 데이터베이스 서버의 성능을 발휘하지만, 데이터 일관성을 보장하기 위해

로그 형식의 마스터 복사본 2.

문 및 행 (혼합) 복제에 따라 문 문 기반 복제, 행 행 기반 복제, 다음은 형식이 세 가지 형식의 바이너리 로그를 의미 로그인합니다. 설정시 기본에서 행 기반 복제가 더 나은 데이터 저장소의 일관성을 보장 할 수있는 방법,하지만 로그 많은 양의 디스크 공간 문제를 고려해야 할

show variables like ‘%binlog%format%’;    #查看当前使用的binlog的格式
set binlog_format = ‘row’;                #设置格式,这种方法只在当前session生效
set global binlog_format = ‘row’;       #在全局下设置binlog格式,会影响所有的Session

3. 복사 아키텍처

3.1 마스터 멀티 슬레이브 아키텍처

요청 주요 저수지의 압력이 매우 큰 경우, 구성,로드 밸런싱에서 데이터를 읽어, 요구 사항이 여러 데이터베이스까지 매우 높은 요구하지 않습니다 실시간으로 많은 양의 읽기 및 쓰기 별도의 다중 사본 마스터 - 슬레이브 아키텍처 달성 줄일 수있다 주요 도서관의 압력을 읽습니다. 주요 라이브러리 다운 타임이 은행에서 스위치 기반의 은행이 될 수있을 때 그리고 서비스를 제공하기 위해 계속

3.2, 멀티 레벨 복제 아키텍처

주요 도서관에서 도서관에서 각각의 바이너리 로그는, 바이너리 로그 로그를 덤프 밀어 별도의 스레드를 가지고 있기 때문에 라이브러리, IO 압력의 수의 증가도 증가 할 것이다 중앙 도서관 네트워크의 압력이 시간, 다단계 너무 복사 아키텍처는 존재로했다.

다단에만 복수의 복제 마스터의 기준으로 건축 한 다음 중앙 도서관의 각각이 두 가지 라이브러리 사이에서 라이브러리 MASTER2을 추가, 두 가지 주요 도서관은 메인 라이브러리에 사용되는은 바이너리 로그에 밀려 로그 푸시 주요 라이브러리의 압력을 완화하기 위해, 라이브러리의 각으로 푸시.

그러나 그 단점은 바이너리 로그 로그가 지연 복제를 증가 라이브러리에서 도달 두 번 복사 할 수 있습니다.

우리는 차, 낮은 지연 다단계 복제 라이브러리에서 Blackhol 스토리지 엔진 (블랙홀 엔진)을 적용하여이 문제를 해결할 수 있습니다.

데이터 테이블 블랙홀에 기록 된 "블랙홀 엔진은"디스크에 기록되지, 그래서 테이블은 항상있을 것이다 빈 블랙홀 목록을 데이터 / 갱신 / 단지의 바이너리 로그에서 레코드를 삭제 삽입하고, 라이브러리에서 이동 복사 .

3.3, 듀얼 마스터 복제 / 듀얼 마스터 아키텍처

스위칭 마스터에서 장면의 모든 대상을 두 번 복제 방식

아키텍처에서 서비스를 제공하기 위해 계속 은행에서 스위치 기반의 은행이 될 것입니다 주요 라이브러리가 다운 단 하나 개의 중앙 도서관,있다. 원래 중앙 도서관이 데이터 소스 없으며, 새로운 중앙 도서관은 새로운 데이터를받은 후 때, 원래의 마스터 데이터베이스는 데이터가 점점 더 큰, 그래서, 다음 원래는 중앙 도서관이 될 수 없습니다, 동기화되지 않았습니다 복제 환경에서 주요 하나. 하면 다시 정상으로 원래의 기본 데이터베이스는 복제 환경에 추가 될 필요가있다.

주요 라이브러리를 추가 문제를 반복하지 않도록하기 위해, 두 개의 마스터 사본이 존재하게되었다. 주로 서로 두 데이터베이스 때 복구 아래 중앙 도서관, 그것은 컴퓨터에서 라이브러리 (현 중앙 도서관)에서 원래, 그래서 여전히 새로운 중앙 도서관에 데이터를 복사 때문이다. 에 관계없이 중앙 도서관 스위치의 역할은, 원래 기본 데이터베이스가 복제 환경에서되지 않습니다 방법.

4. 복제

이 개 복제 비동기 복제 및에서 MySQL의 마스터 복사본은 반 동기화입니다

4.1 비동기 복제

1, 로직

즉, 메인 경우, 즉시 클라이언트에 결과를 반환합니다 클라이언트에 의해 제출 된 트랜잭션 실행 완료 후 주요 라이브러리, 그리고 문제는 라이브러리에서 치료를 받았는지 상관하지 않는다, 그래서있을 것입니다 기본 MySQL의 복제가 비동기입니다 이 때, 주력을 향상 있는지 충돌, 제출 된 주요 거래에 이번에는 새로운 기본에 불완전한 데이터가 발생할 수, 라이브러리에서 양도 할 수 없습니다.

2, 기술적으로

주요 도서관 업무 단지 중앙 도서관 덤프 스레드가 다음 기본 데이터베이스가 커밋 작업을 처리 할 것, 새로운 바이너리 로그에 대한 통지를 전송하는 경우에는 바이너리 로그 파일에 이벤트를 쓰기 바이너리 로그, 이번에는 이러한 바이너리 로그 그 어떤 보장을 확산하지 않습니다 도서관에서 노드.

4.2 완전 동기식 복제

1, 로직

그것은 트랜잭션을 실행하는 클라이언트에 중앙 도서관을 돌아 왔을 때, 라이브러리의 모든 트랜잭션을 실행하는 것을 의미한다. 모든 때문에 전체 동기식 복제 성능이 심각한 영향을받을 수밖에 없다, 그래서 돌아 라이브러리에서 실행되는 트랜잭션의 완료를 기다릴 필요의.

2, 기술적으로

기본 데이터베이스 트랜잭션이 커밋 될 때, 모든 노드는 적용 및 후속 작업을 계속 트랜잭션, 다음 메인 쓰레드 라이브러리를 제출 라이브러리에서 접수되어야합니다. 그러나 단점은 트랜잭션 시간을 완료하기 위해 주요 라이브러리, 성능 저하를 뻗어된다는 것입니다.

4.3 반 동기식 복제

1, 로직

적어도 하나의 라이브러리에서 라이브러리에서 마스터 노드에 모든 기본 데이터베이스 저장소 의견을 기다리지 않고 할 수있는 로그 파일 릴레이 플러시 바이너리 로그받을 전체 비동기 복제 만 기본 데이터베이스의 사본을 완벽하게 동기 사이에 개재하고 기다려 . 한편, 여기에 많은 시간을 절약, 피드백이 아니라 완전히 완료받은 피드백을 제출, 그래서.

2, 기술적으로

비동기 복제 및 완전 동기식 복제 사이, 클라이언트에 의해 제출 된 트랜잭션을 즉시 클라이언트에 반환하고 있지 않습니다 만의 릴레이 로그에 라이브러리에서받은 적어도 하나를 기다렸다가 다시 클라이언트로 쓰기 후 마스터 데이터베이스. 비동기 복제에 대해, 지연은 적어도 TCP / IP 왕복 시간, 반 동기식 복제는 데이터 보안을 향상시킬뿐만 아니라 약간의 지연이 발생합니다. 따라서, 세미 동기는 바람직하게 낮은 지연 네트워크에서 사용된다.

추천

출처www.cnblogs.com/bigox/p/11530540.html