无关紧要的复制过程是否在源和源表上的复制表副本类型使用不同的引擎。事实上,default_storage_engine
和storage_engine
不复制系统变量。
这提供了许多好处在复制过程中,您可以利用不同的引擎类型不同的复制场景。例如,在一个典型的水平扩展场景(见部分16.3.4,“扩展使用复制”),您想要使用InnoDB
表的源利用事务功能,但使用MyISAM
在副本不需要事务支持,因为数据是只读。当使用复制的数据记录您可能想要使用环境存档
存储引擎的复制品。
配置不同的引擎在源和副本取决于你如何设置初始复制过程:
如果你使用,mysqldump创建源数据库快照,您可以编辑该转储文件文本改变引擎类型用于每个表。
另一个选择,mysqldump禁用引擎类型,您不想使用复制品使用转储之前建立数据副本。例如,您可以添加
——skip-federated
选择你的复制品禁用联邦
引擎。如果不存在一个特定的引擎,创建一个表,MySQL使用默认引擎类型,通常MyISAM
。(这要求NO_ENGINE_SUBSTITUTION
没有启用SQL模式)。如果你想禁用其他引擎通过这种方式,你可能要考虑建立一个特殊的二进制文件的副本仅支持使用你想要的引擎。如果您使用的是原始数据文件(一个二进制备份)建立副本,你不能改变最初的表格格式。相反,使用
ALTER TABLE
改变后的表类型副本已经启动。新源/副本复制安装源上目前没有表,避免指定时,引擎类型创建新表。
如果您已经运行一个复制解决方案,想把你现有的表到另一个发动机型号,遵循这些步骤:
停止运行的副本复制更新:
mysql >停止奴隶;
这使您能够改变发动机类型没有中断。
执行一个
ALTER TABLE……引擎= '
对于每个表被改变。engine_type
”再次启动复制过程:
mysql >开始的奴隶;
虽然default_storage_engine
变量不是复制,请注意创建表
和ALTER TABLE
报表,包括发动机使用说明书正确复制到副本。例如,如果你有一个CSV表执行:
mysql > ALTER TABLE csvtable引擎=“MyISAM”;
前面的语句复制的副本和发动机类型转化为复制品MyISAM
,即使你以前改变了表类型的副本CSV以外的一个引擎。如果你想保留发动机不同源和复制品,你应该小心使用default_storage_engine
当创建一个新表变量的来源。例如,而不是:
mysql > CREATE TABLE为多(一列圆柱int) = MyISAM引擎;
使用这种格式:
mysql >设置default_storage_engine = MyISAM;mysql > CREATE TABLE为多(一列圆柱int);
复制时,default_storage_engine
变量将被忽略,创建表
声明使用复制的副本上执行的默认引擎。