MySQL Cluster 是一种在无共享系统中实现内存数据库集群的技术。
无共享架构允许系统使用非常便宜的硬件,并且对硬件或者软件的特定要求最低。
MySQL 集群的设计没有任何单点故障。
它将标准 MySQL 服务器与称为 NDB 的内存集群存储引擎集成在一起。
MySQL Cluster 是指 MySQL 和 NDB 存储引擎的组合。
MySQL 集群由一组计算机组成,每台计算机运行一个或者多个进程,这些进程可能包括一个 MySQL 服务器、一个数据节点、一个管理服务器和(可能)一个专门的数据访问程序。
这篇文章解释了如何设置一个小型 MySQL 集群来做一些基本的测试、NDB API 开发,或者只是为了了解 MySQL 集群。
它描述了如何设置可以在本地工作站上运行的受限 MySQL 集群安装。
当然,这种设置永远不应该用于生产中。
首先,从安装最新的 MySQL Community 版本开始。
或者安装 MySQL 的 Max 版本,其中包括 MySQL Cluster,或者安装 Standard 版本以及集群存储引擎和操作系统的工具的二进制文件。
尚未启动 MySQL 服务器,在文本编辑器中打开或者创建文件 /etc/config.ini 并添加以下行:
# This configuration should not be used in production! [NDBD DEFAULT] NoOfReplicas = 2 DataMemory = 80M # 80M is default IndexMemory = 18M # 18M is default DataDir = /var/mysql-cluster LockPagesInMainMemory = 1 # Make sure not to use swap [NDB_MGMD DEFAULT] DataDir = /var/mysql-cluster [NDB_MGMD] HostName = localhost [NDBD]HostName = localhost [NDBD] HostName = localhost [MYSQLD] [MYSQLD] [API]
接下来,通过打开或者创建文件 /etc/my.cnf 并添加以下文本来配置 MySQL 服务器:
[mysqld] datadir=/var/mysql ndbcluster ndb_connectstring="localhost"
现在我们已准备好启动 MySQL 集群:首先启动管理节点,它将保存配置,使其可用于其他节点。
我们不必是 root 来启动它,但我们必须确保所有目录都可由我们启动的用户写入。
从命令行输入以下内容以启动管理节点:
ndb_mgmd -f /etc/config.ini
接下来,我们需要从命令行启动数据节点,如下所示:
ndbd -c localhost ndbd -c localhost
要检查正在运行的内容,我们可以通过从命令行输入以下内容来使用管理客户端:
ndb_mgm -c localhost ndb_mgm> SHOW
请注意,第二行是从 Management Client 中输入的,并且只输入了 SHOW 语句。
它应该返回与此类似的结果:
[ndbd(NDB)] 2 node(s) id=2 @127.0.0.1 (Version: 5.0.41, starting, Nodegroup: 0, Master) id=3 @127.0.0.1 (Version: 5.0.41, starting, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 (Version: 5.0.41) [mysqld(API)] 3 node(s) id=4 (not connected, accepting connect from any host) id=5 (not connected, accepting connect from any host) id=6 (not connected, accepting connect from any host)
在管理客户端中多次执行 SHOW 命令,直到“开始”状态消息消失。
最后启动的进程是 MySQL 服务器。
现在像往常一样启动 MySQL,或者输入如下内容:
mysqld_safe --defaults-file=/etc/my.cnf &
如果一切顺利,MySQL 应该正在运行,我们现在可以使用 NDB 存储引擎。
以 root 用户或者具有 CREATE 权限的用户登录 MySQL 后,尝试通过输入以下 SQL 语句来创建表:
CREATE TABLE table1 ( col_id INT NOT NULL AUTO_INCREMENT, col1 VARCHAR(20), PRIMARY KEY (col_id) ) ENGINE=NDB;
如果我们能够正确执行此操作,则我们已经运行了一个基本的 MySQL 集群。
设置生产环境与此类似,但我们将需要更多机器和更高级的配置。