>  기사  >  데이터 베이스  >  MySQL 5.7.18 마스터-슬레이브 복제를 위한 마스터-슬레이브 인스턴스 설정에 대한 자세한 설명

MySQL 5.7.18 마스터-슬레이브 복제를 위한 마스터-슬레이브 인스턴스 설정에 대한 자세한 설명

小云云
小云云원래의
2017-12-25 11:21:021894검색

이 글은 주로 MySQL5.7.18 마스터-슬레이브 복제 설정(마스터 1개, 슬레이브 1개)에 대한 자세한 튜토리얼을 소개합니다. 필요한 친구들이 참고하면 도움이 될 것입니다. MySQL은 복제 기능을 수행하기 위해 3개의 스레드를 사용합니다(그 중 하나는 마스터 서버에 있고 다른 두 개는 슬레이브 서버에 있습니다. 이 기사의 내용을 자세히 소개하겠습니다.

1. 복제 원리

마스터 서버는 업데이트를 작성합니다) 이진 로그 파일에 저장하고 로그 회전을 추적하기 위해 파일 인덱스를 유지합니다. 이러한 로그는 슬레이브 서버에 전송된 업데이트를 기록합니다. 위치. 슬레이브는 그 이후 발생한 모든 업데이트를 수신한 다음 마스터가 새 업데이트를 알릴 때까지 기다립니다.

MySQL은 3개의 스레드를 사용하여 복제 기능을 수행합니다. 2) 서버에서 START SLAVE가 실행되면 슬레이브 서버는 마스터 서버에 연결하기 위한 I/O 스레드를 생성하고 마스터 서버는 스레드를 생성하여 마스터 서버에 보냅니다.

이 스레드는 마스터 서버의 Binlog Dump 스레드입니다. 슬레이브 서버 I/O 스레드는 마스터 서버 Binlog Dump 스레드에서 보낸 내용을 읽고 데이터를 복사합니다. 슬레이브 서버 데이터 디렉터리의 로컬 파일, 즉 릴레이 로그입니다. 세 번째 스레드는 릴레이 로그를 읽고 로그에 포함된 업데이트를 실행하기 위해 서버에서 생성되는 SQL 스레드입니다. 서버 준비

운영 체제 버전: Red Hat Enterprise Linux Server 릴리스 6.7(Santiago).

Master(마스터) ip: 172.16.115.245 호스트 이름: mysql2 server_id:245

Slave(슬레이브) ip: 172.16.115.247 호스트 이름 : mysql3 server_id:2 47

MySQL5.7.18

마스터 서버와 슬레이브 서버 모두에 설치됨 3. 마스터-슬레이브 복제 구현 세부 사항

1 마스터 서버에 서버에 대한 연결 계정을 설정하고 REPLICATION SLAVE 부여.

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl@20170509';

2. 마스터 구성 파일 my.cnf

server-id = 245
log_bin = /data/mysqllog/3306/bin_log/binlog

를 수정하세요. ​​​​그 후 MySQL을 다시 시작하세요.

mysqldump -uroot -p'密码' --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql

지침 :

--master-data=2는 백업 시 Binlog 위치와 마스터의 위치를 ​​기록한다는 의미

--단일 트랜잭션은 일관성 스냅샷을 얻는다는 의미

-R은 저장 프로시저 및 함수를 백업한다는 의미

--triggers 백업 트리거

-A는 모든 라이브러리 백업을 의미합니다

4. binlog 이름과 메인 라이브러리 백업 위치를 확인하거나

SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 79394496 |       |         |          |
+---------------+----------+--------------+------------------+-------------------+

로 이동하여 방금 백업한 데이터베이스 파일을 살펴보세요: vi all.sql

5. 슬레이브 라이브러리 구성 파일 my.cnf

server-id = 247 (唯一,不能与主库一样,一般设为服务器IP后3位)
log_bin = /data/mysql/logdir/3306/bin_log/binlog
innodb_file_per_table = ON
skip_name_resolve = ON
relay_log = /data/mysql/logdir/3306/relay_log/relay.log
binlog-format = row
log-slave-updates = true

read_only=ON(읽기 전용 모드) 수정

설정 후 MySQL을 다시 시작하세요.

6. 슬레이브 서버에서 마스터 백업을 복원합니다.

mysql -u root -p'密码' < all.sql

7. 슬레이브 라이브러리를 중지하고 마스터-슬레이브 매개변수를 구성한 다음 슬레이브 라이브러리를 엽니다.

mysql> stop slave; #暂停从库
mysql>CHANGE MASTER TO MASTER_HOST='172.16.115.245',MASTER_USER='repl', MASTER_PASSWORD='repl@20170509',MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=154;
mysql> start slave; #启动复制
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.115.245
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 104634190
Relay_Log_File: relay.000003
Relay_Log_Pos: 104632819
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0
Last_Error: 
Skip_Counter: 0
Exec_Master_Log_Pos: 104634190
Relay_Log_Space: 104634713
Until_Condition: None
Until_Log_File: 
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error: 
Last_SQL_Errno: 0
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 245
Master_UUID: 4f545573-3170-11e7-b903-000c29462d8c
Master_Info_File: /data/mysql/datadir/3306/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind: 
Last_IO_Error_Timestamp: 
Last_SQL_Error_Timestamp: 
Master_SSL_Crl: 
Master_SSL_Crlpath: 
Retrieved_Gtid_Set: 
Executed_Gtid_Set: 
Auto_Position: 0
Replicate_Rewrite_DB: 
Channel_Name: 
Master_TLS_Version:

8. 마스터 및 슬레이브 관련 프로세스를 확인합니다.

master Binlog Dump 스레드:

mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 13
User: repl
Host: 172.16.115.247:44602
db: NULL
Command: Binlog Dump
Time: 76514
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL

slave IO/SQL 스레드:

mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 10
User: system user
Host: 
db: NULL
Command: Connect
Time: 81148
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 12
User: system user
Host: 
db: NULL
Command: Connect
Time: 5
State: Reading event from the relay log
Info: NULL

9 이 시점에서 마스터-슬레이브 구성이 완료되었으며 생성할 수 있습니다. 마스터 서버의 데이터베이스, 테이블 등을 동작시켜 슬레이브 데이터베이스의 동기화 여부를 확인해보세요!

관련 권장 사항:


Mysql 마스터-슬레이브 복제 설정_MySQL

MySQL이 마스터-슬레이브 복제 프로세스를 구현하는 방법에 대한 자세한 예(그림)

MySQL 마스터-슬레이브의 원리 및 구성 분석 복제

위 내용은 MySQL 5.7.18 마스터-슬레이브 복제를 위한 마스터-슬레이브 인스턴스 설정에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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