>데이터 베이스 >MySQL 튜토리얼 >Windows 호스트에서 MySQL 마스터-슬레이브 복제를 구현하는 방법은 무엇입니까?

Windows 호스트에서 MySQL 마스터-슬레이브 복제를 구현하는 방법은 무엇입니까?

亚连
亚连원래의
2018-05-12 09:22:391888검색

MySQL의 마스터-슬레이브 복제는 binlog 로그를 통해 구현됩니다. 마스터-슬레이브 복제에서 "마스터"는 MySQL 마스터 서버의 데이터베이스를 의미하고 "슬레이브"는 MySQL 슬레이브 서버의 데이터베이스를 의미하며 이는 복제는 데이터베이스 수준을 기반으로 합니다. 따라서 슬레이브 서버의 데이터베이스 이름은 마스터 서버의 데이터베이스 이름과 일치해야 합니다. 그런 다음 마스터-슬레이브 복제를 수행하려면 최소한 두 대의 MySQL 서버가 있어야 합니다. 두 개의 MySQL 서버) 서버가 서로 다른 호스트에 있거나 두 개의 MySQL이 서로 다른 포트를 사용하여 한 호스트에 설치되어 있습니다.

일반적으로 MySQL 데이터베이스의 메인 데이터베이스와 슬레이브 데이터베이스는 서로 다른 호스트에 배포됩니다. 현재 호스트가 하나만 있고 Windows 시스템인 경우 MySQL의 마스터-슬레이브 복제를 구현하는 방법은 무엇입니까? 방법은 다음과 같습니다.

여기에서는 마스터 하나와 슬레이브 하나의 작동 방법만 소개합니다.

내 컴퓨터에는 xampp 통합 환경(wamp 설치 패키지와 유사)이 설치되어 있으며, 그 안에 있는 MySQL 서비스를 MySQL의 메인 서버로 사용할 수 있습니다. 그런 다음 이 컴퓨터에 데이터베이스의 슬레이브 서버로 또 다른 MySQL을 설치해야 합니다.

내 컴퓨터 xampp에 설치된 MySQL 버전은 5.6.20이고 포트는 3306입니다.

다른 MySQL을 설치해야 하며(문제를 방지하려면 동일한 버전 또는 유사한 버전을 설치하는 것이 가장 좋음) 포트가 3307

로 변경됩니다. 데이터베이스 서버 매개변수:


  • 마스터 서버(마스터): IP는 127.0.0.1, 포트는 3306

  • 슬레이브(슬레이브): IP는 127.0.0.1, 포트는 3307

마스터 서버 구성:

마스터 서버 데이터베이스 구성 파일(

E:xamppmysqlbinmy.ini)을 수정하고 [mysqld] 태그 하단에 다음 코드를 추가합니다.

#백업해야 할 데이터베이스

binlog-do -db=test

#필요하지 않음 백업된 데이터베이스

binlog-ignore-db=mysql

#바이너리 로그 활성화

log-bin=mysql-bin

#서버 ID

server-id=1

저장하고 종료한 후 MySQL 메인 서버를 다시 시작합니다.

binlog-do-db는 동기화해야 하는 데이터베이스를 지정하는 데 사용되며,

binlog-ignore-db는 동기화할 필요가 없는 데이터베이스를 지정하는 데 사용됩니다. 두 매개변수가 모두 설정되지 않은 경우 슬레이브 서버는 모든 데이터베이스를 복사합니다. 마스터 서버.

일반적으로 루트 계정은 계정 동기화에 사용되지 않습니다. 따라서 메인 서버에 새 사용자를 생성해야 합니다(예: user01, 비밀번호는 123456).

여기서 명령줄을 사용하여 생성합니다. 방법은 다음과 같습니다.

cmd를 열고 E:xamppmysqlbin으로 전환한 다음 루트 계정을 사용하여 MySQL 메인 서버에 연결합니다.

mysql -uroot -p -P3306

새 사용자 만들기:

'123456'으로 식별되는 'user01'@'127.0.0.1' 사용자 만들기;

(다음 IP 주소는 @는 연결이 허용된 클라이언트의 IP 주소입니다. )

그런 다음 새 사용자에 대한 마스터-슬레이브 복제 권한을 구성합니다.

그랜트 *.*의 복제 슬레이브를 '123456'으로 식별되는 'user01'@'127.0.0.1';

(@ 뒤의 IP 주소는 연결이 허용된 클라이언트의 IP 주소입니다. '%'로 변경되었습니다. 클라이언트에 IP 주소 제한이 없다는 의미입니다.)

메인 서버의 데이터베이스(테스트)에 이미 데이터가 있는 경우 메인 서버에 있는 데이터를 수동으로 복사해야 합니다. 먼저 슬레이브 서버. 방법은 다음과 같습니다.

이 경우에는 데이터베이스 하나만 백업합니다(테스트). 테스트에는 basic_user 테이블이 있고, 테이블에 이미 데이터가 있습니다. 데이터를 복사할 때 데이터베이스 테스트의 데이터가 업데이트되는 것을 방지하려면 먼저 데이터베이스를 잠가야 합니다. 명령은 다음과 같습니다.

읽기 잠금으로 테이블을 플러시합니다. 이 명령은 기본 서버의 모든 데이터베이스에 읽기 잠금을 추가합니다. 읽기 잠금과 쓰기 잠금의 차이점은 다음과 같습니다.

읽기 잠금(읽기 잠금)이라고도 합니다. 공유 잠금, 모든

읽기 작업을 허용하지만 쓰기 작업은 차단합니다. 즉, 모든 연결은 데이터를 읽을 수만 있고 데이터를 쓸 수는 없습니다.

  • 쓰기 잠금(쓰기 잠금): 배타 잠금이라고도 하며 배타 잠금은 현재 연결의 읽기 및 쓰기만 허용하고 다른 동시 읽기 작업 및 쓰기 작업은 허용하지 않습니다.

  • 마스터 서버의 데이터베이스를 잠근 후 슬레이브 서버에서도 데이터베이스 테스트를 생성하고 모든 테이블(테이블 구조 및 테이블 데이터 포함)을 가져옵니다.

그런 다음 다음 명령을 실행하여 잠금을 해제합니다.

unlock tables

주 서버의 마스터 상태 보기:

mysql gt; 쇼 마스터 상태; +------+----------+-------------+ --- ---------------+------+| 파일 | Binlog_Do_DB | Execulated_Gtid_Set | +------+----------+------------+---------+ --- ---------------+------+

| mysql-bin.000008 | mysql | 테스트 | ------+------+

구성: server:

슬레이브 서버의 데이터베이스 구성 파일(

E:mysqlmy.ini)을 수정하고 [mysqld] 태그 하단에 다음 코드를 추가합니다.

#port port = 3307

#serveridserver_id = 2

#바이너리 로그 활성화(슬레이브 서버는 바이너리 로그를 활성화할 필요가 없습니다)

log-bin=mysql-bin

저장하고 종료하고 MySQL 서비스를 다시 시작합니다.

MySQL 슬레이브 서버에 연결:

mysql -uroot -p -P3307

복제 매개변수 구성:

마스터를 master_host='127.0.0.1',master_user='user01',master_password로 변경 = '123456',master_port=3306,master_log_file='mysql-bin.000008',master_log_pos=498;

매개변수 세부정보:

master_host: 메인 서버의 IP
master_user : master 서버에 새로 생성된 사용자 이름
master_password: 사용자의 비밀번호
master_port: 마스터 서버의 포트가 수정되지 않은 경우 기본값이면 충분합니다.

master_log_file : 마스터 서버 바이너리 로그 파일명, 마스터 서버의 마스터 상태 조회 시 표시되는 File 값 입력

master_log_pos : 로그 위치, 채우기 마스터 서버의 마스터 상태를 보려면

일 때 표시되는 위치 값 슬레이브 서버의 슬레이브 복제 기능 시작:

start 슬레이브

슬레이브 서버의 슬레이브 상태 보기:

mysql> ; 슬레이브 상태 표시 G

********* ******************** 1. 행 ************ *************** I SLAVE_IO_STATE: 마스터가 이벤트를 보내기를 기다리는 중

Master_host: 127.0.0.1

Master_user: User01

Master_Port: 3306

Connect_retry: 60

Master_log_file: MySQL-BIN.000000 09_ Read_Master_LOG_POS: 120

Relay_log_file: hp-PC-relay-bin.000004

                                                     사용 hp-PC-relay-bin을 사용합니다. Yes

Slave_SQL_Running: Yes

Slave_IO_Running 및 Slave_SQL_Running의 ​​​​값이 모두 Yes이면 마스터-슬레이브 복제의 모든 구성이 성공한 것입니다. 즉, 슬레이브 서버가 데이터베이스 데이터를 마스터 서버와 자동으로 동기화할 수 있다는 의미입니다.

이후 마스터 서버의 데이터가 업데이트되는 한(예: 테스트 데이터베이스에 새 테이블이 생성되거나 테이블의 데이터가 변경되는 경우) 슬레이브 서버는 자동으로 다음과 일치합니다. 마스터 서버. 그러나 누군가 의도적으로 슬레이브 서버의 데이터를 변경하는 경우 두 개의 MySQL 서버를 상호 마스터-슬레이브로 설정하지 않는 한 마스터 서버의 데이터는 동기적으로 업데이트되지 않습니다.
위는 윈도우 환경에서 mysql을 구성하는 마스터-슬레이브 아키텍처에 대해 정리한 내용입니다. 관심 있는 친구들은 시도해 볼 수 있습니다.

관련 기사:

Windows에서 mysql-5.7.21 설치

MySQL의 기본 지식 요약

navicat for mysql 다운로드 , 간단하게 설치하고 사용하세요

위 내용은 Windows 호스트에서 MySQL 마스터-슬레이브 복제를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.