Pon*_*oni 5 mysql cluster-computing
我已经阅读了很多MySQL Cluster文档和一些教程,但我仍然有一些不清楚的东西,现在主要的是:
关于问题#2,行的更新采用以下语法:
UPDATE db_accounts.tbl_items SET items=items+%lld WHERE id_account=%u
Run Code Online (Sandbox Code Playgroud)
"id_account"是一个索引(唯一).
MySQL Cluster是一个内存数据库(虽然有些列可以存储在磁盘上,但索引列不能存储).如果拔下插头,您的数据就会消失.重新加入群集的节点的恢复过程是它从幸存的节点中拉出丢失的数据(需要节点之间良好的快速链接),然后小心地应用复制事件,直到它赶上并可以主动参与.如果最近的备份可用,则可以从该备份而不是另一个节点重建备份,但原理是相同的:必须从头开始重新填充节点.
MySQL Cluster基本上是一个分布式哈希表.保存特定数据行的NDB节点由应用于主键的散列算法确定.假设您的数据在节点之间很好地传播,则通过添加节点来提高性能.如果查询必须触及多个节点,性能会受到严重影响 - 即.复杂的连接 - 但是在给定主键的情况下检索特定的行是快速的.
显然,鉴于节点是分布式的,缓慢或拥塞的网络将严重影响性能.
小智 5
即使您的MySQL Cluster表在内存中,默认情况下,任何写入都会异步检查到磁盘(可以基于每个表关闭它).
如果整个群集出现故障(数据中心断电),那么当您重新启动时,将从这些磁盘检查点检索数据.缺点是因为它们是异步创建的,您可能会错过一些更新.
如果单个数据节点出现故障以及从其本地磁盘副本恢复,则会通过应用来自其对等数据节点的最新更新来实现.
为了进一步提高数据的可用性,您可以使用MySQL异步复制到第二个站点(如果需要,可以在世界的另一端).
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |