MySQL同步是不是有这样一个问题:服务器上的一个表有原数据,本机这边新建了一个结构相同的表(空的),然后同步,这时服务器上新的数据(Insert into)可以同步过来,但是以前服务上的原数据则没法自动复制过来,你们的情况是不是这样?例如服务器上:
ID Name
1 张三
2 李四本机:
ID  Name
服务器上执行Insert into tbl(Name) values ('王五'),这时服务器:ID Name
1 张三
2 李四
3  王五本机:
ID  Name
3  王五
为什么服务器上原有的数据不会自动复制到本机呢?

解决方案 »

  1.   

    因为同步是基于mysql日志实现的,所以只会同步新的数据,你可以把以前的数据用mysqldump备份然后还原到本机上
      

  2.   

    为什么服务器上原有的数据不会自动复制到本机呢?复制的流程是这样的:
    主服务器INSERT--》主服务器LOG--》从服务器relay LOG--》从服务器INSERT原来的数据的INSERT命令,并没有写入到主服务器的LOG,所以没办法到从服务器。
      

  3.   

    两种方式:
    ①先把主库下线,调用flush tables with read lock;show master status;unlock tables;将mysql停掉,将mysql整体copy到从库,然后使用change master to指向刚才show master status所显示的地方
    ②innodb的话使用xtrabackup备份,myisam锁表copy,其他的同上你可以随便找本书了解一下mysql的replication
      

  4.   

    这是因为已有的数据是你没有做好主从同步的时候创建的,等你同步创建见好之后,2进制日志的位置你肯定写最后的一个位置,再插入新数据的话(就在这个位置之后),故只同步新数据,因为同步原理是基于2进制日志的.
    要是同步之前的数据的话,需要重新change master,前提要知道那些旧数据在2进制日志里的位置.