반응형
네이버 클라우드 플랫폼의 데이터베이스 개요
- 완전관리형 데이터베이스 : NCP에서 만들어진 데이터베이스 서버를 우리는 인스턴스만 이용하는 방식
- 설치형 데이터베이스 : NCP에서 데이터베이스가 설치된 이미지를 제공하는 것이 설치형 데이터베이스
- Q. Linux에서 MySQL이 올라간다고 하면 Linux의 Admin계정은 root일 것이다. MySQL의 DB Admin계정 또한 MySQL일것이다. root 같은 경우도 절대적이진 않고 우리가 UID 값을 바꾼다거나 권한을 추가한다고 하면 바꿀 수 있다.
default 값은 System도 root, DB MySQL도 root이다. Windows는 Admin strater , MSSQL은 SA라는 계정을 가져가게 된다. - 완전관리형 데이터베이스에서는 일반 사용자 권한을 가지게 되고 해당 사용자 계정으로 데이터베이스 인스턴스를 만들고 해당 인스턴스에만 접근이 가능하다.
- 만약 6TB가 넘어가는 10TB를 사용할시에는 여러가지 문제가 야기되기때문에 비슷하지만 넘어가는 양이더라도 사용안하기를 권고드린다.
- 샤딩을 하건 데이터베이스 쪼개기를 하는 등 여러가지 방법을 통해 이중화를 할 수 있도록 안내를 하고 있다.
- MySQL을 집어 넣게 되면 제일 처음 DB백업을 하게 된다.
- slave : 고가용성 기능을 사용중인 경우 추가할 수 있는 주기적인 읽기 batch에 적합한 읽기 가능한 서버
- 자동 Fail - over 지원 : 어플리케이션은 반드시 데이터베이스의 IP가 아니라 데이터베이스의 도메인 네임을 이용해서 접근을 해야한다.
Cloud DB for MySQL
DB 엔진 버전
- MySQL 5.7.19, MySQL 5.7.25, MySQL 5.7.29, MySQL 5.7.32
- MySQL 8.0.18, MySQ L8.0.21, MySQL 8.0.25
Cloud DB for MySQL은 Standard 타입과 High-memory 타입으로 제공 (Classic)
VPC 환경에서는 High CPU, Standard, High-memory 타입 제공
최대 5대의 Slave DB 추가 가능
데이터 스토리지는 HDD, SSD 중 선택 가능
- 데이터 스토리지는 데이터베이스 데이터(테이블, 인덱스, 로그 등)의 데이터를 저장하는 스토리지
- 기본 10GB부터 10GB단위로 최대 6000GB까지 자동 증가
고가용성이 지원되는 스펙과 Stand alone 형태로 생성 가능
Secure zone 내 생성 가능 - Classic
- Secure zone에 생성된 Cloud DB for MySQL 서버는 Public domain을 제공하지 않음
Public domain 부여를 통해 외부에서 접근 가능
VPC에서는 Public Subnet에 MySQL 서버를 위치시켜야만 Public domain을 생성할 수 있고 그 때 외부에서 Work laucn를 이용해서 접속이 가능하다.
멀티존 지원
- Master DB 서버 2대를 서로 다른 Zone에 생성하여 높은 가용성 제공
- Master DB 서버는 같은 속성의 Subnet에 위치
Public Subnet과 Private Subnet에 구성하는 것의 차이
- Public Subnet에 구성하는 경우 Public 도메인을 구성할 수 있으나 Private Subnet은 구성 불가
CDB Operation 1. DB Process list 확인
- 데이터베이스 서버에 현재 접속한 세션 리스트를 확인해볼 수 있습니다.
- MySQL에서 사용하는 show process list;와 동일합니다.
- 제공항목
- Kill session
- 선택된 Session ID를 강제로 종료
- 강제로 종료한 세션은 복구 불가능
- 하나의 세션만 선택 가능
CDB Operation 2. Slave DB Replication 확인
- Slave 서버의 경우, Replication 상태를 확인할 수 있습니다.(Master 서버는 표시되지 않습니다)
- MySQL에서 사용하는 show slave status; 명령어와 동일한 결과를 보여줍니다.
- Slave DB 서버에서 Replication 오류가 발생한 Query를 건너뛰어 오류를 조치할 수 있는 Skip Replication Error기능과 Slave DB 재설치 기능이 제공됩니다.
CDB Operation 3. DB 서버 로그 확인
- Binary Log, Slow Log, Error Log, General Log를 Object Storage로 전송 가능
CDB Operation 4. DB 백업 설정 및 복원
- 백업은 하루에 한번 매일 수행되며, 사용자 설정에 따라 최대 30일까지 보관이 가능합니다.
- 백업 관련 정보
- 백업 파일을 바탕으로 데이터 베이스 복원 기능을 제공합니다.
- 백업 파일로 복원 시, 신규 VM이 생성되며 이 때 데이터베이스 서버는 Recovery 모드로 복원되며 데이터 조회만 가능합니다.
- 시점 복원 기능을 제공하여 복원 가능한 시간 범위 내에서 사용자가 원하는 시간대로 데이터 복원이 가능합니다 (분 단위까지 지원)
CDB Operation 5. 이벤트 설정
- OS 영역 이벤트 항목
- DB 영역 이벤트 항목
CDB Operation 6. DB 엔진 업그레이드
- My SQL의 Minor 버전 Rolling 업그레이드 지원
- 버전 업그레이드는 동일한 서비스 내 모든 DB서버 버전이 변경
- Master DB는 Standby Master DB로 전환하여 서비스 접근 차단을 최소화
- 업그레이드 작업은 1대씩 순차적으로 진행
- Standby 서버를 먼저 업그레이드하고 Master와 롤체인지 한다음 Master을 Standby 시킨 후 업그레이드
CDB Operation 7. DB Config 관리
- 네이버클라우드플랫폼의 Cloud DB for MySQL에서는 DB 서버 상세보기 화면 > DB Config 관리를 통해 선택한 DB 서버의 설정을 변경할 수 있습니다.
- 기본적으로 자주 변경하는 대표적인 configuration은 아래와 같습니다.
- innodb buffer_pool_size
- innodb_buffer_pool은 데이터 파일과 로그 파일이 기록되는 순서를 조정하는 역할과 디스크 액세스를 줄이기 위한 캐시의 역할을 합니다.
- 보통 메모리의 50 ~ 80%로 설정합니다.
- 네이버 클라우드 플랫폼 innodb_buffer_pool_size는 default로 1073741824(byte)로 설정되어 있습니다.
- 이 부분을 수정한 후에는 반드시 db를 재시작해야 합니다.
용어정리
Cloud DB for MSSQL을 사용하기 위해 반드시 알아두어야 할 몇 가지 용어가 있습니다. 용어와 대한 설명은 다음과 같습니다.
- Monitoring
운영 중인 MSSQL Server 관련 서버 성능, 운영체제, 쿼리 수행 관련 모니터링 정보를 확인할 수 있는 Cloud DB for MSSQL의 기능 - Backup
사용 중인 사용자의 데이터베이스 데이터를 안전하게 보관하기 위해 서비스별로 설정해놓은 백업 정보를 확인하고 복원을 수행할 수 있는 Cloud DB for MSSQL의 기능 - Event
MSSQL Server에서 발생한 이벤트를 수집하여 이력을 확인할 수 있는 Cloud DB for MSSQL의 기능 - MSSQL Server
네이버 서비스에서 오랜 시간 검증하여 최적화된 설정값으로 MSSQL을 설치하여 클라우드 환경에서 서비스되는 DB 서버 - DB Service
MSSQL Server를 역할별로 구분한 Group 이름 - Role
MSSQL Server 역할로 Stand Alone, Principal, Mirror, Slave 4종류 존재 - Stand Alone
고가용성 기능을 사용하지 않는 경우 메인 서버 - Principal
고가용성 기능을 사용 중인 경우 메인 서버 - Mirror
고가용성 기능을 사용 중인 경우 Failover 발생 시 새롭게 Master로 전환될 수 있는 Standby 서버 - Slave
고가용성 기능을 사용 중인 경우 추가할 수 있는 주기적인 읽기 batch에 적합한 읽기 가능한 서버
Q&A
- VPC 환경과 Classic 환경의 차이는 무엇인가요?
Classic 환경은 일반적인 클라우드 환경이며, VPC 환경은 논리적으로 서로 분리된 VPC(Virtual Private Cloud)를 제공하는 클라우드 환경입니다.
VPC를 통해 기업이 기존에 사용하던 데이터 센터 네트워크와 유사한 환경을 구현할 수 있습니다. 계정마다 최대 3개의 VPC를 생성할 수 있으며 각 VPC는 최대 넷마스크 0.0.255.255/16 (IP 65,536개) 크기의 네트워크 주소 공간을 제공합니다. - Cloud DB for MySQL에서 MySQL Server를 생성하기 전에 MySQL Server와 통신할 애플리케이션 서버를 생성해야 합니다.
단, Cloud DB for MySQL에서 생성한 MySQL Server는 현재 네이버 클라우드 플랫폼 내에서만 접근이 가능하기 때문에 애플리케이션 서버 역시 네이버 클라우드 플랫폼 내에 생성해야 합니다. 생성 방법은 Cloud DB for MySQL 시나리오와 - 생성한 MySQL Server에 어떻게 접근하나요?
네이버 클라우드 플랫폼 서버에서 Private 도메인을 사용하여 접근하거나, SSL VPN 또는 Public 도메인을 사용하여 클라우드 외부에서 접근할 수 있습니다.
네이버 클라우드 플랫폼 서버에서 Private 도메인을 사용한 접근 방법에 대한 설명은 Cloud DB for MySQL 시작을 참고해 주십시오. 클라우드 외부에서의 접근 방법에 대한 설명은 SSL VPN을 사용한 접근, Public 도메인을 사용한 접근을 각각 참고해 주십시오. - 애플리케이션 서버를 통하지 않고 MySQL Server에 직접 접속하여 데이터베이스를 관리하려면 어떻게 해야 하나요?
MySQL Workbench 또는 phpMyAdmin을 통해 MySQL Server에 직접 접속하여 관리할 수 있습니다.
각 유틸리티의 사용 방법에 대한 설명은 클라우드 외부에서 DB Server 접속를 참고해 주십시오. - 개별 MySQL Server를 일반 서버처럼 시작 또는 정지할 수 있나요?
MySQL Server의 개별 시작 또는 정지는 지원하지 않으며, 재시작 및 삭제만 가능합니다.
개별 MySQL Server를 정지하여 일시적으로 요금이 청구되지 않는 형태로 사용할 수는 없습니다. 재시작을 수행할 경우 해당 MySQL Server가 설치된 가상 서버와 해당 서버가 동시에 재시작됩니다. - 고가용성 설정을 사용할 때 Master Server와 Standby Master Server의 차이는 무엇인가요?
MySQL Server가 정상적으로 운영되는 동안 Standby Master Server는 어떠한 역할도 하지 않고 Master Server의 데이터를 그대로 복제합니다. Master Server에 장애가 발생하여 정상적으로 운영할 수 없게 되면 자동으로 Failover를 수행하여 Standby Master Server가 Master Server의 역할을 넘겨받아 수행합니다. - Master Server를 다시 시작하면 자동으로 Failover가 수행되나요?
장애가 발생하는 경우만 Failover가 자동 진행되며, 사용자의 재시작 명령으로는 진행되지 않습니다. - 사용자가 직접 Failover를 수행할 수 있나요?
사용자도 직접 수행할 수 있습니다. 서비스 오픈 전 Master Server 장애로 인한 Failover 상황을 재현하여 애플리케이션에 영향이 없는지 사전에 점검할 수 있습니다.
Failover를 진행하는 동안 서버 접속이 되지 않을 수 있습니다. 자세한 사용 방법은 DB Server의 Master DB Failover를 참고해 주십시오. - MySQL Server를 재시작한 후 용량이 줄었는데 어떻게 해야 하나요?
MySQL Server는 트랜잭션을 길게 사용하는 경우 임시 저장 공간인 Temporary Tablespace 스토리지의 크기가 증가하면서 MySQL Server의 용량이 줄어든 것으로 표시될 수 있습니다.
이는 정상적인 현상으로, MySQL Server가 재시작되면 해당 임시 저장 공간은 반납됩니다. - Monitoring 메뉴를 통해 서버를 모니터링할 때 메모리 사용량이 계속 증가하는 것으로 나타납니다. 서버에 문제가 발생한 건가요?
MySQL Server의 성능 향상을 위해 innodb_buffer_pool_size 설정값 이상으로 메모리 사용량이 증가할 수 있으나, 실제 메모리 사이즈의 약 90%까지 사용량이 증가하는 것은 정상적인 현상입니다. - MySQL Server의 성능이나 운영체제와 관련하여 임계치를 설정하고 초과 시 발생한 이벤트를 관리자에게 통보할 수 있는 기능이 있나요?
Cloud DB for MySQL은 기본적으로 서버의 성능과 운영체제에 대한 모니터링 서비스와 이벤트 수집 서비스를 제공합니다.
Cloud Insight와 연동하여 사용자가 직접 임계치를 설정하고 발생한 이벤트에 대해 메일이나 SNS로 알람을 통보하도록 설정할 수 있습니다. 자세한 사용 방법은 Monitoring과 Event를 참고해 주십시오. - Replication error가 발생하며 Replication이 멈췄는데 어떻게 해야 하나요?
상황에 따라 Skip replication error 기능을 통해 오류가 발생한 쿼리를 일회성으로 스킵 처리하거나 Replication error가 발생한 DB를 재설치할 수 있습니다.
Skip replication error의 경우 Master Server의 데이터와 정합성을 완벽히 맞추지 않기 때문에 이후 오류가 재발생하며 replication이 다시 멈출 수 있습니다. DB 재설치의 경우 마지막 백업본으로 DB를 재구축하고 Master Server와 데이터 정합성을 맞춥니다. 재구축 하는데 시간이 소요되며 재구축을 완료한 후에는 Master Server와 같은 데이터를 가집니다.
Skip Replication Error 및 DB 재설치에 대한 설명은 DB Server의 Replication 상태 확인을 참고해 주십시오. - Replication 지연은 왜 발생하나요?
Replication 지연은 MySQL의 Replication 스펙과 사용자 애플리케이션의 동작에 의한 현상으로 Cloud DB for MySQL의 장애가 아닙니다. 일반적으로 Replication 지연은 Master DB에 쓰기 부하가 높은 경우, 많은 쓰기 쿼리가 유입되는 경우, 하나의 트랜잭션으로 대량의 변경 작업 후 commit한 경우, Primary Key가 없는 테이블에 많은 row를 변경하는 쿼리를 수행한 경우, 오랜 시간의 수행이 필요한 쿼리가 유입되는 경우, 락으로 인해 대기하는 경우에 발생합니다.
Monitoring의 Query Timeline 그래프 차트에서 지연을 발생하는 쿼리를 확인할 수 있습니다. Query Timeline에서 지연이 증가하는 시점을 검색하거나 지연되고 있는 서버의 Query Timeline을 확인해 주십시오. - Replication 지연을 완화하거나 해결하려면 어떻게 해야 하나요?
지연 발생 시 innodb_flush_log_at_trx_commit Config 값을 변경하고 Master DB의 Replication 지연 원인이 되는 Primary Key가 없는 테이블에 Primary Key를 추가한 후 Standby Master Server를 재구축 해야 합니다.
Master DB의 innodb_flush_log_at_trx_commit 값에 대한 설명 및 변경 방법은 MySQL 가이드와 DB Server의 DB Config 관리를 각각 참고해 주십시오.
Master DB의 Primary Key가 없는 테이블에 Primary Key 추가 후 Standby Master재구축하는 방법은 두 가지가 있습니다. Replication 상태 확인에서 재설치 하거나 Master Server의 고가용성 설정을 해제 후 재설정해 주십시오. - 외부 솔루션을 연동하여 사용할 수 있나요?
제로보드, 그누보드 등의 외부 솔루션을 연동할 수 있으며, 스토리지 엔진을 InnoDB로 지정하여 설치하면 사용할 수 있습니다.
다른 스토리지 엔진이 필요한 경우 MySQL 설치형 서비스를 사용할 수 있습니다.
'NCP' 카테고리의 다른 글
[NCP] VPC 시나리오 (0) | 2023.08.09 |
---|---|
[NCP] Cloud DB for MS-SQL (0) | 2023.08.09 |
[NCP] GRM, CDN서비스 및 IPSEC-VPN 소개 (0) | 2023.08.09 |
[NCP] 로드밸런서 실습 (0) | 2023.08.09 |
[NCP] 로드밸런서 및 Global DNS 소개 (0) | 2023.08.09 |