Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

MySQL / MariaDB Replication -Slave 서버 데이터 기입 본문

MySQL/기타 지식

MySQL / MariaDB Replication -Slave 서버 데이터 기입

`O` 2021. 7. 9. 03:42
728x90
반응형

해당 페이지에서는 MySQL / MariaDB Replication 이 구성된 서버에서 Slave 서버 데이터 기입과 관련된 내용을 다룬다.

 

해당 페이지를 보기 전, MySQL / MariaDB Replication 구성법을 참조하고 오면 좋다.

 

2021.07.01 - [MySQL/Replication] - MySQL / MariaDB Replication 구성 방법 (mysqldump)

 

 

 

 

Slave 서버의 의의

 

원래 실무적으로 Database 에서 기본 Replication 구성 시, Slave 서버는 데이터 조회만 사용할 목적으로 주로 쓰인다. 간단한 구성도를 그려보면 아래와 같다. (단, 이 구성도는 기본 설정에 따랐을 때 이다. multi-active 등의 다른 설정을 적용시에는 당연히 구성도도 달라진다.)

 

 

물론 Slave 서버에서도 특별한 설정이 없으면 데이터 기입 및 변동이 가능하나 그러한 설정을 유지하면 Slave 서버에서 Master 서버로의 동기화 과정이 없으므로 데이터 불일치가 100% 발생하게 되기에 이를 막기 위하여 read-only 설정을 하여 조회만 가능하게 설정한다.

 

 

예를 들어, 미리 테스트로 구성한 Replication 구조에서 Slave 서버에 특별한 설정이 없이 테이블 생성 및 데이터를 기입해보겠다. (DB는 test 사용)

 

 

이와 같이 테이블 생성부터 데이터 기입까지 Master 서버와 같이 되는걸로 확인 할 수 있다. 위에서 언급 했듯이 데이터 불일치 100% 발생 및 실무에서도 조회인 select 용도로만 쓰는걸로 협의를 한 상태에서는 운영서버인 Master 서버와 다른 불일치 데이터 조회는 의미가 없는 행동이다. 그래서 이를 막기 위해서 명령어 (online 적용 가능 파라미터다) 또는 my.cnf 파일에서 아래의 내용을 추가한다. 실무에서 보통 명령어로 파라미터 적용시에는 DB 가 재기동되면 다시 설정 해제 되기때문에 my.cnf 에도 같이 적용을 한다. 명령어로 적용가능한 파라미터들은 재기동이 필요없다. (my.cnf 에도 기 적용 해두면 DB 가 의도치 않은 재기동시에도 해당 사항을 자동 반영하기 때문)

 

 

 

위의 설정을 하면 root 와 같은 super 유저와 일반유저는 DML 사용시 각각 아래의 에러를 보게 된다.

(DDL, DCL 도 동일)

 

 

단, my.cnf 설정에서 보면 명령어와는 다르게 super_read_only 적용이 없는데 이는 조회만 하는 slave 라도 운영중에 비상상황이 생길수도 있기에 이에 대한 대처를 하기위해서 설정하는 것이다. root 를 사용하는 운영자들은 보통 운영서버에 개발 혹은 다른 부서의 요청이 없는 이상 임의로 데이터를 조작하지 않기 때문에 설정이 무의미 하기도 하다.

 

또한 이 설정은 Master 서버에도 제약없이 사용 할 수 있으나 당연히 100% 장애가 발생하므로 사용하지는 않는다.

반응형
Comments