Mysql GTID 기반 구축 주종 동기 화

4246 단어 데이터 뱅 크
GTID 의 개념
1.전역 사무 표지:global transaction identifiers.2.GTID 는 하나의 업무 가 일일이 대응 되 고 전체 국면 에서 유일한 ID 입 니 다.3.하나의 GTID 는 한 서버 에서 한 번 만 실행 하고 중복 실행 으로 인해 데이터 가 혼 란 스 럽 거나 주종 이 일치 하지 않 는 것 을 피한다.4.GTID 는 전통 적 인 복제 방법 을 대체 하고 MASTER 을 사용 하지 않 습 니 다.LOG_FILE+MASTER_LOG_POS 에서 복 사 를 시작 합 니 다.MASTER 사용AUTO_POSTION=1 방식 으로 복 사 를 시작 합 니 다.5.MySQL-5.6.5 가 지원 하기 시 작 했 고 MySQL-5.6.10 이후 에 보완 되 기 시작 했다.6.전통 적 인 슬 레이 브 엔 드 에서 binlog 는 열지 않 아 도 되 지만 GTID 에서 슬 레이 브 엔 드 의 binlog 는 반드시 열 려 야 합 니 다.실 행 된 GTID(강제)를 기록 하 는 것 이 목적 입 니 다.
2.GTID 의 구성
GTID = source_id:transaction_idsource_id:원본 서버,즉 my sql 서버 의 유일한 server 감별 에 사용 합 니 다.uid 는 GTID 가 slave 로 전달 되 기 때문에 원본 ID 로 도 이해 할 수 있 습 니 다.transaction_id:현재 서버 에 제출 된 트 랜 잭 션 의 시리 얼 번호 입 니 다.보통 1 부터 증가 하 는 시퀀스 입 니 다.하나의 수 치 는 하나의 트 랜 잭 션 에 대응 합 니 다.예시:3E11FA 47-71CA-11E1-9E33-C80AA 9429562:23 앞 에 있 는 서버 의 serveruid,즉 3E11FA 47-71CA-11E1-9E33-C80AA 9429562,뒤의 23 은 transactionid
3.GTID 의 장점
1.더 간단하게 failover 를 실현 합 니 다.예전 처럼 log 를 찾 지 않 아 도 됩 니 다.file 과 logpos。2.더욱 간단 한 구축 주종 복제.3.전통 적 인 복제 보다 안전 합 니 다.4.GTID 는 연속 적 으로 구멍 이 없고 데이터 의 일치 성 을 확보 하 며 분실 되 지 않 습 니 다.
4.GTID 의 작업 원리
1.하나의 업무 가 주 라 이브 러 리 에서 실행 되 고 제출 될 때 GTID 를 생 성하 여 binlog 로그 에 기록 합 니 다.2.binlog 를 slave 로 전송 하고 slave 의 relaylog 에 저장 한 후 이 GTID 의 이 값 설정 gtid 를 읽 습 니 다.next 변 수 는 Slave 에 게 다음 실행 할 GTID 값 을 알려 줍 니 다.3.sql 스 레 드 는 relay log 에서 GTID 를 가 져 온 다음 에 slave 엔 드 의 binlog 에 이 GTID 가 있 는 지 비교 합 니 다.4.기록 이 있 으 면 이 GTID 의 업무 가 이미 실행 되 었 음 을 설명 하고 slave 는 무시 합 니 다.5.기록 이 없 으 면 slave 는 이 GTID 업 무 를 수행 하고 이 GTID 를 자신의 binlog 에 기록 하 며 실행 업 무 를 읽 기 전에 다른 session 이 이 GTID 를 가지 고 있 는 지 확인 하여 중복 되 지 않도록 합 니 다.6.분석 과정 에서 메 인 키 가 있 는 지 여 부 를 판단 하고 없 으 면 2 급 색인 을 사용 하 며 없 으 면 모두 스 캔 합 니 다.
5.GTID 의 설정
GTID 설정 에 대해 서 는 주로 설정 파일 에서 GTID 특성 과 관련 된 몇 가지 중요 한 매개 변 수 를 수정 합 니 다.my sql 버 전 은 my sql-5.6.5 버 전 이상 을 권장 합 니 다.
Mysql 마스터 설정:
[mysqld]
#GTID:
server_id=135                #   id
gtid_mode=on                 #  gtid  
enforce_gtid_consistency=on  #  gtid   ,       create table    

#binlog
log_bin=master-binlog
log-slave-updates=1    
binlog_format=row            #    ,             

#relay log
skip_slave_start=1      

Mysql 슬 레이 브 설정:
[mysqld]
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=143

#binlog
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row      #    ,             

#relay log
skip_slave_start=1

6.GTID 기반 복사 설정
1.새로 설 정 된 my sql 서버
새로 설 정 된 my sql 서버 에 대해 서 는 본 고의 다섯 번 째 설명 에 따라 매개 변수 파일 을 설정 한 후 slave 에서 다음 과 같은 작업 을 수행 합 니 다.
(root@localhost) [(none)]> CHANGE MASTER TO  
    ->  MASTER_HOST='192.168.1.135',    
    ->  MASTER_USER='repl',    
    ->  MASTER_PASSWORD='xxx',    
    ->  MASTER_PORT=3306,    
    ->  MASTER_AUTO_POSITION = 1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

(root@localhost) [(none)]> start slave;
Query OK, 0 rows affected (0.01 sec)

(root@localhost) [(none)]> show slave status \G ###               
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.135
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-binlog.000001
          Read_Master_Log_Pos: 151
               Relay_Log_File: slave-relay-log.000002
                Relay_Log_Pos: 369
        Relay_Master_Log_File: master-binlog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

2.고전 복사 my sql 서버 를 실행 하여 GTID 로 복사 합 니 다.
a.본 고의 다섯 번 째 설명 에 따라 매개 변수 파일 을 설정 합 니 다.b、모든 서버 설정 global.readonly 매개 변수,서버 동기 화 완료 대기;mysql> SET @@global.read_only = ON; c.마스터 서버 를 순서대로 다시 시작 합 니 다.d.change master 를 사용 하여 마스터 설정 을 업데이트 합 니 다.
        mysql> CHANGE MASTER TO
        > MASTER_HOST = host,
        > MASTER_PORT = port,
        > MASTER_USER = user,
        > MASTER_PASSWORD = password,
        > MASTER_AUTO_POSITION = 1;

e.라 이브 러 리 에서 mysql>START SLAVE 복사 하기;f.인증 마스터 복사
다음으로 전송:https://blog.51cto.com/7834466/2345202

좋은 웹페이지 즐겨찾기