티스토리 뷰
업무로 AWS DB 마스터를 두고 사내망에 슬레이브를 구성하여 슬레이브에서 데몬에서 사용할 쿼리나 통계 내는 대에 사용하기 위해 구축을 해봤습니다.
업무에서 했던 것을 정리하기 위해 Mysql 5.7 버전을 마스터/슬레이브 구축에 대해 글을 작성했습니다.
보통 DB 부하 분산을 위해 마스터는 UPDATE/INSERT/DELETE 문을 사용하고 SELECT만 슬레이브에 하는 구조로 사용된다.
MySQL 에서는 마스터에서 실행한 갱신계의 SQL문이 바이너리 로그라는 전용 로그 파일로 기록된다.
이 로그 파일의 내용이 슬레이브로 전송되어 저장된다.
슬레이브는 저장된 로그 파일을 순차적으로 실행함으로써 결과적으로 마스터와 슬레이브의 상태가 일치되는 구조
슬레이브 바이너리 로그 수신 과 바이너리 로그 실행 2 단계
전자 I/O 스레드, 후자는 SQL 스레드 , 모두 비동기
마스터: 192.168.219.100 , 슬레이브 : 192.168.219.177 2개의 서버에서 구축
1. MASTER 서버 설정
root@master: /# vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log-bin = mysql-bin
server-id = 1 ## 서버 고유번호
bind-address = 0.0.0.0
root@master / # /etc/init.d/mysql reload
2. 슬레이브 서버에서 접속할 사용자 생성
슬레이브 서버(192.168.219.177) 에 대한 repl_user 계정 생성
3. 슬레이브 서버 설정
root@slave: # vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log-bin = mysql-bin
server-id = 2 ## 서버 고유번호 (마스터 번호랑 다르게 )
bind-address = 0.0.0.0
설정파일 리로드
root@slave: # /etc/init.d/mysql reload
4.마스터에 샘플 데이터 생성
5. 슬레이브 서버에서 마스터 데이터 동기화 작업
root@slave :/ # mysqldump -all-databases -ujmkim -p -h192.168.219.100 | gzip -c> dump.sql.gz
마스터 디비(192.168.219.100)에 jmkim 계정을 모든 데이터베이스 백업
root@slave :/ # gunzip < ./dump.sql.gz | mysql -uroot -p
6. 마스터에서 binlog 확인
7. 슬레이브 서버에서 연동
mysql > change master to master_host='192.168.219.100', master_user='repl_user',master_port=3306,
master_password ='slave',master_log_file='mysql-bin.000002',mater_log_pos=1134;
master_host = 마스터 ip
master_log_file = 마스터 bin 파일이름
master_log_pos = 마스터 bin pos
mysql > start slave;
테스트
1. 마스터 디비에서 인서트
2. 슬레이브 디비에서 확인
Reference
'Data Enginnering > Mysql' 카테고리의 다른 글
MySQL - 프로세스 리스트 (0) | 2020.11.20 |
---|---|
MySQL 레플리케이션 상태 확인 (0) | 2020.09.27 |
MySQL- 실행 계획 분석 시 주의사항 (0) | 2020.07.12 |
MySQL 인덱스 (0) | 2020.05.24 |
MySQL 아키텍쳐 (0) | 2020.04.15 |
- Total
- Today
- Yesterday
- pytest
- logstash
- 도커
- linux
- ios
- docker
- BigData
- 로그
- 엘라스틱서치
- 네트워크
- python
- MYSQL
- spark
- WEB
- SWIFT
- SQL
- network
- ElasticSearch
- flask
- 리눅스
- nginx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |