Este tópico é super antigo, mas ainda é relevante.
Queríamos mesclar muitas gravações minúsculas em um banco de dados MySQL, executado como uma VM em KVM usando imagens Ceph RBD.
Convidado: 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
O dispositivo '/ dev / sda' (1 TiB) está em um conjunto NVMe codificado para eliminação de compressão, com um dispositivo de diário dedicado relativamente pequeno (128 MiB) em um conjunto NVMe triplo replicado.
Com isto, os comandos que usamos em um ambiente de resgate:
Separe o diário:
tune2fs -O ^has_journal /dev/sda1;
Verifique se há inconsistências no sistema de arquivos:
fsck.ext4 -f -C 0 /dev/sda1;
Obter o tamanho do bloco:
tune2fs -l /dev/sda1;
Formate o dispositivo de diário dedicado (AVISO):
O tamanho mínimo do diário deve ser 1024 * tamanho do bloco (usamos 128 MiB para ser seguro)
Defina o tamanho do bloco para corresponder ao de / dev / sda1
mke2fs -O journal_dev -L root_journal /dev/sdb1 -b 4096;
Anexe o dispositivo de diário dedicado ao sistema de arquivos:
tune2fs -j -J device=LABEL=root_journal /dev/sda1;
Configurações do 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