-
[Docker - MySQL] Master-Slave 동기화Data Base/Master-Slave 2024. 4. 21. 22:10728x90반응형
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-slaveMaster
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 : 마스터의 바이너리 로그를 어디까지 실행했는지 나타내는 위치 포인터
728x90반응형