>  기사  >  데이터 베이스  >  Mysql 마스터-슬레이브 동기화 구성 샘플 코드에 대한 자세한 설명

Mysql 마스터-슬레이브 동기화 구성 샘플 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-16 14:00:581056검색

이 기사는 주로 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=&#39;192.168.33.22&#39;,
 -> MASTER_USER=&#39;slave1&#39;,
 -> MASTER_PASSWORD=&#39;slavepass&#39;,
 -> MASTER_LOG_FILE=&#39;mysql-bin.000001&#39;,
 -> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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