노예
슬레이브가 마스터가 아닌 경우, 슬레이브는 이진 로깅이 전혀 필요하지 않습니다. 슬레이브에 의해 누적 된 릴레이 로그 공간의 양을 제한 할 수 있습니다. 4G에서 릴레이 로그를 조절하려면 relay_log_space_limit
모든 슬레이브에서 /etc/my/.cnf에 추가하십시오.
[mysqld]
relay_log_space_limit=4G
mysql을 다시 시작하십시오.
이 값을 설정할 수없는 경우, 최소한 (릴레이 로그에서 소비 한 총 바이트 수) SHOW SLAVE STATUS\G
값을 확인하는 경고가 있어야합니다 Relay_Log_Space
.
석사
스승에 관해서는 expire_logs_days
1로 설정할 수 는 있지만 심각한 경고가 있습니다 ...
복제가 중단되면 하루를 고쳐야합니다. 그렇지 않으면 마스터의 이진 로그가 회전하고 CHANGE MASTER TO 명령을 실행하여 복제를 다시 정렬 할 수 없습니다. 나는 expire_logs_days
3시에 스승님께 떠날 것 입니다.
제안 # 1
밤새 대량 처리를해야하는 SET SQL_LOG_BIN=0;
경우 세션 시작시 마스터에서 대량 프로세스를 실행해야합니다 . 물론 이것은 슬레이브에 복제되지 않습니다. 두 슬레이브에 동시에 동일한 벌크로드를 수행 할 수 있습니다.
제안 # 2
마스터 이진 로그 누적을 관리하기 위해 수행 할 수있는 또 다른 방법은 이것입니다.
SHOW SLAVE STATUS\G
두 슬레이브 모두에서 실행하십시오 . 을보십시오 Relay_Master_Log_File
. 이는 슬레이브에서 마지막 명령이 실행 된 마스터의 이진 로그를 나타냅니다.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 80561
1 row in set (0.00 sec)
이 예에서 Relay_Master_Log_File은 mysql-bin.009590입니다. 이 로그 이전의 모든 이진 로그는 마스터에서 제거 할 수 있습니다. 이것을 마스터에서 실행할 수 있습니다.
PURGE BINARY LOGS TO 'mysql-bin.009590';
이렇게하면 오래된 로그가 지워지고 복제는 그대로 유지됩니다.
경고
이진 로그는 완료된 모든 SQL 트랜잭션을 SQL 문 또는 행 변경으로 FIFO 대기열과 같이 직렬로 컴파일하는 파일입니다. 릴레이 로그는 원격 서버 (일명 마스터)에서 이진 로그 항목을 수집하는 파일입니다.
MySQL 복제에서
- 마스터는 이진 로그를 활성화해야합니다
- 슬레이브는 릴레이 로그를 컴파일
- 릴레이 로그의 모든 SQL이 처리되면 삭제됩니다.
- 슬레이브에서 DB 서버에 둘 이상의 릴레이 로그가있는 경우 IO 스레드가 마스터에서 SQL을 수집하여 SQL 스레드가 릴레이 로그를 처리 할 수 있기 때문에 복제가 뒤 떨어지고 있음을 나타낼 수 있습니다.
- relay_log_space_limit를 사용 하면 복제가 쌓여 디스크가 가득 차게 되는 것을 방지 할 수 있습니다. 규칙 # 3에 따라 릴레이 로그가 회전합니다
- DB 서버가 마스터 및 슬레이브 일 수 있습니다. 이것이 슬레이브가 바이너리 로그를 활성화해야하는 유일한 상황입니다. 이 시나리오에서 DB 서버에는 이진 로그와 릴레이 로그가 모두 있습니다.
슬레이브로 페일 오버하고 마스터로 만들려는 경우
- 서비스 mysql 중지
log-bin=mysql-bin
슬레이브의 /etc/my.cnf에 추가
- 서비스 MySQL 시작
다른 슬레이브의 복제를 새로 승격 된 마스터에 설정하고 슬레이브의 데이터가 새로 승격 된 마스터와 일치하는지 확인해야합니다.
업데이트 2012-08-13 17:47 EDT
MySQL Documentation on relay-log
option 에 따르면이를 정의해야합니다. 이유는 다음과 같습니다.
MySQL이 서버 옵션을 구문 분석하는 방식으로 인해이 옵션을 지정하면 값을 제공해야합니다. 기본 이름은 옵션이 실제로 지정되지 않은 경우에만 사용됩니다. 값을 지정하지 않고 --relay-log 옵션을 사용하면 예기치 않은 동작이 발생할 수 있습니다. 이 동작은 사용 된 다른 옵션, 지정된 순서 및 명령 줄 또는 옵션 파일에 지정되어 있는지에 따라 다릅니다. MySQL이 서버 옵션을 처리하는 방법에 대한 자세한 내용은 4.2.3 절“프로그램 옵션 지정”을 참조하십시오.