티스토리 뷰

Data Enginnering /Mysql

Mysql 마스터/슬레이브 구축

내일도이렇게 2019. 10. 21. 22:59

업무로 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
링크
«   2024/09   »
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
글 보관함