我准备用全新的硬件替换旧服务器,但发生了一些奇怪的事情。
加载SQL转储(见下文)时,新服务器正忙于 32分钟!新安装,服务器没有别的事情可做。另一方面,旧服务器即使忙于其他事情也需要 32% 时间。 怎么可能?
使用Debian最小映像安装了这两台机器,然后根据需要安装了软件包。
新服务器上的my.cnf settings of the old server和new server使用innodb_file_per_table
和innodb_buffer_pool_size
要大得多(16 GB对0.5 GB)。
有关SQL转储的数据:
CREATE DATABASE
)LOCK TABLES "xxx" WRITE; ALTER TABLE "xxx" DISABLE KEYS;
(由mysqldump
生成)任何想法如何加快这件事?
更新
我注意到旧机器在/var
上使用专用的50GB ext3分区,而新机器在/var
上有1TB ext4根分区(包括/home
)和2TB ext4。在这两种情况下,MySQL数据均为/var/lib/mysql/
。
更新2
显然,这是正在缓慢处理小块的硬盘驱动器:
# dd if=/dev/zero of=test bs=1024 count=100 oflag=direct,sync
102400 bytes (102 kB) copied, 2.49824 s, 41.0 kB/s
旧服务器使用相同的测试命中 1.1 MB / s 。
新服务器可以处理更大的块:
# dd if=/dev/zero of=test bs=1024k count=100 oflag=direct,sync
104857600 bytes (105 MB) copied, 7.11175 s, 14.7 MB/s
hdparm
表示两个驱动器上都有写缓存。分区表对齐问题?请参阅my partition table。
答案 0 :(得分:2)
好的,我找到了这个的原因,希望这会对其他人有所帮助。
ext4 有"障碍"在该系统上启用,导致小写入变得非常慢。这种写入对于数据库文件来说是正常的。
禁用障碍可提高性能,并在约8分钟内加载相同的SQL转储(速度提高4倍)。
mount -o remount,barrier=0 /
禁用障碍伴随着fs完整性缺点,所以首先考虑一下......
答案 1 :(得分:0)
在新配置文件的末尾有这一行:
!includedir /etc/mysql/conf.d/
假设其中的文件与以下文件相同:https://github.com/biapy/howto.biapy.com/tree/master/mysql,这意味着它正在添加您可能想要查看的这些设置(
)基optimisations.cnf:
log_bin = /var/log/mysql/mysql-bin.log
sync_binlog = 1