MySQL集群常见问答(4)

原文链接:Appendix B MySQL 5.6 FAQ: MySQL Cluster

31. 【问答原文当关闭MySQL集群时,MySQL集群的数据会发生什么?

集群的数据节点会将保存在内存中的所有数据回写至磁盘,集群下次启动的时候,会将数据再次载入内存。

32. 【问答原文为MySQL集群配置多个管理节点是不是一个好主意?

这是一种很有用的故障保险方法。在任意给定时刻,只有一个管理节点负责控制集群。但是,你可以将一个管理节点配置为主节点,另一个或更多个额外的管理节点配置为备用节点,当主节点发生故障时,备用节点便会接管集群。

若要了解如何配置MySQL集群的管理节点,请参考《MySQL集群配置文件》。

33. 【问答原文我可以在一个MySQL集群中混用不同种类的硬件和操作系统么?

可以的。只要所有的机器和操作系统具有相同的“endianness”即可(全都是“大端存储”或全部都是“小端存储”)。

你还可以在不同的节点上使用不同的MySQL集群发行版本。但是,我们只会在执行滚动升级的过程中支持这种特性(请参考《执行MySQL集群的滚动重启》)。

34. 【问答原文我可以在一个单台主机上运行两个数据节点么?两个SQL节点呢?

可以的,你完全可以做到这一点。在多个数据节点的情况下,让每个节点使用各不相同的数据目录是非常明智的(但不是必须的)。如果你想要在一台机器上运行多个SQL节点,每个mysqld实例都必须使用各不相同的TCP/IP端口。但是,在MySQL 5.6中,通常不鼓励在每台机器上运行多个相同种类的集群节点,最好也不要在生产环境中这样部署。

我们也不建议在一台主机上同时运行数据节点和SQL节点,因为ndbdmysqld可能会争用内存。

35. 【问答原文我在MySQL集群中可以使用主机名么?

可以,你可以为集群主机使用DNS和DHCP。但是,如果你的应用程序需要达到“五个九(99.999%)”的可用性,你应当使用固定(数字的)IP地址,因为集群主机之间的相互通信如果依赖于诸如DNS和DHCP之类的服务,则会引入额外的潜在故障风险。

36. 【问答原文MySQL集群支持IPv6么?

SQL节点(MySQL服务器)之间的网络连接支持IPv6,但是其他所有类型的MySQL集群节点之间的网络连接必须使用IPv4。

实际上,你可以在复制的MySQL集群之间使用IPv6,同一个MySQL集群之内的节点之间的网络通信必须使用IPv4。若要了解更多信息,请参考《MySQL集群复制的已知问题》。

37. 【问答原文如果MySQL集群具有多个MySQL服务器(SQL节点),我该如何进行用户管理?

通常,MySQL用户的账户和权限不会在不同的MySQL服务器(SQL节点)之间自动传播,这些MySQL服务器访问同一个MySQL集群。从MySQL集群的NDB 7.2版本开始,MySQL集群提供对分布式权限的支持。虽然分布式权限并不是自动启用的,但通过MySQL集群文档中提供的某种方法,你可以激活这个功能。若要了解更多信息,请参考《MySQL集群的分布式权限》。

38. 【问答原文如果有一个SQL节点发生故障,我该如何持续不断地发送查询?

MySQL集群没有提供任何类型的SQL节点之间的故障切换机制。你的应用程序必须自己处理SQL节点的故障,以及SQL节点之间的故障切换。

39. 【问答原文我该如何备份和恢复MySQL集群?

你可以在MySQL集群的管理客户端和ndb_restore程序中使用NDB原生的备份和恢复功能。请参考《MySQL集群的在线备份》和《ndb_restore —— 恢复MySQL集群的备份》。

你还可以在MySQL服务器中使用mysqldump工具进行备份和恢复。若要了解更多信息,请参考《mysqldump —— 一个数据库备份程序》。

40. 【问答原文“天使进程(angel process)”是什么?

这个进程会监控数据节点进程,如果有必要,还会尝试重新启动数据节点进程。当启动ndbd之后,如果你检查系统中的活动进程列表,你会发现有2个正在运行的进程名称是ndbd,如下所示(为了简便起见,我们省略了ndb_mgmd和ndbd的输出信息):

  1. shell> ./ndb_mgmd
  2. shell> ps aux | grep ndb
  3. me 23002 0.0 0.0 122948 3104 ? Ssl 14:14 0:00 ./ndb_mgmd
  4. me 23025 0.0 0.0 5284 820 pts/2 S+ 14:14 0:00 grep ndb
  5. shell> ./ndbd -c 127.0.0.1 --initial
  6. shell> ps aux | grep ndb
  7. me 23002 0.0 0.0 123080 3356 ? Ssl 14:14 0:00 ./ndb_mgmd
  8. me 23096 0.0 0.0 35876 2036 ? Ss 14:14 0:00 ./ndbd -c 127.0.0.1 --initial
  9. me 23097 1.0 2.4 524116 91096 ? Sl 14:14 0:00 ./ndbd -c 127.0.0.1 --initial
  10. me 23168 0.0 0.0 5284 812 pts/2 R+ 14:15 0:00 grep ndb

内存和CPU使用率都显示为0的ndbd进程便是天使进程。实际上,天使进程还是会消耗极少量的内存和CPU。它只会简单地检查ndbd主进程(实际上是由主数据节点的进程负责处理数据)是否正在运行。如果允许这样做(例如,将StopOnError配置参数设置为false —— 请参考《MySQL集群数据节点的配置参数》),那么天使进程便会尝试重新启动主数据节点的进程。