Server

innodb_use_sys_malloc에 따라 The InnoDB memory heap is disabled mysql error 메시지

by nanumi posted Aug 23, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

mysql error 메시지



#InnoDB에게 할당하는 버퍼 사이즈로 50~60%가 적당하며, 지나치게 많이 할당하면 Swap이 발생할 수 있습니다.

innodb_file_per_table=1            # 테이블 단위로 테이블스페이스 할당, 활성시 확장자 .ibd 파일이생성됨

innodb_buffer_pool_size=512M

#innodb_additional_mem_pool_size = 4M     # 데이터 디렉토리 정보와 내부 데이타 구조를 저장하는 메모리 풀의 크기


#innodb_buffer_ll

#https://blog.marceloaltmann.com/en-warm-up-innodb-buffer-pool-pt-esquentando-o-innodb-buffer-pool/


innodb_buffer_pool_dump_at_shutdown = 1

innodb_buffer_pool_load_at_startup = 1

innodb_buffer_pool_load_abort=ON


#트랜잭션 로그를 기록하는 파일 사이즈이며, 128MB ~ 256MB가 적당합니다.

innodb_log_file_size=32M


#이중으로 쓰기 버퍼를 사용하는지 여부를 설정하는 변수로 활성화 시 innodb_doublewrite 공간에 기록 후 데이터 저장합니다. 저는 활성화합니다.

# on off에 따라.... http://urin79.com/blog/20660042 오류발생됩니다.

innodb_use_sys_malloc =  0

innodb_flush_method = normal 





The InnoDB memory heap is disabled

mysql .err 파일 - The InnoDB memory heap is disabled



innodb_use_sys_malloc =  0 이라고 하면

InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB's internal memory allocator.


이런 오류가 나오고

innodb_use_sys_malloc =  on 이라고 하면

[Note] InnoDB: The InnoDB memory heap is disabled


이런 문구가 나온다.


무엇이 중헌디???






2016-08-23 20:49:51 756 [Note] InnoDB: Using atomics to ref count buffer pool pages

2016-08-23 20:49:51 756 [Note] InnoDB: The InnoDB memory heap is disabled


http://icoon22.tistory.com/331

구글링해보니 mysql 설정파일인 /etc/my.cnf 에서 innodb_buffer_pool_size 의 크기를 적절히 조절해주면 된다고 해서

설정을 찾아봤는데..

 

innodb_buffer_pool_size = 2G ......................................


아....  어떤 멍청이가 버퍼 사이즈를 2기가나 준거야 ㅡㅡ+

그래서 해당 설정을 주석처리 해주었다. 만약 50%라고 하면 가용한 메모리의 50%를 버퍼로 쓰겠다는 것이다.



2016-08-23 20:49:51 756 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions

2016-08-23 20:49:51 756 [Note] InnoDB: Memory barrier is not used

2016-08-23 20:49:51 756 [Note] InnoDB: Compressed tables use zlib 1.2.3

2016-08-23 20:49:51 756 [Note] InnoDB: Not using CPU crc32 instructions

2016-08-23 20:49:51 756 [Note] InnoDB: Initializing buffer pool, size = 4.0G

2016-08-23 20:49:52 756 [Note] InnoDB: Completed initialization of buffer pool

2016-08-23 20:49:52 756 [Note] InnoDB: Highest supported file format is Barracuda.

2016-08-23 20:49:52 756 [Note] InnoDB: 128 rollback segment(s) are active.

2016-08-23 20:49:52 756 [Note] InnoDB: Waiting for purge to start

2016-08-23 20:49:52 756 [Note] InnoDB: 5.6.20 started; log sequence number 6118224953

2016-08-23 20:49:52 756 [Note] IPv6 is available.

2016-08-23 20:49:52 756 [Note]   - '::' resolves to '::';

2016-08-23 20:49:52 756 [Note] Server socket created on IP: '::'.

2016-08-23 20:49:52 756 [Note] Event Scheduler: Loaded 0 events

Version: '5.6.20-log'  socket: ''  port: 3306  MySQL Community Server (GPL)




A. innodb_data_home_dir

 : 테이블스페이스 파일의 생성 위치 설정


B. innodb_data_file_path

 : 테이블스페이스 파일 명 및 크기옵션 설정

innordata1:256M:autoextend:max:2000M

innordata1라는 파일명으로 생성되고 256MB의 고정크기로 최초 생성되며용량이 256MB가 넘을 경우 “autoextend”라는 옵션으로 자동으로 파일 크기가 확장되며최대 확장되는 크기는 MAX 옵션의 설정 값만큼 확장


C. innodb_autoextend_increment

 : autoextend 옵션으로 자동 확장되는 크기 지정디폴트는 8M


D. innodb_file_per_table

 : 공용 테이블스페이스 사용 대신에 테이블 별 테이블스페이스 사용 옵션

TableName.idb 파일 생성


E. innodb_log_group_home_dir

 : 로그 파일에 대한 디렉토리 경로 설정


F. innodb_buffer_pool_size

 : 자신의 테이블에 있는 데이터와 인덱스를 캐시하기 위해 사용하는 메모리 버퍼의 크기이 값을 크게 설정하면 할수록테이블에 있는 데이터를 접속하는데 필요한 I/O가 덜 생김전체 메모리의 60~80%로 설정


G. innodb_additional_mem_pool_size

: InnoDB가 데이터 디렉토리 정보와 다른 내부 데이터 구조를 저장하기 위해 사용하는 메모리 풀의 크기

H. innodb_flush_log_at_trx_commit

자신의 테이블에 있는 데이터와 인덱스를 캐시하기 위해 사용하는 메모리 버퍼의 크기이 값을 크게 설정하면 할수록테이블에 있는 데이터를 접속하는데 필요한 I/O가 덜 생김전체 메모리의 60~80%로 설정


I. innodb_flush_log_at_trx_commit

: commit 을 하였을때 그 즉시 commit 된 데이터를 log file 에 기록할지 안할지를 설정

0 - log buffer내용이 1초 간격으로 로그파일에 쓰여지고 flush, commit시 미동작

1 - log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush

2 - log buffer내용이 commit할 때에 로그 파일에 쓰여지고 flush 1초 간격으로 동작


J. innodb_log_buffer_size

: InnoDB가 로그 파일을 디스크에 쓰기 위해 사용하는 버퍼의 크기사용 가능한 크기는 1~8MB, 디폴트는1MB.


K. innodb_log_file_size

로그 파일의 크기 설정디폴트는 5MB, 로그 파일은 하나의 파일에 계속 저장되는 것이 아니고 순차적으로 파일이 일정한 크기와 용량으로 순환식으로 생성, innodb_buffer_pool_size 25% 정도로 설정.


L. innodb_lock_wait_timeout

트랜젝션의 타임아웃은 롤백이 진행되기 전에 락을 대기하는 시간디폴트는 50.


M. innodb_flush_method

: Flush 명령어 방식 설정디폴트는 fdatasync.

fdatasync - fsync()를 사용해서 데이터와 로그 파일을 flush

O_SYNC - 로그 파일을 열고 flush하지만데이터 파일을 flush하기 위해서는 fsync()를 사용

O_DIRECT - O_DIRECT를 사용해서 데이터 파일을 열고데이터 파일과 로그 파일을 flush (몇몇 GNU/Linux 버전에서 사용 가능함)

 Windows에서는 flush 방식은 항상 async_unbuffered 사용


N. innodb_thread_concurrency

: InnoDB 내부에 OS 쓰레드의 숫자 설정설정된 값과 같거나 적게 유지권장하는 값은 여러분이 사용하는 시스템의 프로세스와 디스크의 전체 합설정 값의 범위는 0~100.

 

3. InnoDB Table 생성(Default Engine InnoDB가 아닐 경우)

 . Table 생성시

  : InnoDB 테이블을 생성하기 위해서는, CREATE TABLE 명령문에서 ENGINE = InnoDB 옵션을 지정한다:


CREATE TABLE customers (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;

 . MyISAM 테이블을 InnoDB로 변환

: Alter문 사용하여 변경

 ALTER TABLE tablename ENGINE=INNODB;


#mysql #error #메시지 #urin79