이 스레드는 매우 오래되었지만 여전히 관련이 있습니다.
우리는 Ceph RBD 이미지를 사용하여 KVM 하에서 VM으로 실행되는 MySQL 데이터베이스에 많은 작은 쓰기를 병합하고자했습니다.
게스트 : CentOS 6 VM의 / etc / fstab :
/dev/sda1 / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,noatime,nodiratime,commit=60,data=journal,discard 1 1
'/ dev / sda'장치 (1 TiB)는 압축 된 삭제 코딩 된 NVMe 풀에 있으며 트리플 복제 된 NVMe 풀에 비교적 작은 (128 MiB) 전용 저널 장치가 있습니다.
구조 환경에서 사용한 명령은 다음과 같습니다.
저널을 분리하십시오.
tune2fs -O ^has_journal /dev/sda1;
불일치 한 파일 시스템을 확인하십시오.
fsck.ext4 -f -C 0 /dev/sda1;
블록 크기를 구하십시오.
tune2fs -l /dev/sda1;
전용 저널 장치 형식 (WARNING) :
최소 저널 크기는 1024 * 블록 크기 여야합니다 (안전을 위해 128MiB를 사용함)
/ dev / sda1의 블록 크기와 일치하도록 블록 크기를 설정하십시오.
mke2fs -O journal_dev -L root_journal /dev/sdb1 -b 4096;
전용 저널 장치를 파일 시스템에 연결하십시오.
tune2fs -j -J device=LABEL=root_journal /dev/sda1;
MySQL 설정 :
[mysqld]
innodb_old_blocks_time = 1000 # Prevent buffer pool pollution. Default as of MySQL 5.6
innodb_buffer_pool_size = 24576M # MySQL Cache
innodb_log_buffer_size = 128M # 25% of log_file_size
innodb_log_file_size = 512M # 25% of the buffer_pool (no, not really)
query_cache_size = 128M # Query Cache
table_cache = 512 # Make it large enough for: show global status like 'open%';
#mysqltuner.pl:
innodb_flush_method = O_DSYNC # Don't validate writes. MySQL 5.6+ should use O_DIRECT
innodb_flush_log_at_trx_commit = 2 # Flush MySQL transactions to operating system cache
join_buffer_size = 256K
thread_cache_size = 4
innodb_buffer_pool_instances = 16
skip-innodb_doublewrite
data=journal
보다 안전한 결과를 제공 하는 사례를 찾을 수 없습니다 . 하나 있어요?data=ordered
nodelalloc