zoukankan      html  css  js  c++  java
  • 17.3.2 Using Replication with Different Master and Slave Storage Engines

    17.3.2 Using Replication with Different Master and Slave Storage Engines 使用不同额存储引擎进行复制

    复制过程中, 无论是源表在master上和复制表在slave上使用不同的引擎,

    事实上, default_storage_engine and storage_engine没有被复制。

    这个提供了大量的好处在复制过程中,你可以利用不同的引擎类型用于不同的复制方案。

    例如,在一个典型的规模情况,你需要使用InnoDB 表在master上利用交易功能,

    但是使用MyISAM 在slave上 ,不需要事务支持 因为数据是只读的。

    当使用复制在数据记录的环境中, 你需要使用Archive storage engine

    配置不同的存储引擎在master和slave依赖你如何设置初始复制过程。

    如果你使用mysqldump在master上创建数据快照,你可以手动编辑来改变每个表的存储引擎。

    mysqldump 禁用存储类型,你不需要使用在slave上在你开始dump 来创建数据。

    比如, 你可以增加 –skip-federated option在你的slave上来关闭 FEDERATED engine.

    如果一个指定的存储引擎不存在表被创建,MySQL 使用默认的存储引擎类型,通常是MyISAM。

    (这个需要NO_ENGINE_SUBSTITUTION SQL mode is not enabled.) 如果你需要关闭额外的存储引擎用这种方式,

    你可能需要考虑建立一个特别的binary 用于slave 只支持你想要的存储引擎。

    如果你使用raw 数据文件(一个2进制备份)来创建slave,你不需要改变出师表格式,使用ALTER TABLE to change

    改变表的类型在你的slave启动之后。

    对于新的master/slave 复制设置,当前没有表在master上,避免在创建新的表的时候指定引擎类型。

    如果你已经运行渎职解决方案,需要转换你当前的表为其他的引擎:

    1. 停止运行复制在slave上:

    mysql> STOP SLAVE;

    这样你可以改变存储引擎在没有打扰的情况下

    2.执行 ALTER TABLE … ENGINE=’engine_type’ 对于每个表

    3.启动复制进程

    mysql> START SLAVE;

    尽管default_storage_engine 变量没有被复制, 小心 CREATE TABLE 和ALTER TABLE 语句

    包括引擎制定的会被复制到slave:

    mysql> ALTER TABLE csvtable Engine=’MyISAM’;

    上面的语句会被复制到slave,存储类型在slave会被转换成MyISAM。

    即使你之前已经在slave上改变表的存储引擎

  • 相关阅读:
    面试试题
    使用NSURLSessionDataTask请求数据(get post方式)
    使用SSZipArchive第三方库解压zip包
    实现图文混编界面
    使用多线程创建单例对象
    SQL语句的种类_外键_表连接(内连接和左外连接)
    使用第三方库(FMDB) 本地数据库存储数据 --使用为了保证线程安全做法
    利用第三方库XML解析 (TBXML)转化成模型数据
    蓝牙传送_多点连接 (适用于>iOS7)
    Unity 产生各不相同的随机数
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351308.html
Copyright © 2011-2022 走看看