일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 자원측정
- BATCH
- 파이썬
- Finance
- docker
- APT
- Replication
- asyncio
- 영상스트리밍
- go.mod
- apt-get
- python3.9
- psutil
- Python
- Hyper-V
- golang
- 스트리밍
- 자식프로세스
- go
- Windows
- mariadb
- 레파지토리
- 가상화 중첩화
- repo
- 주식
- QT_QPA_PLATFORM_PLUGIN_PATH
- dockercontainer
- FastAPI
- Thread
- pip
- Today
- Total
검색하기귀찮아서만든블로그
[mariadb] 양방향 replication 본문
이번 포스팅에서는 mariadb 양방향 replication에 대해 내용을 정리하고 테스트까지 수행해 보고자 한다. 우선 지난 포스팅([mariadb] replication)에서 단방향 replication을 구성해 보았는데, 통상 서비스를 운용하다 보면 failover 가 연속적으로 발생하는 경우가 많고 그로 인해서 로그가 유실되는 경우들이 발생할 수 있다. 이런 케이스에서 db 동기화가 단방향으로만 구성되어 있을 경우 일회성 failover는 동기화가 유지되겠지만 연속적으로 발생했을 때는 문제가 발생한다.
양방향 replication은 db가 상호 동기화 처리가 되기 때문에 연속적 failover에 비교적 안정성이 높다고 볼 수 있다. 다만 slave 서버가 오랫동안 down 된 상태에서 master에 쿼리 로그가 많이 누적될 경우 slave 가 살아나서 동기화가 완료되기 전에 failover 가 발생하면 미처 동기화하지 못한 데이터가 신규 데이터와 섞이는 문제가 발생할 수는 있다.
이제 양방향 replication 을 구성해 보도록 하겠다.
지난 포스팅에서 mariadb_c0에 replication master 설정을 모두 하였고 mariadb_1에 replication slave 설정을 완료하였기 때문에 mariadb_c0의 데이터가 maridb_c1으로 동기화되고 있는 상태라고 가정하겠다.
이번에는 mariadb_c1에 replication master 설정이 되고 mariadb_c0에 slave 설정이 추가된다고 보면 되겠다.
PS> docker exec -it mariadb_c1 bash
# apt-get update
# apt-get install vim
# vim /etc/mysql/mariadb.conf.d/50-server.cnf
# master db 의 50-server.cnf 설정 파일 편집
[mariadb]
server-id=2
log_bin=/var/log/mysql/mysql-bin.log
expire_logs_days=5
max_binlog_size=10M
# 파일 저장 후 mariadb_c1 container 재구동
# mariadb_c1 에 접속하여 replication 전용 계정 추가
CREATE USER 'r_user'@'172.18.0.1' IDENTIFIED BY 'r_user';
GRANT REPLICATION SLAVE ON *.* TO 'r_user'@'172.18.0.1';
SET PASSWORD FOR 'r_user'@'172.18.0.1' = PASSWORD('p@ssw0rd');
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'r_user'@'172.18.0.1';
SELECT u.Host, u.User, u.Repl_slave_priv FROM user AS u WHERE u.user='r_user';
mariadb_c1에 replication master 설정이 완료되었으므로 이제 mariadb_c0에 salve 설정을 적용한다.
# mariadb_c0에 접속하여 replication slave 설정을 반영한다.
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='172.24.80.1',
MASTER_PORT=13306,
MASTER_USER='r_user',
MASTER_PASSWORD='p@ssw0rd',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=8267;
START SLAVE;
SHOW SLAVE STATUS;
이제 양방향으로 master/slave 설정이 모두 되었으므로 테스트를 해보겠다.
이상 양방향 replication을 구성하고 테스트까지 해보았다. 본 환경은 docker mariadb container를 사용하였기 때문에 일반적인 mariadb 패키지와는 설정파일 및 내용이 상이할 수 있습니다.
다음 스터디에서는 mariadb gelera cluster에 대해서 스터디할 계획이다.
'개발' 카테고리의 다른 글
[GO] 간단한 proxy 서버 만들기 (0) | 2023.09.28 |
---|---|
[GO] IDE 구성하기 (0) | 2023.09.28 |
[mariadb] replication (0) | 2023.06.17 |
[Docker] mariadb 컨테이너 구축 (0) | 2023.06.17 |
[ML] CNN 알고리즘에 대한 이해와 고찰 (0) | 2022.11.29 |