mysql-cluster(10)——注意事项

mysql-cluster系列:

  1. mysql-cluster(1)——简介
  2. mysql-cluster(2)——部署
  3. mysql-cluster(3)——集群管理和维护
  4. mysql-cluster(4)——创建内存表和磁盘表
  5. mysql-cluster(5)——jdbc
  6. mysql-cluster(6)——配置详解
  7. mysql-cluster(7)——基准测试
  8. mysql-cluster(8)——最佳实践
  9. mysql-cluster(9)——NDB和InnoDB区别
  10. mysql-cluster(10)——注意事项

  • 连接

MySQL cluster适合用于高速带宽的环境中,采用TCP/IP方式连接。它的性能跟主机间的连接速率有直接关系。集群中的最小速率要求是常规的100Mb以太网或者等同的网络。我们建议可能的话就采用G级网络。

  • 内存

MySQL cluster可以运行在任何启用NDB的平台上。显然,CPU越快,内存越大,对集群性能提升越明显,64位的CPU也可能比32位的处理器更快。每个作为数据节点的机器都必须有足够的内存来保存共享数据库。

内存表的数据(包括索引)都保存在内存中。如果你的数据有1GB那么大,你想要复制一份到集群中的话,那么就必须要 2GB的内存才行(每份复制占用1GB),这是运行集群的计算机上相对其他操作系统额外要求的内存。如果一个数据节点上的内存使用超出了可用的范围,则操作系统会使用交换内存来达到上限值DataMemory。不过这会导致性能严重下降,并且可能导致相应时间变慢。正是由于这个原因,我们不推荐在生产环境中使用磁盘交换空间。在任何情况下,只要达到DataMemory上限了,那么所有的操作请求(比如插入)都会失败。

磁盘表,包含主键哈希索引的有索引字段,必须仍保存在RAM中,但可以将所有其他字段保存在磁盘上。

需要特别注意: 每个MySQL集群表都需要主键。如果没有定义主键,则 NDB 存储引擎会自动创建一个所有的数据节点的内存大小都要一样,由于集群中任何数据节点都不能使用比其他数据节点最小内存还多的内存。换句话说,如果集群中有4台计算机,如果有3台计算机的内存都是3GB,而另外一台只有1GB,那么每个数据节点最多只能拿出1GB内存用于集群。

一个mysql cluster最大支持3T。

  • 安全

MySQL cluster的2个节点之间的通信是不安全的,它们没有经过任何保护机制加密或者防护。安全的集群是放在防火墙之内的私网中,在外界中无法直接访问数据和管理节点(SQL节点也要和其他MySQL服务器一样注意安全防护)。

  • 存储引擎

MySQL cluster只支持 NDB 存储引擎。也就是说,想要让一个表在集群节点中共享,就必须指定ENGINE=NDB(或 ENGINE=NDBCLUSTER 也一样)。
MySQL cluster中也可以使用MyISAM或InnoDB存储引擎来创建数据表,但是那些非NDB的表不会存储在集群节点间共享,非NDB的表独立于创建的MySQL服务器或者实例中。

  • 导入

可以把各种版本的MySQL数据导入到集群中去。唯一的要求就是要导入的表必须是 NDB 存储引擎,也就是用 ENGINE=NDB 或 ENGINE=NDBCLUSTER方式创建的表。

  • 数据类型

MySQL cluster支持所有常用的数据类型,除了跟MySQL相关的空间扩展类型。另外,NDB表的索引也有些不同。

注意: MySQL cluster表(即 NDB 或 NDBCLUSTER 类型表)只支持固定长度记录。这也意味着(举例)如果有一条记录包含有 VARCHAR(255) 字段,那么它就会需要用到255个字符的空间(和数据表使用的字符集和校验所要求的空间一样大),而不管实际存储的字符数。但是在MySQL 5.1中,只保存被记录实际占用的字段部分。

在NDB表中,数据库名称和表名的总最大长度为122个字符,属性名称最大长度31个字符,多余的部分会被截断,进而导致错误。

  • 事务

NDB表支持事务,只支持READ COMMITTED隔离级别。

  • 外键

支持外键。

  • FULLTEXT索引

NDB存储引擎不支持FULLTEXT索引。

猜你喜欢

转载自blog.csdn.net/weitry/article/details/80579988