Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 인플레이션
- 그리디 알고리즘
- 주린이
- 다형성
- 금리인상
- 접근제어자
- 객체지향
- etf
- StringBuffer
- 백준
- javascript
- 오버라이딩
- 미국주식
- 제태크
- 알고리즘
- 배당성장
- mco
- 무디스
- 기업분석
- 잉여현금흐름
- XLF
- 프로그래머스
- Java
- 현금흐름표
- FCF
- 금리인하
- 자바
- 주식
- object
- S&P500
Archives
- Today
- Total
오늘의하루
[Docker - MySQL] Master-Slave 동기화 본문
DB(데이터베이스)를 Master와 Slave로 나누는 것은 주로 데이터베이스의 성능, 확장성, 가용성, 및 안정성을 향상시키기 위해 사용되는 아키텍처 설계 패턴입니다. Master는 데이터에 대한 쓰기 작업을 담당하고, Slave는 주로 읽기 작업을 처리합니다. 이렇게 부하를 분리함으로써 읽기 요청이 많은 환경에서 성능을 향상시킬 수 있습니다.
NETWORK
docker network master-slave
docker network connect master-slave [master container_name_or_id]
docker network connect master-slave [slave container_name_or_id]
docker network inspect master-slave
Master
CREATE DATABASE MASTER_DB; -- MASTER용 DB를 생성한다.
CREATE USER 'MASTER_ID'@'%' IDENTIFIED WITH mysql_native_password BY 'MASTER_PWD'; -- MASTER용 계정 생성
-- 권한을 설정한다.
GRANT REPLICATION SLAVE ON *.* TO 'MASTER_ID'@'%';
GRANT ALL PRIVILEGES ON MASTER_DB.* TO 'MASTER_ID'@'%';
SET GLOBAL server_id=1; -- MASTER-SLAVE 전략시 server_id가 달라야 하기 때문에 설정해준다.
-- 또는 my.cnf에서 server_id=1 이렇게 설정할 수 있다.
-- my.cnf로 설정시 다시 시작 해도 설정되지만 SET GLOBAL은 재시작시 사라진다.
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 | 2554 | | | |
+---------------+----------+--------------+------------------+-------------------+
Slave
CREATE USER 'SLAVE_ID'@'%' IDENTIFIED BY 'SLAVE_PWD'; -- SLAVE용 계정 생성
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'SLAVE_ID'@'%'; -- 권한을 설정한다.
SET GLOBAL server_id=2; -- MASTER-SLAVE 전략시 server_id가 달라야 하기 때문에 설정해준다.
FLUSH PRIVILEGES;
CHANGE MASTER TO
MASTER_HOST = 'MASTER IP',
MASTER_PORT = 'MASTER PORT',
MASTER_USER = 'MASTER ID',
MASTER_PASSWORD = 'MASTER_PASSWORD',
MASTER_LOG_FILE = 'SHOW MASTER STATUS > FILE'
START SLAVE;
SHOW SLAVE STATUS\G;
SLAVE STATUS
- Slave_IO_Running과 Slave_SQL_Running : 모두 Yes
- Exec_Master_Log_Pos : 마스터의 바이너리 로그를 어디까지 실행했는지 나타내는 위치 포인터
Comments