참고용으로 mysql 5.7 docker 마스터-슬레이브 복제 아키텍처 튜토리얼을 공유하세요
환경 버전:
MySQL: 5.7.13
도커: 1.11.2
CentOS : 7.1
1. 먼저 두 개의 물리적 머신에 두 개의 MySQL을 설치합니다. 명령어는 다음과 같습니다
코드는 다음과 같습니다.
docker pull mysql:5.7.13
docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.13
2. 메인 데이터베이스에 복사 계정을 생성하세요
코드는 다음과 같습니다.
GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'192.168.2.103' IDENTIFIED BY 'qaz.00JK';
3. 메인 라이브러리의 구성 파일을 수정합니다 (번거로우시겠지만 좀 더 편리한 수정 방법이 있어야 합니다)
3.1 먼저 docker에서 호스트/루트 디렉터리로 구성 파일을 복사합니다.
docker cp anuo-mysql:/etc/mysql/my.cnf /root
3.2 호스트에서 my.cnf를 열고 [mysqld] 노드 끝에
을 추가합니다.log-bin=mysql-bin
서버 ID=1
3.3 그런 다음 이 파일을 docker mysql에 업로드하고 덮어씁니다
docker cp /root/my.cnf anuo-mysql:/etc/mysql/my.cnf
3.4 mysql의 docker를 다시 시작하여 구성을 적용하세요
docker restart anuo-mysql
4. 슬레이브 라이브러리 구성 파일 수정
3단계와 동일하며 차이점은
서버 ID=2
5. 백업을 시작합니다. 기본 데이터베이스에서 다음 명령을 실행하여 기본 데이터베이스의 모든 테이블을 읽기 전용 및 쓰기 불가 상태로 설정하여 테이블 간의 데이터 일관성을 유지합니다. 마스터 및 슬레이브 데이터베이스
읽기 잠금 기능이 있는 테이블 플러시
6. 메인 데이터베이스의 데이터베이스를 백업하고 슬레이브 데이터베이스에서 복원합니다
mysql에 navicat을 사용하면 매우 편리합니다
7. 슬레이브 라이브러리 복원 후 메인 라이브러리의 읽기 잠금을 해제하여 메인 라이브러리가 쓰기 권한을 복원할 수 있도록 합니다
테이블 잠금 해제
8. 메인 라이브러리에 연결하여 슬레이브 라이브러리에서 실행하도록 슬레이브 라이브러리를 구성합니다
CHANGE MASTER TO MASTER_HOST='192.168.2.108', MASTER_PORT=3306, MASTER_USER='rep1', MASTER_PASSWORD='qaz.00JK', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=898;
마지막 2개 항목
MASTER_LOG_FILE 및 MASTER_LOG_POS
메인 라이브러리에서 실행:
을 얻기 위해 SHOW MASTER STATUS;
해당 필드는 파일 및 위치입니다
9. 슬레이브 라이브러리에서 슬레이브 스레드를 시작하여 동기화를 시작합니다
슬레이브 시작;
10. 슬레이브 라이브러리의 동기화 상태를 확인하세요
슬레이브 상태 표시
Slave_Io_State 필드가 보이는 경우:
마스터가 이벤트를 보내길 기다리는 중...
그렇다면 성공!!!
이상은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되길 바라며, 많은 응원 부탁드립니다.