Gruber Asked: 2015-03-24 05:21:50 +0800 CST2015-03-24 05:21:50 +0800 CST 2015-03-24 05:21:50 +0800 CST 使用 InnoDB 引擎对 MySQL 进行集群 772 我有一个 MySQL 单服务器设置,所有表都使用 InnoDB 引擎(因为我需要外键支持)。随着响应时间越来越长,我现在认为我需要创建一个服务器集群来应对不断增长的数据库负载。 是否可以使用我现有的使用 InnoDB 的数据库创建一个 MySQL 服务器集群?如果没有,我有什么选择? mysql innodb 4 个回答 Voted acanthinura 2015-05-14T07:27:54+08:002015-05-14T07:27:54+08:00 搬到加莱拉是一个选择。那么您的应用程序必须知道“检测到死锁,请尝试重新启动事务”错误。另一种可能性是设置一个只读从站并将您的应用程序配置为将此从站用于只读查询。如果一个 slave 不够,您可以添加更多并将它们与任何类型的负载均衡器一起使用。例如 maxScale、应用层的 ha-proxy 或传输层的 ipvs。 Best Answer Rick James 2015-03-24T07:36:43+08:002015-03-24T07:36:43+08:00 是和不是。 不,没有办法将多个核心或服务器应用于单个 InnoDB 事务。 是的,您可以使用 InnoDB 构建集群。但它是一个 Galera(PXC 或 MariaDB)集群,这意味着多个服务器相互复制。总体吞吐量增加,但单个查询的响应时间不会增加。这可能有助于“加载”,但无助于“响应时间”。你的问题真的是两者兼而有之吗? 不,InnoDB 在 NDB Cluster 中不起作用。 让我们看看您的一个慢速查询。它可能就像制作复合索引或重新制定查询一样简单。或者,如果您正在进行数据仓库,则创建汇总表。请提供EXPLAIN SELECT ...和SHOW CREATE TABLE。 有时加速最糟糕的查询会极大地帮助“加载”和“响应时间”,即使对于其他查询也是如此。 tomek 2015-05-14T06:03:01+08:002015-05-14T06:03:01+08:00 您应该能够迁移到 MySQL Cluster (NDB Cluster),因为新版本已经支持外键并且很容易扩展负载。 然而,正如 Rick 所说,如果通过放置额外的服务器来处理响应时间是这里唯一的选择,那么首先确定一下可能会更好。 另请注意,MySQL Cluster 将所有数据保存在内存中,它不太适合大数据。 Alec 2018-07-17T06:40:27+08:002018-07-17T06:40:27+08:00 从 MySQL 5.7(甚至更好的 8.0)开始,您可以使用 InnoDB Cluster。这让您可以将多个 MySQL 实例作为一个集群运行。可以作为单主机运行:集群的一个成员允许写操作,而其余成员处于只读模式或多主机:集群中的所有成员都支持读取和写入操作。更多详细信息,您可以查看:MySQL手册
搬到加莱拉是一个选择。那么您的应用程序必须知道“检测到死锁,请尝试重新启动事务”错误。另一种可能性是设置一个只读从站并将您的应用程序配置为将此从站用于只读查询。如果一个 slave 不够,您可以添加更多并将它们与任何类型的负载均衡器一起使用。例如 maxScale、应用层的 ha-proxy 或传输层的 ipvs。
是和不是。
不,没有办法将多个核心或服务器应用于单个 InnoDB 事务。
是的,您可以使用 InnoDB 构建集群。但它是一个 Galera(PXC 或 MariaDB)集群,这意味着多个服务器相互复制。总体吞吐量增加,但单个查询的响应时间不会增加。这可能有助于“加载”,但无助于“响应时间”。你的问题真的是两者兼而有之吗?
不,InnoDB 在 NDB Cluster 中不起作用。
让我们看看您的一个慢速查询。它可能就像制作复合索引或重新制定查询一样简单。或者,如果您正在进行数据仓库,则创建汇总表。请提供
EXPLAIN SELECT ...
和SHOW CREATE TABLE
。有时加速最糟糕的查询会极大地帮助“加载”和“响应时间”,即使对于其他查询也是如此。
您应该能够迁移到 MySQL Cluster (NDB Cluster),因为新版本已经支持外键并且很容易扩展负载。
然而,正如 Rick 所说,如果通过放置额外的服务器来处理响应时间是这里唯一的选择,那么首先确定一下可能会更好。
另请注意,MySQL Cluster 将所有数据保存在内存中,它不太适合大数据。
从 MySQL 5.7(甚至更好的 8.0)开始,您可以使用 InnoDB Cluster。这让您可以将多个 MySQL 实例作为一个集群运行。可以作为单主机运行:集群的一个成员允许写操作,而其余成员处于只读模式或多主机:集群中的所有成员都支持读取和写入操作。更多详细信息,您可以查看:MySQL手册