이 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!