2. DBMS이야기/02. MySQL 37

MYSQL에서 데이터 복제(Replication)를 설정하는 방법 (1)

이 문서는 MySQL의에서 데이터베이스 복제를 설정하는 방법에 대해 설명한다. MySQL의 복제는 (예를 들어 우리가 slave로 호출 할 수 있습니다) 다른 서버에있는 마스터 서버에서 데이터베이스의 정확한 복사본을 가져올 수 있으며, 마스터 서버의 데이터베이스에 대한 모든 업데이트를 즉시 때문에 슬레이브 서버의 데이터베이스에 복제된다. 두 데이터베이스가 동기화되어있다. 이는 갑작스러운 실수, 삭제 명령, 또한 슬레이브 수행 등을 변경시키는 이슈 때문에 만드는 백업 방법 또는 정책은 아니다; 하지만 복제는 비록 하드웨어 고장으로부터 시스템을 보호 할 수 있습니다. Configure The Master:우리는 MySQL의 설정 파일있는 /etc/my.cnf을 사용하여 복제를위한 마스터 서버를 구성 할 수 ..

MySQL 클러스터 퍼포먼스 최적화 방법

액세스 패턴 당신은 MySQL 클러스터 배포 중 최대의 성능을 기대하는 바와 같이, 데이터베이스의 구조를 아는 것이 중요합니다. 여기에 일이 - MySQL 클러스터 테이블에 대한 데이터는 MySQL 서버에 저장되지 않습니다. 다음 그림과 같이이 실제로 데이터 노드 풀에 걸쳐 분할됩니다. 테이블 행은 파티션으로 분할되어 있습니다. 각 데이터 노드는 하나의 파티션에 대한 기타 보조 단편에 대한 기본 단편을 보유하고있다. 쿼리가 데이터 노드 또는 데이터 서버 노드 사이에서 다수의 네트워크 홉 (hop)을 필요로하는 경우 다음의 성능이 저하 될 수 있고, 확장 성이 영향을 미친다. 그래서, MySQL 클러스터로부터 최상의 성능을 달성하는 것은 네트워크 홉의 총 수를 감소시키는 것을 포함한다. 파티션은 기본 키의..

MySQL 클러스터의 성능을 최적화하기 위한 기본 지식

MySQL 클러스터는 실시간, 확장 성 및 트랜잭션 데이터베이스이다. 그것은 실제로 실시간 성능 및 캐리어 급 가용성을 필요로하는 애플리케이션에 내장 된 통신 데이터베이스로 설계되었다. 하지만 MySQL 클러스터는 모바일 결제 시스템, 실시간 분석, 씨앗 스트리밍 및 분석 및 콘텐츠 관리를 포함한 기업 솔루션에 사용 사례를 확장 향상시킬 수있다. MySQL 클러스터는 집약적 인 워크로드의 요구를 충족하기 위해 수평으로 확장 할 수있는 기능이 있다. 다음은 MySQL 클러스터의 구조는 다음과 같다. 데이터 노드, 응용 프로그램 노드와 관리 노드 : 클러스터는 3 노드 (node)로 구성된다. 데이터 노드는 일반적으로 데이터 액세스 및 저장을 관리. 애플리케이션 노드는 애플리케이션 로직에서 데이터 노드에 대..

MySQL 설치 후 최적화 (query_cache_size, log_bin, skip_name_resolve)

설치 최적화의 경우는 Qeury 전반에 영향을 주게 됨으로 대게의 경우 개별 Query의 성능 영향도 보다 영향도가 크고, 잘 최적화된 경우에는 효과가 매우 크다. 지난 아티클 "MySQL 설치 후 Innodb Setting", "MySQL 설치 후 최적화 - Basic TOP 3" 에서 다루지 않았으나 중요한 3가지 옵션에 대해 기술합니다. 1. query_cache_sizequery cache는 동시성이 적당한 경우에도 병목이 보일 수 있다. 가장 좋은 옵션은 MySQL 5.6에서는 Defailt로 된 query_cache_size = 0으로 셋팅(비활성화)하는 것이다. 만약 이미 MySQL 어플리케이션이 Query Cache 가 활성화 되어있고, 특별한 문제가 없다면, Query Cache는 유용했..

MySQL 설치 후 최적화 - Basic Setting TOP 3

아래의 3가지 셋팅은 항상 주의깊게 보아야 한다. 아래 옵션들을 셋팅하지 않으면 문제 상황에 직면할 가능성이 높다. 설치 후 미리미리 셋팅하여 문제 상황을 맞지 않는 것이 좋다. 1. innodb_buffer_pool_size이 셋팅은 InnoDB를 이용한다면 가장 유의깊게 셋팅해야 하는 값이다. Buffer pool은 데이터와 인덱스가 캐싱되는 공간이다. 메모리가 공간이 가능하다면 가능한 크게 가져가야 한다. 8GB 환경에서는 5 ~ 6 GB, 32 GB 환경에서는 20 ~ 25 GB, 128 GB 환경에서는 100~120 GB로 셋팅한다.2. innodb_log_file_sizeredo log의 크기이다. redo log는 쓰기 작업을 빠르게 하고, crash 상황에서 복구할 경우 사용된다. MySQ..

MySQL 설치 후 InnoDB Engine Setting

InnoDB 엔진은 MySQL 5.5 이후에는 기본 스토리지 엔진입니다. 최근에는 다른 엔진보다 자주 사용되고 있습니다. 1. innodb_file_per_table shared 테이블 스페이스(innodb_file_per_table = OFF) 혹은 분리된 .idb 파일에 각각 테이블(innodb_file_per_table= ON)로 각각 데이터와 인덱스를 저장한다는 것을 의미한다. 테이블 별로 하나의 파일을 가지는 것은 테이블을 drop, truncate, rebuild할 때마다 공간을 다시 확보할 수 있다. 이것은 예를 들면 압축과 같은 고급 기능을 위해 필요하기도 하다. 그러나 성능상은 어느 이점도 없다. MySQL 5.6 부터는 Default 값이 ON 이다. 그 이전 버전에서, 새로 생성되는 ..

MySQL 쿼리 예시(1)

"가장 높은 아이템 수는?"SELECT MAX(article) AS article FROM shop;+---------+ | article | +---------+ | 4 | +---------+ 마찬가지로, 최소 값을 찾기 위해서는 다음을 활용할 수 있다.SELECT MIN(jnr_id) AS jnr_id FROM chain +----------+ | jnr_id | +----------+ | 1000 | +----------+ 평균 값은SELECT avg(article) AS article_avg FROM shop; +-------------+ | article_avg | +-------------+ | 2.4286 | +-------------+ SUM 값은select sum(article) as ..

MySQL에서 새 user를 생성하고 permission을 부여하는 방법

How to Create a New User 사용자를 생성하고, 권한을 사용자 별로 부여를 해서 데이터베이스 접근에 제약을 줄 수 있다.CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';위 구문을 사용하면 새로 생성되는 유저에게 어떤 데이터베이스에 대해서도 작업을 수행할 권한이 주어지지 않는다. 만약 새로운 유저가 로그인을 한다면, MySQL 쉘에 접근할 수 없을 것이다. 새로운 유저에게 필요한 권한을 부여하는 작업이 필요하다.RANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';위 구문의 *는 newuser가 액세스 할 수 있는 데이터베이스와 테이블을 가리킨다. 새로운 사용자 권한부여 설정을 완료하였으면 ..

The MEMORY (HEAP) Storage Engine (1)

14.4 The MEMORY (HEAP) Storage EngineMEMORY 스토리지 엔진은 메모리에 저장되어있는 내용으로 테이블을 생성한다. 이전에는 이러한 HEAP 테이블로 알려져 있었다. HEAP는 이전 버전과의 호환성을 위해 지원 남아 있지만 메모리가 선호하는 용어다.MEMORY 스토리지 엔진은 하나의 디스크 파일로 각 테이블을 연결한다. 파일 이름은 테이블 이름으로 시작하고 테이블 정의를 나타내는 .frm 확장자로 저장되었음을 나타낸다당신이 MEMORY 테이블을 생성하도록 표시하기 위해서는, ENGINE 테이블 옵션을 사용한다 :CREATE TABLE t (i INT) ENGINE = MEMORY; 오래된 용어 TYPE은 이전 버전과의 호환성을 위해 엔진의 동의어로 지원되지만, 엔진은 선호하는..

mysqladmin — Client for Administering a MySQL Server (2)

4.5.2 mysqladmin — MySQL Server를 관리하는 클라이언트 mysqladmin은 관리 작업을 수행하는 클라이언트이다. 당신은 서버의 구성 및 현재 상태, 데이터베이스를 생성하고 삭제하는 방법 등을 확인하는 데 사용할 수 있다.다음과 같이 mysqladmin 을 호출한다:shell> mysqladmin [options] command [command-arg] [command [command-arg]] ... mysqladmin 은 다음 명령을 지원한다. 일부 명령은 명령 이름 다음에 인수를 넣어야 한다.mysqladmin mysqladmin은이 명령어 라인 또는 옵션 파일의 [mysqladmin] 및 [client] 그룹에 지정 될 수있는 다음과 같은 옵션을 지원합니다. 옵션 파일에 대..