MySQL에서 대소문자 구별 파라미터입니다. 관련 옵션들은 다음과 같습니다. lower_case_table_names = 0 테이블 생성 및 조회 시 대·소문자 구분한다. 유닉스 혹은 리눅스에서 사용. lower_case_table_names = 1 입력 값이 대·소문자든 소문자로 인식 소문자 인식 파일 생성. 모든시스템에서 사용하려면 이것으로 사용. lower_case_table_names = 2 윈도우에서 대·소문자를 구분해서 테이블생성 테이블 및 데이터베이스 이름은 CREATE TABLE 또는 CREATE DATABASE 문에 지정된 문자 대소 문자를 사용하여 디스크에 저장되지만 MySQL은 조회시이를 소문자로 변환합니다. 이름 비교는 대소 문자를 구분하지 않습니다. 이것은 대소 문자를 구분하지 않..
■ 컬럼의 문자 연결 MySQL에서 컬럼의 문자를 연결하는 대표적인 함수는 다음과 같습니다. ▶︎ concat : 컬럼 데이터와 컬럼 데이터를 연결합하여 하나의 스트링 문자열로 표시합니다. ▶︎ group_concat : 특정컬럼의 각 결과값을 하나의 가로열(ROW)로 표시합니다. ■ 예제 ▶︎ concat : mysql> select * from concat_test; +------+------+-------+ | c1 | c2 | c3 | +------+------+-------+ | 1 | A | COMMA | | 2 | B | DESK | +------+------+-------+ 2 rows in set (0.00 sec) mysql> select concat(c1,c2,c3) from conc..
▶︎ sysdate와 now의 차이 MySQL에서 날짜 관련된 처리 함수는 대표적으로 sysdate와 now가 있습니다. 두가지 모두 시간을 표시한다는 점에서는 차이가 없습니다. mysql> select sysdate(); +---------------------+ | sysdate() | +---------------------+ | 2021-03-28 23:41:04 | +---------------------+ 1 row in set (0.00 sec) mysql> select now(); +---------------------+ | now() | +---------------------+ | 2021-03-28 23:41:10 | +---------------------+ 1 row in set..
■ Percona XtraBackup 소개 Percona에서 만든 백업 유틸리티로 MySQL에 사용되는 온라인 백업입니다. mysqldump처럼 논리적인 백업이 아니라 아예 물리적인 파일을 통째로 특정 디렉토리에 복사하는 방법을 사용합니다. 풀백업, 증분백업, 암호화 백업, 압축백업을 지원합니다. MySQL 엔터프라이즈 라이센스에 포함된 백업 도구의 기능을 모두 제공할 뿐만 아니라 더 유용한 기능들도 제공합니다. 현재 xtrabackup은 현재 2.4, 8.0 2가지를 제공하고 있습니다. 2.4 이하 버전은 EOS되었습니다. 2.4는 MySQL 5.7 이하 버전에 대해 제공하고 있으며 8.0은 MySQL 8.0을 지원합니다. 여기서는 2.4버전으로 설명을 합니다. 2.4 버전은 백업 프로그램명이 xtra..
■ InnoDB 디스크 I/O InnoDB는 I/O가 진행되는 동안 다른 데이터베이스 작업이 진행되도록 허용하면서 많은 스레드를 만들어 I/O 작업을 처리함으로써 비동기 디스크 I/O를 사용합니다. Linux 및 Windows 플랫폼에서 InnoDB는 사용 가능한 OS 및 라이브러리 기능을 사용하여 "기본"비동기 I/O를 수행합니다. 다른 플랫폼에서 InnoDB는 여전히 I/O 스레드를 사용하지만 스레드는 실제로 I/O 요청이 완료 될 때까지 기다릴 수 있습니다. 이 기술을 "시뮬레이션 된"비동기 I/O라고합니다. ▶ Read-Ahead(미리읽기) InnoDB가 데이터가 곧 필요할 가능성이 높다고 판단하면 미리 읽기 작업을 수행하여 해당 데이터를 버퍼 풀로 가져와 메모리에서 사용할 수 있게합니다. 연속된..
■ MySQL Shell 설치 ▶︎ 설치 방법 • 다운로드 URL https://dev.mysql.com/downloads/shell/ OS와 플랫폼에 맞는 버전을 다운로드합니다. 여기서는 CentOS 7에 설치하는 방법을 알아봅니다.. 위의 경로에 접속 후 Select Operating System에 Redhat Enterprise Linux / Oracle Linux를 선택 후 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Package 8.0.23 31.6M (mysql-shell-8.0.23-1.el7.x86_64.rpm) 을 다운로드 합니다. 그리고 아래와 같은 명령어로 설치합니다. shell> yum install mysql-s..
■ sys schema 소개 sys schema는 Performance Schema를 편하게 볼 수 있도록 별도로 만든 view들의 모음입니다. 기본적으로 performance schema에서 수집된 성능을 이용해서 보여줍니다. ▶︎ 주의 사항. 1. 업그레이드시 유의사항이 있습니다. mysql_upgrade로 기존 sys schema는 업그레이드가 안됩니다. 해당 버전으로 다른곳에서 덤프받아 설치해야 합니다. 혹은 mysql github에서 다운로드 받아 설치합니다. 2. 위에서 설명했듯이 performance schema가 활성화되어 있어야 합니다. performance schema에서 다음과 같은 이벤트들을 이용합니다. - All wait instruments - All stage instrumen..
다음 예외를 제외하고 AUTO_INCREMENT, LAST_INSERT_ID () 및 TIMESTAMP 값의 문 기반 복제가 올바르게 수행됩니다. MySQL 5.7.1 이전의 문 기반 복제를 사용하는 경우 복제본의 테이블에있는 AUTO_INCREMENT 열은 소스의 동일한 열과 일치해야합니다. 즉, AUTO_INCREMENT 열은 AUTO_INCREMENT 열에 복제되어야합니다. • AUTO_INCREMENT 열을 업데이트하는 트리거 또는 함수를 호출하는 문은 문 기반 복제를 사용하여 올바르게 복제되지 않습니다. 이러한 진술은 안전하지 않은 것으로 표시됩니다. • 이 복합 키의 첫 번째 열이 아닌 AUTO_INCREMENT 열을 포함하는 복합 기본 키가있는 테이블에 대한 INSERT는 문 기반 로깅 또는..
max_allowed_packet은 복제본을 포함하여 MySQL 서버와 클라이언트 간의 단일 메시지 크기에 대한 상한을 설정합니다. 큰 열 값 (예 : TEXT 또는 BLOB 열에서 찾을 수 있음)을 복제하고 max_allowed_packet이 소스에서 너무 작 으면 소스가 오류와 함께 실패하고 복제본이 복제 I / O 스레드를 종료합니다. 복제본에서 max_allowed_packet이 너무 작 으면 복제본이 복제 I / O 스레드를 중지하게됩니다. 행 기반 복제는 현재 업데이트에 의해 실제로 변경되지 않은 열 값을 포함하여 원본에서 복제본으로 업데이트 된 행의 모든 열과 열 값을 보냅니다. 즉, 행 기반 복제를 사용하여 큰 열 값을 복제 할 때 업데이트 만 복제하거나 삽입하는 경우에도 복제 할 테이블에..
MySQL Client로 select INTO OUTFILE으로 덤프파일을 내릴때 다음과 같은 에러가 발생할 수 있습니다. mysql> select * INTO OUTFILE '/data/outfile.sql' FIELDS TERMINATED BY '|' from schema.table; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 위의 에러는 보안관련 에러로 특정 디렉토리 이외에는 파일 쓰기가 금지되어 있을때 위의 에러가 발생합니다. 해결방법은 2가지 입니다. 해당 특정 디렉토리만 이용하거나 모든 디렉토리를 이용할 수 있도록 위의 보안 ..
명령문 기반 복제를 사용하면 마스터에서 실행되는 트리거가 슬레이브에서도 실행됩니다. 행(ROW) 기반 복제를 사용하면 마스터에서 실행된 트리거가 슬레이브에서 실행되지 않습니다. 대신 트리거 실행으로 인한 마스터의 행 변경 사항이 복제되고 슬레이브에 적용됩니다. 행 기반 복제에서 슬레이브에 트리거가 있을 때 마스터 변경사항이 슬레이브에 적용되고 이 넘어온 데이터가 슬레이브 트리거로 인해 다시 수행되게 됩니다. 즉 슬레이브에 두번 적용되어 마스터와 슬레이브에 다른 데이터가 생성됩니다. 그래서 행 기반에서는 트리거가 작동하지 않게끔 설계되어 있습니다. 트리거를 마스터와 슬레이브 모두에서 실행하려면 명령문 기반 복제를 사용합니다. 그러나 슬레이브 트리거를 사용하기 위해 명령문 기반 복제를 독점적으로 사용할 필요..
성능 스키마를 사용하여 InnoDB 테이블에 대한 ALTER TABLE 진행 상황을 모니터링 할 수 있습니다. ALTER TABLE의 여러 단계를 나타내는 7개의 스테이지 이벤트가 있습니다. 각 단계 이벤트는 다른 단계를 통해 진행될 때 전체 ALTER TABLE 작업에 대해 WORK_COMPLETED 및 WORK_ESTIMATED의 누계를보고합니다. WORK_ESTIMATED는 ALTER TABLE이 수행하는 모든 작업을 고려하는 공식을 사용하여 계산되며 ALTER TABLE 처리중에 수정될 수 있습니다. WORK_COMPLETED 및 WORK_ESTIMATED 값은 ALTER TABLE에서 수행한 모든 작업의 추상적인 표현입니다. 발생 순서에 따라 ALTER TABLE 단계 이벤트에는 다음이 포함됩니..