现有一个主机数据库A下面有5个数据库,这个主机设置了日志增量备份,同时在某段时间的更新操作比较频繁。
配置了一个从机数据库,复制主机的5个数据库,现在有下面2个问题:1 因为设置了增量备份,可能从机正在读的时候,由于增量备份会把日志文件复制到另外一个地方去,这个时候应该怎么控制?有没有什么办法知道该日志文件已经被从机读了,如果知道被从机读了在执行增量备份。2 从机是居于库的,如果一个数据库执行更新的操作比较耗时,那么其他4个数据库的更新操作就要被柱塞。怎么控制,虽然现在分为i/o线程和sql线程

解决方案 »

  1.   

    还有个问题,就是如果配置了主从复制,怎么实现读写分离。
    假设我有个web程序,怎么能实现insert update delete 操作主数据库,select操作从数据库?
    如果一个存储过程里面有select 又有 update,这个时候,是选择主的还是从的数据库???
      

  2.   

    1 因为设置了增量备份,可能从机正在读的时候,由于增量备份会把日志文件复制到另外一个地方去,这个时候应该怎么控制?有没有什么办法知道该日志文件已经被从机读了,如果知道被从机读了在执行增量备份。当用执行flush LOGS的时候,会产生一个新的日志文件,原来的日志文件就当做增量备份文件了,这时候你想复制到哪都可以,不要剪切删除就行了,因为这时候可能从机正在读取这个日志。在从机上执行SHOW SLAVE STATUS,里面有个MASTER_LOG_FILE,这个就是正在读取的主服务器的日志文件名称。
    解决的办法是设置日志保留时间,在my.cnf 中指定日志过期 expire_logs-days=n,这样超过N天的日志文件就被删除掉。你做增量备份的时候只做复制操作就没问题。
    2 从机是居于库的,如果一个数据库执行更新的操作比较耗时,那么其他4个数据库的更新操作就要被柱塞。怎么控制,虽然现在分为i/o线程和sql线程从机是单线程的,所有的操作都是得排队来,一个个操作。解决的办法是增强从机的配置,更强大的CPU,内存。
      

  3.   

    读写分离可以使用mysql proxy,也可以自己开发……
      

  4.   


    mysql本身的比较好吧,其他的那就太耗内存了。
    想试试。