이 글에서는 주로 mysql의 마스터-슬레이브 복제 및 읽기-쓰기 분리 구현에 대해 설명합니다. 다음은 mysql의 마스터-슬레이브 복제 소스 코드입니다. mysql 데이터베이스를 설치하는 방법은 여기서는 다루지 않고 마스터-슬레이브 복제만 다루겠습니다. 단계는 다음과 같습니다.
1. 마스터 서버와 슬레이브 서버는 각각 다음 작업을 수행합니다:
1.1 버전이 일치합니다
1.2.
1.3. 루트 비밀번호 변경
2. 기본 서버 마스터 수정:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[필수] 바이너리 로그 활성화
Server-id=222 //[필수] 서버 고유 ID, 기본값은 1, 일반적으로 마지막 세그먼트 IP
3. 슬레이브 서버 수정 슬레이브:
#vi /etc/my.cnf
[mysqld]
로그- bin=mysql-bin //[필수 아님 ]바이너리 로그 활성화
Server-id=226 //[필수] 서버 고유 ID, 기본값은 1, 일반적으로 IP의 마지막 세그먼트 가져옴
# 🎜🎜#
4. 두 서버를 다시 시작합니다. mysql /etc/init.d/mysql restart
5. 메인 서버 및 슬레이브 승인: #/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'% '는 'q123456'으로 식별됩니다. // 일반적으로 루트 계정은 사용되지 않습니다. &ldquo "%"는 계정과 비밀번호가 정확하다면 모든 클라이언트가 연결할 수 있음을 의미하며 대신 특정 클라이언트 IP를 사용할 수 있습니다. 192.168.145.226, 보안 강화.
6. 메인 서버의 mysql에 로그인하여 마스터 상태를 쿼리합니다 mysql>show master status;
+- ------ -----------+----------+---------------+----- ----- ------+
| 파일 위치 Binlog_Ignore_DB |
+----+- ---- ----+---------------+------+
| bin.000004 | 308 | ---+------+
1행(0.00초)
참고: 작동하지 않음 이 단계를 완료한 후 마스터 서버 상태 값이 변경되는 것을 방지하기 위해 서버 MYSQL
7 슬레이브 서버 구성 슬레이브:
mysql>change master to master_host='192.168.145.222',master_user ='mysync',master_password='q123456', master_log_file='mysql-bin.000004', master_log_pos=308; // 연결이 끊어지지 않도록 주의하세요. 없다 308 숫자 앞뒤에 작은따옴표가 있습니다.
Mysql>start 슬레이브; //슬레이브 서버 복제 기능 시작
8 슬레이브 서버 복제 기능 상태 확인:
#🎜🎜 ## 🎜🎜# mysql> 슬레이브 상태 표시G *************************** 1. 행 ** ** *************************
Slave_IO_State: 마스터가 이벤트를 보낼 때까지 기다리는 중
'' ' Slave_IO_State: 마스터가 이벤트를 보내기를 기다리는 중
in – out . 메인 서버 주소#m#Master_user: mysync // 계정 이름을 인증합니다. 루트 사용을 피하세요
Master_port: 3306 // 데이터베이스 포트입니다. 버전에는 이 줄이 없습니다
connect_retry: 60
Master_log_file: MySQL-BIN.000004
Read_master_LOG_POS: 600 //#바이너리 로그 위치의 동기 읽기가 exec_master_log_pos와 같은 것보다 큽니다#🎜 🎜#관련_로그_파일: ddte 관련 _Log_POS: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //이 상태는 YES여야 합니다
_실행 중: … 프로세스는 정상적으로 실행되고 있어야 합니다(즉, YES 상태). 그렇지 않으면 둘 다 오류 상태입니다(예: NO 중 하나는 오류임).
위의 작업 과정에서 마스터 및 슬레이브 서버 구성이 완료됩니다.
9. 마스터-슬레이브 서버 테스트:
마스터 서버 Mysql에서 데이터베이스를 생성하고 이 라이브러리에 테이블을 생성하여 데이터 조각: # 🎜🎜#
mysql> 데이터베이스 생성 hi_db;
쿼리 OK, 1개 행이 영향을 받음(0.00초)
mysql> hi_db를 사용하세요.
데이터베이스가 변경되었습니다
mysql> 테이블 생성 hi_tb(id int(3),name char(10));
쿼리 확인, 0개 행이 영향을 받음(0.00초)
mysql> hi_tb 값(001,'bobu')에 삽입;
쿼리 OK, 1개 행이 영향을 받음(0.00초)
mysql> 데이터베이스 표시;
+---------+
| 데이터베이스 |
+-------+
| information_schema |
| hi_db |
| mysql |
| test |
+---------+
4개 행 세트(0.00초)
从服务器Mysql查询:
mysql> 데이터베이스 표시;
+---------+
| 데이터베이스 |
+---------+
| information_schema |
| hi_db | //여기 있습니다,大家看到了吧
| mysql |
| test |
+---------+
4개 행 세트(0.00초)
mysql> hi_db를 사용하세요
데이터베이스 변경됨
mysql> hi_tb에서 *를 선택하십시오. //查看主服务器上新增的具体数据
+------+------+
| 아이디 | 이름 |
+------+------+
| 1 | bobu |
+------+------+
1행 세트(0.00초)
10、完成:
编写一shell脚本 ,用nagios监控slave的两个yes (Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。
상关推荐:
위 내용은 mysql 마스터-슬레이브 구성의 소스 코드 및 복제 원리에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!