Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
관련이슈
참고사항
아래 명령어로 dump.sql를 만들어서 복제를 해줬습니다. 이 파일을 scp 를 이용해 replica ec2로 보냈습니다.
/etc/my.cnf 파일에 아래처럼 각각 설정해주었습니다.
복제 방식은 바이너리 기반과 GTID 기반이 있는데, GTID기반으로 사용했습니다.
[이유] 1. 바이너리 기반은 복제가 중간에 중지가 되면 복구하기가 어렵다 - 바이너리로그는 `이름 + 저장 위치`로 구별되므로 복제가 중단되면 어디부터 시작되는지 모른다고 합니다. 2. 설정방법이 차이가 별로 없다.
[참고사항]
원래 Transaction이 시작되면 connection이 시작되는데 lazyConnectionDataSourceProxy를 사용해서 sql을 실행하기 직전까지 connection을 가져오는것을 미룹니다(readonly 설정이 설정된 뒤에 가져오기 위해서인 듯)
AbstractRoutingDataSource를 상속받아서 determineCurrentLookupKey를 override해줬는데 여기서 transaction이 readonly인지 boolean으로 반환해서 datasource를 replica나 source로 보내줍니다.
참고 : 후디, 허브, 공식문서
ps 블로그에 더 이쁘게 해서 올릴게요