1. Replication 상태 확인
show slave status
----
Slave_IO_Running Yes
Slave_SQL_Running No
2. Replication 에러 사례
- Error 'Unknown or incorrect time zone: 'Asia/Seoul'' on query. Default database: '*****'.
- Column 6 of table '*****' cannot be converted from type 'varchar(120)' to type 'varchar(14)’
DB의 timezone 값이 Master와 같지 않거나 기존 데이터 타입에서 차이가 있었을 경우 등, Replica 에서 쿼리 수행 실패가 발생하면 에러를 skip 하고 수동으로 Master와 맞춰준 후 Replication을 재개하여 조치할 수 있다.
3. Replica의 에러 무시하고 동기화 진행 설정하는 방법
Replica 노드에서 실행
stop slave;
set global sql_slave_skip_counter=1;
#에러 원인 구문 수동 실행 후
start slave;
4. Replication 재설정하는 방법
- scp로 Replica 노드에 dump 파일 이동
- binlog_position 확인
a. Dump 파일의 MASTER_LOG_POS 확인
b. binlog 파일의 MASTER_LOG_POS 바로 다음 값 확인cat test.dump | grep 'CHANGE MASTER' ## 결과 -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000877', MASTER_LOG_POS=272970008;
## 확인한 binlog 파일을 sql로 추출 cd /var/lib/mysql/logs/bin mysqlbinlog --no-defaults mysql-bin.000743 > ./binlog_220908.sql ## 다음 포지션 값 -- at 272970093
- STOP SLAVE
STOP SLAVE;
- DROP DATABASE
DROP DATABASE;
- DB RESTORE (백그라운드로 실행)
nohup mysql -u'root' -p'' < /home/devops/test.dump &
- START SLAVE
RESET SLAVE ALL; ## Master 정보 입력 CHANGE MASTER TO MASTER_HOST='x.x.x.x', MASTER_USER='test-replica' , MASTER_PASSWORD='xxxxxxxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000877', MASTER_LOG_POS=272970093 ## 시작 START SLAVE; ## 확인 SHOW SLAVE STATUS;
'DB > MySQL' 카테고리의 다른 글
[MySQL] Replication (0) | 2020.11.15 |
---|