시스템 보안

[9월 4일] Replication in rocky

ljm 2025. 9. 4. 10:01

Rocky 가상머신 2대로 Replication 구현하기

 

1. Master(DB)

2. Slave(Replica-DB)

 

Master / Slave 머신에서

dnf install mariadb-server

dnf start mariadb

mysql_secure_installation 실행하기

 


mysql 에서  DB 백업 하는법

 

@Master

[root@localhost master] mysqldump -u root -p mysql user > mysql_user.sql

[root@localhost master] cat mysql_user.sql | tail

명령어 예시 1 (모든 DB 백업)

 

만들어진 백업파일 내용 표시
명령어 예시 2 (Mysql의 DB만 백업)
명령어 예시 3 (테이블 구조만 백업)

 

mysqldump 옵션


Mysql 에서 DB 백업파일  적용 하는법

[root@localhost master] mysql -u root -p < alldb.sql

 

Master DB에서 테스트 데이터베이스 생성
아까 만들었던 백업파일 적용 > "reptest"가 사라지지않음

 

** reptest라는 DB를 생성후에, 그전에 백업했던 DB로 뒤집어씌워도 reptest는 여전히 존재하는 걸 확인 **

 


 

Slave DB 와의 통신을 위해 방화벽 포트 설정

[root@localhost master] mysql -u root -p mysql < mysql_bak.sql

[root@localhost master] firewall-cmd --permanent --add-port=3306/tcp

[root@localhost master] firewall-cmd --reload

[root@localhost master] firewall-cmd --list-ports
3306/tcp

 

mysql이
maria-server.cnf 내용 추가

MariaDB [(none)]> grant replication slave on *.* to 'slave_db'@'%' identified by '1234';

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

[root@localhost master] systemctl restart mariadb
[root@localhost master] mysql -u root -p

MariaDB [(none)]> show master status;

'position = 328' 필수
'log_bin = ON' 필수

 


@Slave

etc/my.cnf.d/mariadb-server.cnf 에서 내용 추가 (반드시 Master의 server-id와 다르게 설정해야함)

 

cnf파일에서는 server-id / DB에서는 server_id

 

maseter_log_file은 master의 File_name , master_log_pos는 master의 Position

 

show slave status\G


@Master DB

 

@Slave DB

 

 

@Master DB

 

** Master DB에서 만든 데이터는 Slave DB에 적용되지만,

    Slave DB에서 만든 데이터는 Master DB에 적용되지 않는 것을 확인 **

 

 

 

 

마스터-슬레이브 구조는 데이터베이스 복제를 통해 데이터의 원본과 복제본을 나누는 방식


마스터 (Master) 👑

  • 역할: 모든 쓰기(Write) 작업 (INSERT, UPDATE, DELETE)을 담당
  • 특징: 데이터의 원본이 저장된 서버이며, 오직 하나만 존재

슬레이브 (Slave) 📝

  • 역할: 마스터의 데이터를 복제하고, 주로 읽기(Read) 작업 (SELECT)을 처리
  • 특징: 마스터의 복제본이며, 여러 개 생성 가능

핵심 원리

마스터에서 데이터가 변경되면 그 기록이 바이너리 로그에 저장

슬레이브는 이 로그를 복사해와서 순서대로 실행하며 마스터와 똑같은 상태를 유지


효과

  • 성능 향상: 읽기 요청을 슬레이브로 분산시켜 마스터의 부하를 저하
  • 안정성: 마스터가 고장 나도 슬레이브가 대신 역할을 수행하여 서비스가 중단되지 않도록 함