일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Unity Editor
- Google Developer API
- css framework
- Git
- Camera Zoom
- unity
- Google Refund
- spread 연산자
- java
- rpg server
- Spring Boot
- express
- springboot
- react
- Camera Movement
- docker
- OverTheWire
- SDK upgrade
- mongoDB
- --watch
- Packet Network
- server
- Unity IAP
- Digital Ocean
- linux
- nodejs
- screencapture
- draganddrop
- critical rendering path
- MySQL
- Today
- Total
우당탕탕 개발일지
[MySQL] Master-Slave Replication 본문
docker 내에 container 를 올려서 사용중.
db001 container 를 master로 놓고 db002, db003 을 slave로 놓아 백업용으로 사용하는 방법을 알아보자.
우선 db001 을 만든 것과 동일하게 db002와 db003을 만들어준다. 만드는 방법은 여기에.
https://journal-devchop.tistory.com/5
[MySQL] docker 에서 MySQL 사용하기 (생성에서 매핑까지)
개발환경 : macos docker 홈페이지에서 docker desktop download. 다운로드 후 터미널에서 docker --version 명령어를 통해 정상적으로 다운받아졌는지 확인이 가능하다. https://www.docker.com/products/docker-desktop/ Down
journal-devchop.tistory.com
그런데 마스터인 db001과 다른점이 몇 가지 있다.
1. my.cnf 에 적은 server_id는 세 container가 모두 달라야한다.
2. slave는 my.cnf에 read_olny 옵션을 넣어서 읽기만 가능하게끔 한다.
3. 원격접속하는 포트는 세 개가 모두 다르게 설정한다. docker run 명령어 시 db001이 -p 옵션에 3306:3306 이었다면 db002 는 3307:3306 으로, db003 은 3308:3306 으로 설정하도록 한다. host에서 들어가는 포트가 다르도록 설정하는것이다.
아래는 1과 2가 적용된 db002 의 my.cnf 파일내용이다
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-external-locking
skip-name-resolve
##아래 3개가 변경/추가되었다
read_only
server-id = 200
report_host = db002
아래는 전체 명령어이다. (저장소 폴더 생성부터 container 실행까지)
#host 저장소에 db002 배칭을 위한 폴더 생성
mkdir /db/db002/data /db/db002/log /db/db002/conf
cat /db/db001/conf/my.cnf > cat/db/db002/conf/my.cnf
chmod 777 --recursive /db/db002 /db/db003
#host-name 과 server-id 변경, readonly 옵션부여, 읽을 수 있도록 권한설정
vi /db/db002/conf/my.cnf
chmod 644 /db/db002/conf/my.cnf
#db001 만들때와 거의 동일하지만 포트번호를 변경해야함.
docker run -it --name db002 -h db002 -p 3307:3306 \
-v /db/db002/data:/var/lib/mysql \
-v /db/db002/log:/var/log/mysql \
-v /db/db002/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD="<password기입>" \
-d mysql:latest
#정상적으로 실행되었는지 확인한다.
docker ps
이렇게하면 총 3개의 container가 생성되어야한다. (db001 : Master / db002&db003 : Slave)
문제발생)
db002 를 포트번호 3307:3306 으로 실행하는데 둘중 하나가 shutdown 되는 현상이 발생했다.
'Server' 카테고리의 다른 글
서버에서 c# 프로그램 실행하기(2) (2) | 2023.08.13 |
---|---|
서버에서 c# 프로그램 실행하기 (2) | 2023.08.07 |
[SVN] 기능정리 (0) | 2023.07.11 |
[MySQL] Docker 에서 Access denied for user 'root'@'%' to ... 에러 (0) | 2023.07.11 |
[MySQL] docker 에서 MySQL 사용하기 (생성에서 매핑까지) (0) | 2023.07.07 |