MySQL复制就像对MyISAM表一样,也对InnoDB表起作用。以某种方式使用复制也是可能的,在这种方式中从服务器上表的类型不同于主服务器上原始表的类型。例如,你可以复制修改到主服务器上一个InnoDB表,到从服务器上一个MyISAM表里。
要为一个主服务器建立一个新服务器,你不得不复制InnoDB表空间和日志文件,以及InnoDB表的.frm文件,并且移动复件到从服务器。关于其恰当步骤请参阅15.2.9节,“移动InnoDB数据库到另一台机器”。
如果你可以关闭主服务器或者一个存在的从服务器。你可以采取InnoDB表空间和日志文件的冷备份,并用它来建立一个从服务器。要不关闭任何服务器来建立一个新的从服务器,你也可以使用非免费(商业的)InnoDB热备份工具。
InnoDB复制里一个小的限制是LOAD TABLE FROM MASTER不对InnoDB类型表起作用。有两种可能的工作区:
· 转储主服务器上的表并导入转储文件到从服务器。
· 在用LOAD TABLE tbl_name FROM MASTER建立复制之前,在主服务器上使用ALTER TABLE tbl_name TYPE=MyISAM,并且随后使用ALTER TABLE把主表转换回InnoDB。
在主服务器失败的事务根本不影响复制。MySQL复制基于二进制日志,MySQ在那里写修改数据的SQL语句。从服务器读主服务器的二进制日志,并执行同样的SQL语句。尽管如此,在事务里发生的语句不被写进二进制日志直到事务提交,在那一刻,事务里所有语句被一次性写进日志。如果语句失败了,比如,因为外键违例,或者,如果事务被回滚,没有SQL语句被写进二进制日志,并且事务根本不在从服务器上执行。