전체 글 84

[장애] Warning: purge reached the head of the history list

1. 내용 1.1 환경 - MariaDB Version : 10.1.12- DB 서버 2대 이중화 구성 1.2 내용 - Innobackupex 로 백업된 파일을 이용하여 Master 서버 DB 복구. 복구 이후 MariaDB Connection 실패 2. 원인분석 2.1 로그 분석 (error log) - 해당 에러로그는 InnoDB 데이터파일이 손상되었을 경우 발생되는 에러로그 InnoDB: Warning: purge reached the head of the history list,InnoDB: but its length is still reported as 2907435... 2.2 innobackupex - apply-log 작업시 에러 발생. 이미 백업 시점에서 데이터파일이 손상되었음 IMPOR..

MariaDB/장애 2020.02.24

[ADMIN] 실행 계획 분석 #1

1.쿼리 실행 절차 3단계 1.1 SQL 파싱 (MariaDB 엔진) - 요청된 SQL 문을 MariaDB 가 이해 할 수 있도록 잘게 쪼개어 분리 작업 및 문법 체크 1.2 최적화 및 실행계획 수립 (MariaDB 엔진) - 불필요한 조건의 제거 및 연산의 단순화 - 조인 순서 결정 - 인덱스 선정 - 레코드 데이터 가공 여부 결정 - 실행계획 수립 1.3 데이터 추출 (스토리지 엔진 + MariaDB 엔진) - 실행계획을 토대로 스토리지 엔진에 레코드 요청 (스토리지 엔진) - 받은 레코드에 대한 조인 및 정렬 작업 (MariaDB 엔진) 2. 옵티마이저의 종류 - 옵티마이저란 ? 사용자가 요청한 SQL 을 가장 효율적이고 빠르게 수행할수 있는 최적 ( 최저비용 ) 의 처리경로를 선택해주는 DBMS ..

[에러] ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine

[테스트 환경] OS : CentOS7 64bit DB : MariaDB 10.1.12 1. 에러 내용 - Xtrabackup을 이용해서 원격지 백업을 진행한 이후에 테이블 조회 시 CASE 1, CASE 2와 같은 에러가 발생함. - [참고] 백업 명령어 ssh $g_ms_in innobackupex --user=$g_sp_usr --password=$g_sp_pwd --stream=xbstream ./ | ssh $g_sl_in "xbstream -x -C $DB_HOME/datadir/ MariaDB [DB명]> SELECT * FROM [테이블명]; CASE 1ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine CASE 2ERROR 1814 (HY..

MariaDB/Admin 2017.09.26

[에러] Incorrect datetime value: ''

[테스트 환경] OS : CentOS7 64bit DB : MariaDB 10.1.12 1. Error 내용 - SELECT INSERT 쿼리에서 다음과 같은 에러 발생 Incorrect datetime value: '' [특이 사항] - 기존에 에러 없이 실행되던 쿼리가 어느 순간부터 실행이 안됨. - 동일한 환경인 다른 서버에서 실행했을 때 정상적으로 실행 됨. 2. 해결 방안 - 쿼리 내의 암묵적인 형변환이 발생하는지 확인 - VARCHAR 타입을 DATE 타입으로 암묵적인 형 변환을 발생시키는데 여기서 ''을 리턴하는 것으로 예상 - 명시적으로 형변환을 할 수 있도록 쿼리 변경 [변경 전] AND [VARCHAR 타입인 컬럼]

MariaDB/SQL 2017.08.02

[에러] [error] Can't exec "master_ip_failover": 허가 거부

[테스트 환경]OS : CentOS7 64bitDB : MariaDB 10.2.7 1. Error 내용 - 설정 확인 시 master_ip_failover 파일에 대해서 허가 거부가 발생하여 Replication Health 체크 실패 [maria@ scripts]masterha_check_repl --conf=/maria_mha/[서비스명]/conf/[설정파일명].cnf ..... Wed Jul 26 04:28:54 2017 - [info] /maria_mha/[서비스명]/scripts/master_ip_failover --command=status --ssh_user=[유저명] --orig_master_host=[호스트명] --orig_master_ip=[ip] --orig_master_port=33..

MariaDB/MHA 2017.07.26

Foreign Key 생성 시 Index 생성

[문제점]MariaDB에서는 FK 생성 시에 참조 키를 빠르게 확인하고 테이블 스캔을 하지 않으려고 인덱스를 생성함. [테스트]1. 스크립트 CREATE DATABASE ADB_TEST ; -- ADS_기업 CREATE TABLE `ADB_TEST`.`ADS_CO` ( `CO_NO` DECIMAL(9) NOT NULL, -- 기업번호 `CO_NM` VARCHAR(100) NULL, -- 기업명 `HDOF_ADDR` VARCHAR(500) NOT NULL, -- 본사주소 `DLG_TEL_NO` VARCHAR(20) NULL, -- 대표전화번호 `DLG_DRTR_NM` VARCHAR(100) NOT NULL, -- 대표이사명 `ESTB_DT` VARCHAR(8) NULL, -- 설립일자 `SALES_AMT`..

MariaDB/SQL 2017.06.02

[MariaDB][ADMIN] show processlist - Waiting for table metadata lock

[테스트 환경] - CentOS 7 - MariaDB 10.1.12 1. 문제 상황 - Toad에서 대상 테이블을 조회하던 도중 사용자에 의한 중지 - 중지가 되어도 실제 프로세스 상에는 세션이 쿼리를 조회하고 있음 - INDEX를 DROP 하는 중에 metadata lock이 걸려서 대기 상태에 빠진 상황 MariaDB [(none)]> show processlist; +-----+---------+---------------------+-------+-------------+---------+-----------------------------------------------------------------------+----------------------------------------------..

MariaDB/Admin 2017.03.29

[SQL] INSERT ALL 쿼리로 부모테이블과 자식테이블 적재 테스트(FK)

[테스트 환경] - Windows Server 2008 64bit - Oracle 11g 64bit standard 1. 문제 상황 - 시퀀스를 사용해서 INSERT ALL로 부모 테이블과 자식 테이블에 데이터를 적재한다. 1.1. 테이블 생성 스크립트 -- 부모테이블 CREATE TABLE ADB_PARENTS ( PR_SEQNO NUMBER(9) NOT NULL, PARENTS_NM VARCHAR2(50) NULL ); ALTER TABLE ADB_PARENTS ADD CONSTRAINT PK_ADB_PARENTS1 PRIMARY KEY ( PR_SEQNO ); -- 자식테이블 CREATE TABLE ADB_CHILD ( PR_SEQNO NUMBER(9) NOT NULL, CHILD_NM VARCHA..

Oracle/SQL 2017.03.23

[MariaDB][Admin]AUTO_INCREMENT를 활용한 PK구성 방법

[테스트 환경] - Windows 7 - MariaDB 10.1.12 1. AUTO_INCRMENT컬럼의 PK 활용 방법 - 오라클의 SEQUENCE는 테이블에 종속되지 않고 사용 할수 있는 반면 MariaDB(Mysql)는 테이블 종속적으로 SEQUENCE처럼 사용 가능한 AUTO_INCREMENT 기능이 존재 한다. 오늘은 AUTO_INCREMENT를 활용하여 PK를 구성방법에 대해서 얘기하려고 한다. 1.1. AUTO_INCREMENT컬럼 단일 PK - AUTO_INCREMENT컬럼을 사용하여 단일 PK를 구성하는 것은 전혀 문제가 없음 CREATE TABLE DA_AUTO_INCREMENT_TEST( DA_NO int(11) NOT NULL AUTO_INCREMENT, DA_ID VARCHAR(1..

MariaDB/Admin 2017.03.23

[Admin] ORA-01157, ORA-01110 장애 해결 방안

1. 문제 발생 - DB 오픈 시 UNDO 데이터 파일 에러 발생 SQL> startup ORACLE instance started. Total System Global Area 422670336 bytes Fixed Size 1344616 bytes Variable Size 314575768 bytes Database Buffers 100663296 bytes Redo Buffers 6086656 bytes Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: '/app/oracle/oradata/testdb/undotbs01.dbf' 2. 문제 해결 -- UNDO..

Oracle/Admin 2017.03.16