3

我即将用全新的硬件替换旧服务器,但发生了一些奇怪的事情。

  • 机器AMD Athlon 64 X2 5600+ @ 1GHz2 GB RAM运行 Debian 4.0 32 位和 RAID1 中的 2x380 GB(左右)HDD
  • 机器Intel i7-3770 @ 3.4GHz32 GB RAM,运行 Debian 6.0 64 位,RAID1 中的 2x3TB HDD(6Gbps SATA,7200rpm)

加载 SQL 转储(见下文)时,新服务器忙了大约32 分钟!新安装的服务器无事可做。另一方面,即使服务器忙于其他事情,它也减少了32%时间。怎么可能?

两台机器都使用 Debian 最小镜像安装,然后根据需要安装软件包。

旧服务器新服务器的my.cnf 设置都使用innodb_file_per_table并且在新服务器innodb_buffer_pool_size上要大得多(16 GB 对 0.5 GB)。

有关 SQL 转储的数据:

  • 加载一个全新的数据库 ( CREATE DATABASE)
  • 16张桌子
  • 单个大表(大约 1,2M 行 / 240MB SQL 数据),速度很慢
  • 带有外键的 InnoDB
  • 转储用途LOCK TABLES "xxx" WRITE; ALTER TABLE "xxx" DISABLE KEYS;(由 生成mysqldump

任何想法如何加快那件事?

更新

我注意到旧机器上使用了一个专用的 50GB ext3 分区,/var而新机器上有一个 1TB ext4 根分区(包括/var)和一个 2TB ext4 上/home。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说写缓存在两个驱动器上。分区表对齐问题?查看我的分区表

4

2 回答 2

2

好的,我找到了原因,希望这对其他人有帮助。

ext4在该系统上启用了“障碍”,导致小型写入变得非常慢。这种写入对于数据库文件是正常的。

禁用障碍可以提高性能,并且在大约 8 分钟内加载相同的 SQL 转储(快 4 倍)。

mount -o remount,barrier=0 /

禁用障碍会带来 fs 完整性的缺点,所以首先考虑一下......

于 2012-11-14T16:32:57.797 回答
0

您在新配置文件的末尾有这一行:

!includedir /etc/mysql/conf.d/

假设其中的文件与以下文件相同:https://github.com/biapy/howto.biapy.com/tree/master/mysql,这意味着它正在添加您可能想要查看的这些设置(以及其他设置) :

基础优化.cnf:

log_bin = /var/log/mysql/mysql-bin.log
sync_binlog = 1
于 2012-11-14T14:59:47.817 回答