리눅스 MySQL의 데이터베이스 복제

메인 서버 구성

1, 구성 파일의 my.cnf를 수정

[루트 @ 로컬 호스트의 MySQL] 빔 /etc/my.cnf에 #의

[mysqld에]에서 # 덧붙였다
. 서버 ID 1 =
log_bin = 마스터 - 빈
log_bin_index = 마스터 - bin.index
binlog_do_db = 테스트
# 참고 :
# 서버-ID 서버 고유 식별.
데이터 동기화 문이 데이터베이스에서 하나 하나이 문을 실행됩니다 MySQL의 바이너리 로그를 시작 #log_bin.
지정 기록 바이너리 로그 데이터베이스를 #binlog_do_db, 당신은 당신이 여러 데이터베이스를 복사하면, 복사 할 해당 데이터베이스 이름은 반복이 옵션을 설정합니다.
#binlog_ignore_db는 바이너리 로그 데이터베이스가이 데이터베이스 이름을 복사 할 필요가 없습니다 기록하지 않습니다 지정 및 여러 데이터베이스가있는 경우, 반복이 옵션을 설정합니다.
# 필요가 상호 배타적 인 옵션으로 즉, binlog_do_db 및 binlog_ignore_db을 주목해야한다, 일반적으로 하나가 될 수 있습니다.

이 서버의 사용자 및 사용 권한을 만들

# mysql 데이터베이스 속으로
[루트 @ localhost를 MySQL의] # mysql을 -p-uroot-가
암호를 입력 :

#은 데이터베이스의 사용자 및 사용 권한을 만들 masterbackup
* *에서 MySQL> 부여 복제 노예를 '식별'masterbackup@'192.168.17.%합니다. 123456 ';
# 참고하면
메인 서버에 액세스 할 수 있습니다 0-255 IP를 의미 # 192.168.17 %의 와일드 카드 구성, 공식적으로 서버 환경을 지정된 IP.
# %에 192.168.17 %, 그것은 모든 IP 될 수 있다면. 에서 데이터베이스에 액세스하기를 기본 서버로

# 출구 MySQL은
MySQL의> 종료;

3, MySQL의 서비스를 다시 시작

[루트 @ localhost를 MySQL의] # 서비스 mysqld를 다시 시작

4 주 서버의 상태를 볼

# MySQL 데이터베이스 속으로
[루트 @ localhost를 MySQL의] # mysql을 -p-uroot-
암호를 입력 :

주 서버의 # 체크 상태
MySQL의> 쇼 마스터 상태;
+ ------------------- -------------- ------------------ + + + + ---- ---------- + ---------------
| 파일 | 위치 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+ ------------------- + - ------------------ -------------- + -------- + ------- + + ------------
| 마스터-bin.000001 위 | 154 | 테스트 | | |
+ ------------------- + --- ------------------ + ------- + -------------- + -------- + -----------
세트의 1 행 (0.00 초)

추신 : 당신이 쇼 마스터 상태를 할 경우, 출력이 비어 (MySQL은 열려 있지 로그)

/etc/my.cnf에있는 MySQL의 구성 파일에서

[mysqld이]는 다음을 추가 :

로그인 빈 = mysql을 - 빈

두 서버에서 슬레이브 구성

1, 구성 파일의 my.cnf를 수정

[루트 @ 로컬 호스트의 MySQL] # /etc/my.cnf에 빔의

[mysqld를] #에 덧붙여
서버 ID = 2
릴레이 로그 단 = 슬레이브 릴레이
릴레이 인덱스 = 로그 슬레이브 릴레이 bin.index
# -do-dB = 복제 테스트
# 참고 :
여러 개의 슬레이브 서버가있는 경우 # 서버-ID가 고유 서버를 식별하고, 각 서버의 서버 ID가 동일 IP로 반복 될 수없는 고유 식별자가, 당신이 서버 ID를 설정하지 않은 경우 또는 서버가 주 서버에 접속되어 있지로부터는 0으로 설정된다.
# 릴레이 로그는 MySQL의 바이너리 로그가 다른 서버에서 기본 서버로이 서버에서 응급 복구 및 데이터 백업 또는 주 서버 중단을 할 수 있습니다 시작합니다.
# 복제-할-DB 여러 데이터베이스를 복사 할 경우, 반복이 옵션을 설정, 동기화 데이터베이스를 지정합니다. 마스터 측에서 바이너리 로그-할-DB를 지정하지 않을 경우, 슬레이브 측이 필터 복제 할-DB로 사용할 수 있습니다.
# 복제 - 무시 - DB 데이터베이스는 여러 데이터베이스가있는 경우, 반복이 옵션을 설정, 동기화를 필요로하지 않습니다.
# 복제 할 일-DB와 상호 배타적 인 옵션으로 복제 - 무시 - dB, 일반적으로 하나가 될 수 있다는 점에주의 할 필요가있다.

2, MySQL의 서비스를 다시 시작

[루트 @ localhost를 MySQL의] # 서비스 mysql을 다시 시작

(3)는 주 서버가 마스터로 접속

# MySQL의 데이터베이스에 입력
[루트를 MySQL의 @ 로컬 호스트] # 개의 -uroot - MySQL의를 -p
암호를 입력 :

# 마스터 주 서버가 연결
MySQL의>를 변경 마스터 'MASTER_HOST =에 192.168.17.130', master_port에는 = 3306, master_user = 'masterbackup'를 master_password = ' 123456 'MASTER_LOG_FILE ='마스터-bin.000001 위 'MASTER_LOG_POS = 154
# 주 :
주 서버의 IP 주소에 대응 #master_host.
#master_port 포트 마스터 서버 대응.
마스터-bin.000001 위 : 열 #master_log_file 쇼 마스터 상태 표시에 해당하는 파일.
#master_log_pos 디스플레이 열 위치에 대응하는 마스터의 상태를 표시 : 154.

(4) 슬레이브 데이터 동기화를 시작할

# 시작 슬레이브 데이터 동기화
MySQL의 시작> 슬레이브,

# 정지 슬레이브 데이터 동기화 (필요한 경우)
MySQL의> STOP 노예;

(5) 슬레이브 정보를 확인할

MySQL의> 쇼 노예 상태 \ G;

Slave_IO_Running 및 Slave_SQL_Running 네, 그것은 동기화가 성공을 의미합니다.

셋째, 해결 오류

1, 데이터베이스에서 이벤트를 건너이 하나의 실수를 건너 뛰고 다음 그룹의 시작부터 다음 이벤트를 실행하기 위해 SET 글로벌 SQL_SLAVE_SKIP_COUNTER를 사용합니다.

# 운영 데이터베이스에서
MySQL의> STOP 슬레이브,
MySQL의> SET = 글로벌 SQL_SLAVE_SKIP_COUNTER 1;.
MySQL의> 슬레이브 시작;

추천

출처www.cnblogs.com/lingyao/p/11994082.html