我的mysql服务器配好主从备份后一直正常工作,但最近发现主从不能同步了,查询slave状态正常,用show master status查询主服务器状态如下:           File: mysql-bin.000001
        Position: 107
    Binlog_Do_DB: malldb
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)而且不管数据库如何变化,查询日志位置始终是107,好像master停止写日志文件了,查看mysql错误文件也没发现什么问题,哪位知道这是什么问题啊,如何能解决呢?

解决方案 »

  1.   

     Binlog_Do_DB: malldb是不是语句都写到别的库了  而非malldb里
      

  2.   


    malldb库里肯定有更新了,最近对这个库的操作也就是移动了几个表到另外的库里。
      

  3.   

    是不是不小心关闭了主master的binlog日志啊?
      

  4.   

    错误日志里没有error,只有几个note和warning,并且和主从同步没关系!
      

  5.   

    好像是找到问题了!
    如果我在程序里用如下代码,mysql会记录日志:
    use mydb;
    update tablename set dd='xx' where ..但如果我把上面两条语句合并:update mydb.tablename set dd='xx' where ..则mysql不记录日志文件,这太奇怪了,现在需要用后面一种写法,高手们有什么解决办法吗?
      

  6.   

    试试:
    stop slave;
     set global sql_slave_skip_counter =1 ;
     start slave;再执行上述SQL语句,结果如何
      

  7.   

    把 Binlog_Do_DB 去掉,在slave  里面配置reply do db
      

  8.   

    mysql的binlog-do-db选项确实是不支持这种写法的,楼主可以参考以下链接。
    http://dev.mysql.com/doc/refman/5.1/en/replication-options-binary-log.html
      

  9.   

    不好意思,我的理解有误。
    不是不支持,是需要指定default database;
    楼主是不是在执行语句之前执行了use语句来切换数据库,如果这样的话应该只需要
    use malldb;
    重新指定一下默认的数据库就可以了。
      

  10.   

    确实程序里加use malldb就可以,是不是可以通过修改mysql配置来解决,否则只能改程序了?
      

  11.   

    不能,
    在程序中修改
    OR
    mysql -uroot -p123 -D 数据库名来指定
    or
    在数据库事件中执行 USE 数据库名
      

  12.   

    在MYSQL 5.5下测试通过
    [client]
    database=你的默认启动数据库名重新启动MYSQL即可
      

  13.   

    15楼的方法,MYSQL服务启动后,用
    mysql -u -p
    可以直接访问设定数据库,但在程序代码中不行,依然要设定指定的数据库。