master - slave 구조로 변경하려고 했다.
https://velog.io/@zvyg1023/mysql-master-slave
이 글들을 참고 해서 계속 시도를 해보았는데 조금 어려움을 겪었다.
하라는 대로 했는데 replication이 안됐다.
SHOW SLAVE STATUS\G 명령을 실행하여 레플리케이션 상태를 확인 하는데, Slave_IO_Running과 Slave_SQL_Running이 모두 "Yes"였다. 잘 설정 되었다고 생각 했는데 안되는 것이었다.
그래서 생각 해보니 이런 현상이 발생한 주요 원인은 레플리케이션 설정 과정에서 초기 데이터 동기화가 제대로 이루어지지 않았기 때문일 가능성이 높다고 생각했다.
- 초기 데이터 불일치:
레플리케이션을 설정할 때 마스터의 기존 데이터를 슬레이브로 복사하지 않았을 가능성. - 바이너리 로그 포지션 오류:
슬레이브가 마스터의 바이너리 로그에서 잘못된 위치부터 복제를함. 이 경우, 새로운 변경사항만 복제되고 이전 데이터는 누락 될 가능성이 있음.
그래서 master를 덤프하고 slave에 덮어 씌워 해결 했다.
1. 마스터 데이터베이스에서 덤프를 한다.
docker exec -it hoppang_database_master bash
mysqldump -u root -p --all-databases --master-data=2 --single-transaction --flush-logs --hex-blob > /master_data.sql
그러면 덤프 파일이 생긴 것을 확인할 수 있다.
덤프 파일을 호스트서버로 이동 시킨 후
docker cp hoppang_database_master:/master_data.sql /home/twj/master_data.sql
호스서버에서 슬레이브 데이터베이스로 이동시킨다.
docker cp ./master_data.sql hoppang_database_slave:/tmp/master_data.sql
슬레이브 데이터베이스로 이동 후.
docker exec -it hoppang_database_slave bash
덤프를 덮어 씌운다. ( 여기에서 hoppang은 스키마 이름이다. ) 저 명령어를 입력 하면 root로 가는 패스워드를 입력하면 성공한다.
mysql -u root -p hoppang < /tmp/master_data.sql
이 이후에 성공적으로 replication이 이루어졌다.
'난중(개발)일기 > 삽질기록' 카테고리의 다른 글
[Grafana Loki Promtail] Data source connected, but no labels received. Verify that Loki and Promtail is configured properly (0) | 2024.10.14 |
---|---|
Prometheus 설정 시 에러 (0) | 2024.10.13 |
홈서버 만들기-3 : Forward proxy 에서 Reverse proxy 로 변환 스토리 (0) | 2024.09.10 |
알림톡 프로세스 개선 - dead letters 처리할 때 DLQ를 사용 하지 않고 NoSQL 사용 (0) | 2024.08.01 |
알림톡 프로세스 개선 SQS - Lambda (feat. DLQ - Dead Letter Queue) (0) | 2024.07.19 |