본문 바로가기

리눅스/Ubuntu

mysql Replication 정상 작동여부 확인방법

[Mysql Replication 정상 작동중인지 확인법]

1. Slave_IO_Running과 Slave_SQL_Running이 Yes로 정상 작동 중인가

2. Laster_Errno와 Last_Error를 통해 어떤 에러코드를 가진 에러가 발생했는가

3. Read_Master_Log_Pos가 Master의 Position과 매칭이 되고 있는가

Master_Log_File: mysql-bin.000104
Read_Master_Log_Pos: 53302

위에 보이는 정보와 Master의 상태 정보에서 확인할 수 있는 File, Position 값이 동일한지 확인한다

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

File이 다를 경우 CHANGE MASTER TO ~ 의 설정을 통해 File과 Position 지정을 다시 해줘야 합니다


=========================================================

[Mysql Replication 에러 복구 방법]

1. skip-counter를 설정해주고 slave 껐다가 켜보기

mysql> stop slave;
mysql> set global sql_slave_skip_counter=1; --> 오류 1개를 스킵하고 진행하라는 뜻
mysql> start slave;


Slave 상태 다시 확인
mysql> show slave status\G

 

2. slave의 mysql 설정 파일에서 에러를 무시하는 옵션 추가

# vi/etc/my.cnf --> [mysqld] 아래 항목에 slave-skip-error= <무시할 에러 입력>

 

ex) slave-skip-errors=1032,1062 --> 1032,1062 에러 발생시 무시하고 리플리케이션 진행

========================================================

[Mysql replication 리셋방법]

Master) RESET MASTER;  

mysql >SHOW MASTER STATUS\G  
커맨드 입력 후 나온 mysql-bin-log / position 값을 기록합니다 

Slave)  

mysql > STOP SLAVE;  
mysql > RESET SLAVE;   


sql > CHANGE MASTER TO 

MASTER_HOST='마스터서버ip', 

MASTER_USER='sammul' , (리플리케이션 적용할 사용자명) 

MASTER_PASSWORD='password',  (리플리케이션 적용할 사용자 패스워드) 

MASTER_PORT=3306, 

MASTER_LOG_FILE='mysql-bin.000001', (MasterDB의 Status에 mysql-bin-log 파일명) 

MASTER_LOG_POS='204'  (Master status의 position 번호)

=========================================================

[Mysql 이중화 원리] 

- Master DB에서 DATA변경이 일어나면 (1) 이를 Master DB에 반영한다(2)
- 변경이력을 Binary Log로 저장해둔다 (3)
- 관련 이벤트를 Slave DB들에게 넘긴다 (4)
- Slave IO Thread에서 이벤트를 캐치하면 (5) Binary Log를 Slave DB 각각의 Relay Log에 저장한다 (6)
- Slave SQL Thread에서 Relay Log를 읽어 (7) Slave DB를 업데이트한다 (8)
- 읽기 처리를 할 때는 Slave DB를 사용한다.

Active 서버 mysql replication 이 멈추면 helath check 를 확인하여  
자동으로  httpd / asterisk / mysql 멈추게 설정 되어있음 --> standby로 넘어가기 위함

=========================================================