问题1  关于热备份  仅对MyISAM
   
  首先我就用了一下mysqldump -h127.0.0.1 -uxxx -pxxx -B testdata > test01.sql
  
  在这个mysqldump执行的过程中,我开了一个session ,并且向这个数据库的表插入数据。 
  
  插入显示的成功的.
  
  但我在test01.sql文件里面并没有看到我用session插入的数据。但是在select * from testdata;
  
  里面却是有了这些数据。。
  
  请问,在这个过程了。mysqldump做了一个什么样的操作实现的这一点。。
  
  
   问题2 
   
   如果数据库中有MyISAM和InnoDB两种存储引擎(里面有大量表),我要进行热备份,是要对2种存储引擎
   
   分别采用不同的机制备份吗?。。也就是需要2次mysqldump 操作进行备份吗?

解决方案 »

  1.   


    这也是为什么mysqldump 有一个参数 -lock-all-tables 的原因。
    mysqldump 一个表一个表的导出,比如已经导出了 t1,t2,t3,  此刻你新插入t1的数据自然不会体现
      

  2.   

    不需要。 mysqldump 并不区别存储引擎,是逻辑备份。
      

  3.   


    ==============================================================  那么说 ,我在mysqldump 的时候 ,还没有开始导出到t3的时候,我在一个session里面插入的数据t3的数据。这些数据是可以进入 *.sql文件里面的?,,,(我想也是、、) 对吗?  那么,我在对myisam进行热备份的时候,只用先--lock-all-tables 才能起到热备份的作用了? 
    ======================================================================= 关于问题2 我的意思是,如果说数据库中既有myisam和innodb 两种存储引擎 如果说MYISAM进行备份的时候,需要进行--lock-all-tables操作。必然也锁定了innodb表。。 可是我对innodb表进行热备份的时候根本不需要进行lock table...。 我对innodb热备份使用 --single-transaction ... 也是就说。如果一起备份。我锁了全部的表,不是对innodb的表的插入有影响吗?
      

  4.   

    1、如果你锁表,就不会插入成功了;
    2、mysqldump不区分引擎 。
      

  5.   

      mysqlhotcopy 貌似只能运行在数据库目录所在的机器上~  可我是客户端和服务端分离的。  ibbackup 是收费软件吧。。貌似听说跟mysqldump --single-transaction 一样的。只是速度方面没有ibbackup快   以上说的对么。
      

  6.   

    首先这是逻辑备份。传统上的热备是指直接在操作系统层,或者数据底层直接实现文件或者数据块的复制。
    至于是否要加 --lock-all-tables这和你的备份策略相关,你自己要决定是否要备份同一时刻数据库中所有表的快照。另一贴已经解释这个问题了。同样是由你的备份策略决定。