이 기사는 주로 Mysql 마스터-슬레이브 동기화 실습에 대한 자세한 설명을 소개하며, Mysql 마스터-슬레이브 동기화의 원리와 구현을 예제로 분석합니다. 그것을 참조하십시오.
1. 소개
이전에 Mysql 마스터-슬레이브 동기화의 원리라는 글을 쓴 적이 있습니다.
이 글을 보신 어린이 신발은 꼭 한번 신어보고 싶은 마음이 크실 텐데요.
오늘은 실용적인 mysql 마스터-슬레이브 동기화를 해보겠습니다!
2. 환경 설명
os:ubuntu16.04
mysql:5.7.17
다음 실습은 위의 환경을 기반으로 합니다. 물론 다른 환경도 거의 동일합니다.
3. 실제 전투 시작
도구
2대:
마스터 IP: 192.168. 33.22
슬레이브 IP: 192.168.33.33
마스터 머신에서의 작업
변경 구성 파일
/etc/mysql/mysql.conf.d/mysqld.cnf
파일을 찾았습니다.
구성은 다음과 같습니다.
bind-address = 192.168.33.22 #your master ip server-id = 1 #在master-slave架构中,每台机器节点都需要有唯一的server-id log_bin = /var/log/mysql/mysql-bin.log #开启binlog
2. 구성 파일을 적용하려면 mysql을 다시 시작하세요.
sudo systemctl restart mysql
3. 마스터-슬레이브 동기화를 위한 mysql 사용자를 생성합니다.
$ mysql -u root -p Password: ##创建slave1用户,并指定该用户只能在主机192.168.33.33上登录。 mysql> CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass'; Query OK, 0 rows affected (0.00 sec) ##为slave1赋予REPLICATION SLAVE权限。 mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33'; Query OK, 0 rows affected (0.00 sec)
4. MYSQL에 읽기 잠금 추가
메인 데이터베이스와 슬레이브 데이터베이스의 데이터를 일관되게 유지하기 위해 먼저 MySQL을 읽기 전용으로 만들기 위해 읽기 잠금을 설정합니다.
mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec)
5. MASTER REPLICATION LOG의 위치를 기록합니다.
이 정보는 나중에 사용됩니다.
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 613 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
6. 마스터 DB에 있는 기존 데이터 정보를 내보내기
$ mysqldump -u root -p --all-databases --master-data > dbdump.sql
7. 잠금
mysql> UNLOCK TABLES;
8. 6단계의 dbdump.sql 파일을 슬레이브에 복사
scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu
슬레이브 머신에서의 작업
1. 구성 파일을 변경합니다
파일을 찾습니다 /etc/mysql/mysql.conf.d/mysqld.cnf
.
다음과 같이 구성을 변경합니다.
bind-address = 192.168.33.33 #your slave ip server-id = 2 #master-slave结构中,唯一的server-id log_bin = /var/log/mysql/mysql-bin.log #开启binlog
2. 구성 파일을 적용하려면 mysql을 다시 시작하세요.
sudo systemctl restart mysql
3. 마스터 DB에서 가져옵니다. 마스터-슬레이브 데이터 일관성을 유지하기 위해 dbdump.sql 파일 내보내기
$ mysql -u root -p < /home/ubuntu/dbdump.sql
4. 슬레이브가 마스터와 연결을 설정하여 동기화하도록 합니다
$ mysql -u root -p Password: mysql> STOP SLAVE; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.33.22', -> MASTER_USER='slave1', -> MASTER_PASSWORD='slavepass', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=613; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql> START SLAVE; Query OK, 0 rows affected (0.00 sec)
위의 SHOW MASTER STATUS에서 MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=613 값을 가져왔습니다.
이렇게 설정하면 마스터-슬레이브 동기화가 가능해집니다~
위 내용은 Mysql 마스터-슬레이브 동기화 구성 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!