>  기사  >  데이터 베이스  >  Mysql 데이터베이스의 마스터-슬레이브 분리 예제 코드에 대한 자세한 설명

Mysql 데이터베이스의 마스터-슬레이브 분리 예제 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-27 13:12:051618검색

이 글에서는 Mysql 데이터베이스 마스터-슬레이브 분리의 예제 코드를 주로 소개합니다. MySQL 데이터베이스 설정 읽기-쓰기 분리는 데이터베이스의 쓰기 작업과 읽기 작업을 동시성과 대응 속도를 향상시키기 위해 다른 서버를 실행합니다.

소개

MySQL 데이터베이스 설정 읽기 및 쓰기 분리를 통해 데이터베이스에 대한 쓰기 작업과 읽기 작업을 서로 다른 서버에서 실행할 수 있어 동시성 및 해당 속도가 향상됩니다. .

요즘 대부분의 대형 웹사이트에서는 데이터베이스 마스터-슬레이브 분리와 읽기-쓰기 분리를 사용하는데, 이는 백업 역할을 할 뿐만 아니라 데이터베이스에 대한 읽기 및 쓰기 부담을 줄여준다는 이야기를 항상 들어왔습니다. , 하지만 들어본 적은 없습니다. 직접 연습한 적은 없습니다. 오늘은 연습하고 그 과정을 기록해 보도록 하겠습니다.

실험 환경

서버 두 대를 준비했는데, 하나는 로컬 컴퓨터이고 다른 하나는 원격 VPN입니다. 두 머신에 데이터베이스가 설치되어 있습니다.
MySQL 설치에 대해서는 소개하지 않겠습니다. 여기서 주의할 점은 동일한 버전의 MySQL을 설치하는 것이 가장 좋다는 점입니다. 일관성이 없으면 하위 버전에서 상위 버전을 읽을 때 문제가 발생할 수 있습니다. .일관되게 유지하는 것이 가장 좋습니다.

마스터 라이브러리 마스터

45.78.57.4 centos 7 Linux 시스템, mysql 버전 5.1.73

라이브러리의 노예

기본 127.0.0.1 macOs 시스템, mysql 버전 5.1.73

구성

사용자 생성

메인 라이브러리에 사용자를 생성하면 라이브러리에서 메인 라이브러리의 실행 로그를 읽을 수 있습니다.

mysql 명령줄에서 실행해야 하며 먼저 명령줄에 로그인해야 합니다

코드는 다음과 같습니다.

GRANT REPLICATION SLAVE ON *.* TO 'test'@'45.78.57.4' IDENTIFIED BY 'test';

my.cnf 수정

Linux 시스템은 /etc/my.cnf에 있고, mac 시스템은 MySQL이 설치된 디렉터리에 있으며, Windows의 경우에도 마찬가지입니다.

my.cnf 파일에 코드를 추가하세요

server-id = 1 //数据库ID号
log-bin=master-bin //启用二进制日志
log-bin-index=master-bin.index //二进制日志名称

파일 끝에 넣지 않도록 주의하시고, 앞쪽, 즉 [ 뒤에 넣으세요. mysqld], put my.cnf content

[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

상태 보기

mysql 명령줄에 로그인한 후 show master status를 입력합니다. 다음 정보가 나타나면. , 이는 마스터 데이터베이스 구성이 완료되었음을 의미합니다

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |  672675 |       |         |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

라이브러리에서 구성할 때 사용할 파일 및 위치의 내용을 기록합니다.

슬레이브 라이브러리 구성

로컬 컴퓨터(슬레이브 라이브러리)에서 my.cnf 파일을 찾아 다음 내용을 추가합니다. 메인 라이브러리 구성이 동일

server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

메인 라이브러리와 같은 위치에 있는지 확인하세요. 위치가 맨 마지막에 있어서 연결이 안 됐어요.

마스터-슬레이브 데이터베이스 연결

마지막 단계는 슬레이브 데이터베이스의 MySQL 명령줄에 로그인하고 다음 코드를 실행하는 것입니다. 주로 마스터 데이터베이스의 일부 정보를 연결합니다.

change master to master_host='45.78.57.4',  #Master 服务器Ip
master_port=3306,
master_user='test',
master_password='test', 
master_log_file='master-bin.000001', #Master日志文件名
master_log_pos=672675; #Master日志同步开始位置

실행 성공 여부에 주의하세요. 실행이 실패하면 코드를 주의 깊게 확인하여 어디에서 실수가 있는지 확인하세요.

정상적으로 실행되면 슬레이브를 시작하고 연결 상태를 확인합니다.

//需要再mysql命令行执行 
start slave; 
show slave status\G; //查看slave连接状态

상태 정보

        Slave_IO_State: Waiting for master to send event
         Master_Host: 45.78.57.4
         Master_User: test
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: master-bin.000001
     Read_Master_Log_Pos: 672913
        Relay_Log_File: slave-relay-bin.000044
        Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

주의!

이 두 가지 상태가 '예'여야 성공으로 간주됩니다. 그렇지 않은 경우 위 단계에서 구성 오류를 확인하세요.

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

테스트

이제 기본 데이터베이스에 데이터 조각을 추가하여 슬레이브 데이터베이스에 동일한 데이터가 있는지 확인합니다. 그렇다면 구성은 다음과 같습니다. 정상이며 기능은 정상적으로 사용됩니다.

마스터-슬레이브 분리의 주요 원칙은 메인 라이브러리의 실행 로그 기능을 활성화한 후 슬레이브 라이브러리에서 메인 라이브러리의 로그 정보를 읽어와서 메인 라이브러리에서 실행되는 SQL 문을 실행하는 것입니다. 마스터-슬레이브가 분리될 때까지 마스터-슬레이브 데이터는 그대로 유지되며 데이터를 백업하는 기능을 갖습니다.

위 내용은 Mysql 데이터베이스의 마스터-슬레이브 분리 예제 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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