> 데이터 베이스 > MySQL 튜토리얼 > Mysql innodb는 커널 버퍼를 우회하고 Linux에서 직접 I/O를 실현하도록 raw를 구성합니다.

Mysql innodb는 커널 버퍼를 우회하고 Linux에서 직접 I/O를 실현하도록 raw를 구성합니다.

PHP中文网
풀어 주다: 2017-07-04 19:31:17
원래의
1066명이 탐색했습니다.

(리눅스 커뮤니티에서 다시 게시)

MySQL의 InnoDB 스토리지 엔진은 인덱스뿐 아니라 데이터도 캐시할 수 있습니다. 테이블과 인덱스를 원시 장치(Raw Device)에 저장하여 파일 시스템의 캐시와 버퍼를 우회하고 디스크에 직접 접근할 수 있습니다. Linux 파일 시스템의 부담을 크게 줄이고 시스템 성능을 크게 향상시킵니다.

또한, 데이터베이스 애플리케이션의 베어 디바이스 최적화 원칙에서 데이터베이스 최적화의 기본 방향은 고유한 I/O 집약적인 액세스로 인해 발생하는 파일 시스템의 과도한 부담을 줄이는 방법임을 알 수 있습니다. 데이터 베이스. 따라서 기존 파일 시스템 기반 데이터베이스 스토리지 엔진에서도 특별한 파일 시스템 마운트 방법을 고려할 수 있다.
예를 들어 데이터베이스 파일을 저장하는 파티션의 마운트 매개변수로 noatime을 사용하면 액세스 시간이 더 이상 기록되지 않으므로 시스템 성능이 어느 정도 향상될 수 있습니다.

──────────────────────────────────────────────── ─────────────────────────
본 노트에 구성된 최신 시스템 환경:
──────────── ── ───────────────────────────────────────────────── ───────────
OS: CentOS6
HDD: /dev/sdc /dev/sdd
RAW: /dev/raw/raw1 /dev/raw/raw2
MySQL: 5.1.61
USER: mysql:mysql

공식 웹사이트의 구성 가이드를 참조하세요:

──────────────────────────────────────────────── ────────────────────────
(1) 원시 장치 준비
──────── ───────── ───────────────────────────────────── ──────────── ──────────
원시 장치를 사용하기 전에 먼저 디스크 장치를 원시 장치에 바인딩해야 합니다.

# /bin/raw /dev/raw/raw1 /dev/sdc;
-------------------------------- --------------
/ dev/raw/raw1: 바인딩됨 메이저 8, 마이너 32
----------------------------------------- ---- ---------------------------------

다른 원시 장치를 바인딩한 다음 MySQL 데이터베이스의 실행 사용자에게 원시 장치를 읽고 쓸 수 있는 권한을 부여하세요.

# /bin/raw /dev/raw/raw2 /dev/sdd;
# chown 루트:mysql /dev/raw/raw1 /dev/raw/raw2;
# chmod 0660 /dev/raw/raw1 /dev/raw /원시2;


# /bin/raw -qa;
# /bin/raw -q /dev/raw/raw1;
# /bin/ls -l /dev/raw/raw1;
# blockdev --report /dev/raw /raw1;
# blockdev --report /dev/sdc;


vi /etc/udev/rules.d/60-raw.rules;
------------------ --- ---------------------------------- ---
ACTION=="추가", KERNEL=="sdc", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION =="추가", KERNEL=="sdd", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw2 %N"
------ ---- -------------------- ---- -------
참고: 이렇게 하면 서버 재부팅 시 /dev/sdc 및 /dev/sdd 장치가 자동으로 바인딩됩니다.

# vi /etc/udev/rules.d/41-local-permissions-rules;

──────────────────────────────────────────────── ─────────────────────────
(2) 필요한 경우 이전 InnoDB 데이터 테이블을 먼저 백업하세요
──── ───── ───────────────────────────────────────────────── ─────────────────
데이터베이스가 이미 실행 중이고 기존 데이터가 이전 InnoDB 엔진에 저장되어 있는 경우, 마이그레이션이 필요한 경우,
mysqldump 명령을 사용하여 내보내기를 수행하세요. 데이터베이스를 닫기 전에 데이터를 가져온 다음 새 엔진이 구성된 후에 데이터를 가져옵니다.

다음 SQL 명령을 참조하여 InnoDB 데이터 테이블을 보고 내보낼 수 있습니다.

mysql> SELECT table_schema,table_name,engine FROM INFORMATION_SCHEMA.TABLES;
mysql> SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE 엔진='InnoDB';

필요한 경우 mysqldump를 사용하여 데이터를 내보낼 수 있습니다. 다음 형식을 참조하세요(해당 데이터베이스 및 테이블 이름을 사용하세요).

mysqldump -u root -p -h localhost [데이터베이스].[테이블] >

참고: 이전 데이터 테이블을 테이블별로 내보내야 합니다.

──────────────────────────────────────────────── ─────────────────────────
(3) 초기화 단계 중 MySQL 구성
──────────── ─── ──────────────────────────────────────────────── ──────────
새 데이터 파일을 생성할 때 innodb_data_file_path:
에서 데이터 파일 크기 바로 뒤에 키워드 newraw

를 입력하세요.

# vi /etc/my.cnf;
----------------------------------------- ------ ------------------ ----
[mysqld]
innodb_buffer_pool_size=128M
innodb_data_home_dir=
innodb_data_file_path=/dev/raw/raw1:64Mnewraw;/dev/raw/raw2:64Mnewraw
--------------- ------------- ----------- ------------- ---

후기:

mysql은 my.ini

에서 innodb_flush_method를 구성하는 또 다른 구현 방법도 제공합니다.

innodb_flush_method = O_DIRECT

직접 I/O도 가능합니다

위 내용은 Mysql innodb는 커널 버퍼를 우회하고 Linux에서 직접 I/O를 실현하도록 raw를 구성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿