该线程是旧的,但仍然有用。
我们想要合并许多MySQL数据库上的小写内容,并使用Ceph RBD映像在KVM下作为VM运行。
来宾: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池中,而相对较小的(128 MiB)专用日志设备位于三重复制的NVMe池中。
此处提供了我们在救援环境中使用的命令:
分离日志:
tune2fs -O ^has_journal /dev/sda1;
检查文件系统是否存在不一致:
fsck.ext4 -f -C 0 /dev/sda1;
获得块大小:
tune2fs -l /dev/sda1;
格式化专用日志设备(警告):
最小日志大小应为1024 *块大小(为了安全起见,我们使用128 MiB)
设置块大小以匹配/ 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
。你是否有一个?