我有一个主从环境,从机的配置信息如下:
我操作系统是ubuntu12.04
数据库mysql.5.1.57
机器是hp dl580g7(新机器)
主库的一个binlog日志大小是200M。
发现从机同步日志特别慢,同步一个binlog大约花一个多小时。
而我在一台虚拟机同样的测试,my.cnf配置一样,虚拟机只需要几分钟就同步好了。
我看了Read_Master_Log_Pos:这块读取比较正常,就是Exec_Master_Log_Pos:太慢了。
什么原因,我怎么排查,公司的系统工程师排查了说IO没问题。

解决方案 »

  1.   

    说明你同步执行的update insert delete语句很慢 看看慢查询里面是哪些具体的sql  拿出来优化下
      

  2.   

    和insert,update,delete没关系,他是一直慢,我上面提过,同样的东西(包括同样的binlog日志)在一个普通的虚拟机几分钟就执行完了。
      

  3.   

    mysql> show variables like 'innodb_flush_log_at_trx_commit';
    +--------------------------------+-------+
    | Variable_name                  | Value |
    +--------------------------------+-------+
    | innodb_flush_log_at_trx_commit | 0     |
    +--------------------------------+-------+
    看下这个参数是否是0
      

  4.   

    +--------------------------------+-------+
    | Variable_name                  | Value |
    +--------------------------------+-------+
    | innodb_flush_log_at_trx_commit | 1     |
    +--------------------------------+-------
      

  5.   

    而且就算开启innodb_flush_log_at_trx_commit,性能也不能相差几十倍吧。
      

  6.   

    可以用FIO分别测试下你的机器和虚拟机的iops
      

  7.   

    可以用FIO分别测试下你的机器和虚拟机的iops从我观察的结果来看,从机写入relay log还是挺快的,没有延迟,但就是Slave_SQL_Running 这个线程执行的慢,也不知道是什么原因,我用hdparm和dd 测试过io性能,是比别的机器差点,但是差别不大。
     而且我在从机执行change master同步主机数据前,执行mysql -uroot -p<all.sql导入数据,在正常机器5分钟执行完毕,在这个有问题的从机执行也只花了7分钟,而且为了做测试,我让同事把这台没做RAID,只有单块硬盘。并且连续换了ubuntu8.04和FreeBSD 9.0试过,都是一样的结果。
      

  8.   

    那是你的sql线程执行慢,查看下这段binlog中是不是有很多耗时的sql