前提条件是搭建好了集群环境,搭建集群环境可以查看我的博客
https://blog.csdn.net/huangbaokang/article/details/82656011
https://blog.csdn.net/huangbaokang/article/details/82683925
https://blog.csdn.net/huangbaokang/article/details/82683761
环境说明:
管理节点:192.168.254.102
数据节点:192.168.254.130和192.168.254.131
使用SQLyog客户端连接好数据节点。
一起放在两个tab页签上。
测试数据同步
确保管理节点服务已开启,而且数据节点都已连接上。
[root@localhost bin]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.254.130 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)
id=3 @192.168.254.131 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.254.102 (mysql-5.7.23 ndb-7.6.7)
[mysqld(API)] 2 node(s)
id=4 @192.168.254.131 (mysql-5.7.23 ndb-7.6.7)
id=5 @192.168.254.130 (mysql-5.7.23 ndb-7.6.7)
唯一需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步
在mysqld(API)192.168.254.131中建库建表,并制定引擎为ndbcluster.
刷新192.168.254.130,可以看到,数据库进行了同步,有test数据库,往192.168.254.131t_cluster表插入数据,在192.168.254.130也进行了数据同步。
模拟数据节点奔溃的情况
手工让虚拟机192.168.254.130关机(模拟诸如服务器停电的情况,),往192.168.254.131的t_cluster表插入数据world。然后再次让192.168.254.130开机(模拟服务器来电)。检查192.168.254.130是否能同步断电后新产生的数据。
在192.168.254.130执行关机命令。
[root@localhost mysql]# shutdown now
同时管理节点(192.168.254.102)马上接收到shutdown信号。
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.254.130 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)
id=3 @192.168.254.131 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.254.102 (mysql-5.7.23 ndb-7.6.7)
[mysqld(API)] 2 node(s)
id=4 @192.168.254.131 (mysql-5.7.23 ndb-7.6.7)
id=5 @192.168.254.130 (mysql-5.7.23 ndb-7.6.7)
ndb_mgm> Node 2: Node shutdown completed. Initiated by signal 1.
在192.168.254.131插入新的数据。
让192.168.254.130开机,启动mysql服务,查看数据库表数据也同步过来了,可以说集群环境使数据库容灾安全性得到保证,加上负载均衡设备,可以减轻数据库访问压力。