从MySQL官方开发者网站的文档中可以很清楚地从1 MySQL数据库服务器扩展到4-5服务器: http : //dev.mysql.com/doc/refman/5.1/en/replication-solutions-scaleout.html
从4台服务器扩展到20台服务器怎么样? 我们只是把它作为药膏join? 意思是只有一个主人的19个奴隶? 这意味着无论我们放入多less台数据库服务器,插入速度都是一样的。
有没有更好的方法来扩展MySQL,通过我们放入的服务器越多,读取速度和写入速度就越快。 我们看到这是一个需要,因为这是一个重型交易公司(A Trading网站)
哦,如果可能的话,避免使用SAN存储。 如果需要SAN,不妨将MySQL迁移到Cassandra。
有几个解决scheme。
为了让插入性能对代码影响最小,请查看mysql集群 。 这些远远超出了复制的范围,并且透明地实现了分片。 我相信(但是需要仔细检查)一个mysql集群可以充当主/从复制的主节点。 所以,例如。 您可能有一个4节点集群处理写入复制到十几个从属。
请注意,您可以实现主/主复制 – 您可以有效地将任意数量的节点安排在一个环中 – 这也将为您提供插入性能的好处 – 但是,如此大量的节点,增加了延迟的风险更新的传播。
如果你有一个复杂的模式,那么使用联合存储引擎分割数据可能会带来很大的好处,尽pipe在这种情况下,mysql并不总是优化查询。
你绝对应该看看mysqlproxy或其他抽象层,如果你走下这些路线的大部分。
如果你正在处理那么多的节点,请查看mysql-mmm或ndb集群,但是请注意,如果你使用MySQL集群(ndb),那么你将需要相应地改变你的代码。
MySQL-MMM可以在http://mysql-mmm.org/find,而ndb的东西是来自mysql.com的MySQL Cluster Server的一部分
您可能想要查看分发主文件安装程序。
这将涉及创造一个有三(3)个特征的奴隶(称为分配主人):
那会有什么好处?
想象这个场景
以下是在ServerA中执行INSERT时发生的情况
这提供了以下好处
这已经被别人尝试过了。 事实上,我在DBA StackExchange和StackOVerflow中回答了一个问题。 对于愿意做腿部工作的人来说,这是一个可行的select,但是在两个或多个奴隶之间有一个可读的I / O体面传播。
如果你关心高可用性,没有问题。 你有两个select:
选项1
重新安装如下
选项2: 使用MySQL和DRBD
通过DRBD和ucarp引入磁盘级冗余