MySQL 마스터-슬레이브 복제 환경은 모든 고가용성의 기반이라고 할 수 있습니다. 그 원리도 상대적으로 간단합니다. 먼저 마스터-슬레이브 복제의 원리를 이해해 보겠습니다.
그림에는 7단계가 있지만 기억과 이해를 돕기 위해 단순화할 수 있습니다.
수정 및 쓰기 작업 수행 마스터에서 ;
MySQL은 수정된 데이터를 binlog에 기록합니다.
슬레이브는 IO 스레드를 시작하여 마스터의 새 binlog를 로컬 릴레이 로그로 가져옵니다.
릴레이 로그를 재생합니다. 마스터에서 다운로드할 수 있습니다. 위의 수정 및 추가 작업은 슬레이브 시스템에서 다시 실행됩니다.
슬레이브도 일반 작업에 따라 로컬 binlog에 작업을 기록합니다.
Alibaba Cloud와 Tencent Cloud의 Diaosi 머신을 각각 보유하고 있어 테스트용으로 사용하고 있습니다. 개인 정보 보호를 위해 IP를 교체했지만 작동에는 영향을 미치지 않습니다.
Host | ip | Port | Version | Master-Slave |
---|---|---|---|---|
Alibaba Cloud | 192.168.1.100 | 3 306 | MySQL5.7.14 | Master |
텐센트 클라우드 | 192.168.1.200 | 3306 | MySQL5.7.18 | Slave |
[mysqld] log-bin=mysql-bin server-id=1003306
/etc/init.d/mysql restart
복제 전용 계정 만들기
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';
#防止DDL、写操作 mysql>FLUSH TABLES WITH READ LOCK; shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sql
다음 방법으로도 보실 수 있습니다:
root@localhost [mysql]>show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000045 | 939 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
Unlock table
mysql> UNLOCK TABLES;
원격으로 파일을 과거로 전송
rsync back.sql root@192.168.1.200:/root
슬레이브 작업
[mysqld] log-bin=mysql-bin server-id=2003306
mysqld 옵션에서 편집하세요. MASTER_LOG_FILE
및MASTER_LOG_POS
는 현재shell>mysqldump -uroot -p --databases t1 <back.sql><em> 여기에 있는 </em>MASTER_LOG_FILE<em> 및 </em>MASTER_LOG_POS<em> 값은 단지 </em>마스터 상태 표시<em>입니다. 물론 </em>more를 사용하여 지정해야 하는 위치를 볼 수도 있습니다. <p></p> <pre class="brush:php;toolbar:false">CHANGE MASTER TO MASTER_HOST='192.168.1.200',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000045',MASTER_LOG_POS=939;슬레이브 시작
shell>more back.sql -- MySQL dump 10.13 Distrib 5.7.14, for linux-glibc2.5 (x86_64) -- -- Host: localhost Database: -- ------------------------------------------------------ -- Server version 5.7.14-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Position to start replication or point-in-time recovery from -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000045', MASTER_LOG_POS=939;Slave_IO_Running 및 Slave_SQL_Running에 대해 이중 YES가 표시되면 일반적으로 문제가 없습니다. Verification이제 마스터에서 새 데이터베이스 생성, 새 데이터 테이블 생성, 출력 삽입 등을 수행하여 마스터-슬레이브가 유효한지 확인할 수 있습니다. 이 단계에서는 원하는 것은 무엇이든 할 수 있습니다!
위 내용은 Alibaba Cloud 및 Tencent Cloud에서 기존 마스터-슬레이브 복제 환경을 쉽게 설정하는 방법을 알려주는 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!