개발 등/DATABASE

MySQL Master Slaver 구성

darkhorizon 2022. 12. 6. 10:22
728x90
반응형

Replication은 '복제'라는 의미에 맞게 MySQL의 Master 서버의 데이터를 n개의 Slave 서버와 동기화 시켜주는 기능입니다. MySQL의 데이터를 실시간으로 백업하거나, DB서버의 부하를 분산하기 위하여 사용합니다.

구축환경

Centos 7.9
MySQL 8
Master Server: 127.0.0.1
Slave Server:127.0.0.2

Master MySQL 설정

  1. /etc/my.cnf 편집

    하단에 아래 부분 추가 후 저장 
    ================================ 
    server-id=1 log-bin=mysql-bin
  2. mysqld service 재시작

     systemctl restart mysqld.service
  3. Master와 Slave 연동 계정 생성

     mysql -uroot -p <== mysql 콘솔로 접속 
     mysql> create user repl_user@'127.0.0.2' identified with sha256_password by '1111'; 
     mysql> grant replication slave on *.* to repl_user@'127.0.0.2'; 
     mysql> flush privileges; 
     mysql> flush tables with read lock; <== Master DB를 Lock 상태로 전환 
     mysql> reset master; 
     mysql> show master status\G; <=== File, Position 변수를 기억한 뒤, Slave 설정할 때 사용
  4. Master 덤프파일 생성(Slvae Database에 적용)

    mysqldump -u root -p -B --routines DATABASE_NAME > dump_file.sql 
    저장한 덤프파일을 Slave Server에 옮김

Slave MySQL 설정

  1. /etc/my.cnf 편집

    파일 하단에 아래의 내용 삽입 후 저장 
    ================================ 
    server-id=2 log-bin=mysql-bin
  2. mysqld 서비스 재시작

    systemctl restart mysqld.service
  3. Master의 덤프파일로 데이터베이스 생성 및 Master 연결 설정하기

    mysql> source /저장된 경로/dump_file.sql 
    mysql> stop slave; 
    mysql> reset slave; 
    mysql> change master to 
        -> master_host='127.0.0.1', 
        -> master_port=3306, 
        -> master_user='repl_user', 
        -> master_password='1111', 
        -> master_log_file='파일명', <=== Master status의 File 
        -> master_log_pos=번호; <=== Master status의 Position mysql> start slave;

Master DB Unlock

  Master server의 MySQL에 접속한 뒤

  mysql> unlock tables;
728x90