8. 测试 8.1. 常规测试
为了让数据表能够在cluster中正常复制,创建数据表时必须指定为ndbcluster引擎(engine=ndb或engine=ndbcluster)。
登录到10.24.64的MySQL,然后创建一个新数据库songzi,并创建一个ndbcluster引擎的数据表test(id int,name char(10)),并向表中插入一条数据(0,songzi)。10.24.6.4上的操作及结果如下图:
然后登录10.24.6.6的mysql,可查看到数据已同步,并且新建的表及数据也存在。10.24.6.6上的操作及结果如下图:
8.2. 模拟NDB节点Crash
终止10.24.6.4上的NDB进程,执行以下指令查看NDB进程情况
ps -ef | grep ndbd
kill 24077
ps -ef | grep ndbd
具体操作及结果见下图:
也可以在ndb_mgm管理节点客户端查看到10.24.0.101上的NDB节点已停掉
然后分别登录到10.24.6.4和10.24.6.6的mysql,可发现依然能够查询到数据。结果如下图
10.24.6.4
10.24.6.6
此结果说明测试成功,即当有一个NDB节点Crash后,整个MySQL环境仍可以正常服务。
8.3. 模拟SQL节点Crash在上10.24.6.4上终止mysqld进程,可执行以下指令:
killall mysqld
也可以在ndb_mgm管理节点客户端查看到10.24.6.4上的SQL节点已停掉
登录到10.24.6.6上的mysql,可查看到数据依然存在
此结果说明测试成功,及当有一个SQL节点Crash后,整个MySQL-Cluster环境仍可以工作。
至此,整个MySQL-Cluster安装及配置实验已完成。实验结束后,可使用指令shell> ndb_mgm -e shutdown或者ndb_mgm>shutdown来关闭簇中的所有节点。
9. 遇到问题 10. 总结
Mysql cluster是一个统一的共享集群
多mysql同时共享
一个值多份存储,不是像redis那样根据一致性hash分布存储
高并发、高可用、高伸缩性
share nothing架构
通过增加数据节点扩展:通过32个数据节点实现每秒2亿条NoSQL查询,以及通过16个数据节点每秒查询近250万SQL语句
推荐使用lvs + keepalived + mysql cluster 实现集群mysql,MySQL Cluster是一个实时可扩展且符合ACID的事务型内存数据库