你可以在Master和Slave(MySQL)上对表进行不同的索引吗

Sco*_*ler 25 mysql indexing replication alter-table

是否可以在主设备上为只读从设备设置不同的索引?基本上,考虑到两个系统的不同要求,这似乎是有道理的,但我想确保它能够工作而不会造成任何问题.

MBC*_*ook 16

我相信是这样.复制工作后,您可以删除从属服务器上的索引并创建所需的索引,并且应该这样做.由于MySQL复制语句而不是数据(至少在默认情况下是这样),只要插入或更新或从表中选择所需的SQL不需要更改,它就不应该注意到.

现在明显存在缺点.如果您创建了一个不在主服务器上的唯一密钥,则可能会在主服务器上插入无法插入从服务器的数据.如果完成使用索引的更新,它可能在主服务器上快速运行,但会在从服务器上进行表扫描(因为您没有任何方便的索引).

如果主服务器上发生了任何DDL更改(例如更改索引),那么将传递给从服务器,并且即使您不希望它也会在那里创建新索引.

  • 你如何改变从表? (2认同)

Rie*_*sio 15

当然.我一直这样做.我遇到的问题:

  • 通过FORCE/USE/IGNORE INDEX in 引用索引SELECTS会出错
  • ALTER在主服务器上的参数中引用索引可能会破坏复制
  • 增加了另一个步骤,以便在紧急情况下促使奴隶成为主人
  • 如果您使用基于语句复制(规范),以及你与玩弄UNIQUE索引,任何INSERT... ON DUPLICATE KEY,INSERT IGNOREREPLACE的语句将导致极端数据漂移/发散
  • 性能差异(好的和坏的)


Ste*_*rig 5

当然,我认为将 InnoDB 表复制到从属服务器上的 MyISAM 表中甚至是一种常见的做法,以便能够添加全文索引。