MySQL 양 방향 백업 실현 방법

MySQL 양 방향 백업 도 주 백업 이 라 고 불 린 다.즉,두 개의 MySQL 서 비 스 는 모두 Master 이 고 그 중에서 임의의 서 비 스 는 또 다른 서비스의 Slave 이다.
준비 하 다.
서버
MySQL 서버
판본
IP 주소
masterA
5.6.41
192.168.1.201
masterB
5.6.41
192.168.1.202
주:백업 한 MySQL 서버 버 전 은 가능 한 한 일치 합 니 다.다른 버 전 은 바 이 너 리 로그 형식 이 호 환 되 지 않 을 수 있 습 니 다.
구체 적 조작
주의 하 다.
조작 과정 중 양쪽 데이터 의 일치 에 주의 하 세 요!!!
masterA 설정
my.cnf

[mysqld]
#        
server-id=1
#         
log-bin=mysql-bin

#         ,       ,   
binlog-do-db=piumnl
#         ,       ,   
replicate-do-db=piumnl
#        
relay_log=mysqld-relay-bin
#         ,                
skip-slave-start=ON
#            
log-slave-updates=ON
#       ,      ,   
symbolic-links=0

#    
# resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
master-info-repository=table
relay-log-info-repository=table
relay-log-recovery=1

#    
#    dns   ,            
skip-host-cache
skip-name-resolve

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
masterB 설정
my.cnf

#          
[mysqld]
server-id=2
log-bin=mysql-bin

binlog-do-db=piumnl
replicate-do-db=piumnl
relay_log=mysql-relay-bin
skip-slave-start=ON
log-slave-updates=ON
symbolic-links=0

# resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
master-info-repository=table
relay-log-info-repository=table
relay-log-recovery=1

skip-host-cache
skip-name-resolve

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

백업 사용자 만 들 기
masterA&masterB 는 백업 사용 자 를 만 듭 니 다:

create user 'rep'@'%' identified by 'rep';  #       
grant replication slave on *.* to 'rep'@'%'; #                      
비고:
리 눅 스에 서 MySQL 대root@%사용자 가 grant 를 닫 았 습 니 다.priv 권한,그래서 원 격 로그 인 이 라면 권한 수여 에 실패 할 수 있 습 니 다4.567917.여기 서 사용자 계 정과 비밀 번 호 를 백업 하 는 것 은 일치 하지 않 습 니 다.여 기 는 작업 을 간소화 하기 위해 같은 계 정과 비밀 번 호 를 사용 합 니 다서버 다시 시작
서버 다시 시작
백업 열기
masterA
masterB 상태 보기

show master status\G;
#        File   Position  
백업 열기
stop slave;

# master_log_file          File  
# master_log_pos          Position  
change master to master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154;
start slave;
결과 보기

show slave status\G;
#         ,       Yes ,     No            ,          
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
masterB
masterA 의 동작 을 역방향 으로 반복 합 니 다.
테스트
각각 masterA 와 masterB 에 데 이 터 를 삽입 하고 다른 서버 가 예상 한 데이터 가 제때에 나타 나 는 지 확인 합 니 다.
문제.
MySQL Slave Failed to Open the Relay Log
이것 은 중계 로그 에 문제 가 생 긴 것 같 습 니 다.다음 작업 을 시도 해 보십시오.

stop slave;
flush logs;
start slave;
Got fatal error 1236 from master when reading data from binary log
주 라 이브 러 리 에서 로 그 를 끌 어 올 렸 을 때 주 라 이브 러 리 의 my sql 을 발견 하 였 습 니 다.bin.index 파일 의 첫 번 째 파일 이 존재 하지 않 습 니 다.

#         
#                  ,        
reset master;
reset slave;
flush logs;
.
.
를 사용 하여 삽입,업데이트,삭제 작업 을 진행 하면 백업 을 하지 않 습 니 다(이것 은 큰 구덩이 입 니 다)!!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기