56,679
社区成员
发帖
与我相关
我的任务
分享
MySQL cluster 集群
一个管理节点.
二个SQL节点.
二个数据节点.
NoOfReplicas=2
问题
1. 因为在NDB下,SQL节点存放表结构,数据结构存储数据和索引.
那么,我在其中一个SQL节点创建新的NDB表或者ALTER TABLE 时,我是否也需要在另一个SQL节点执行相同的操作 ? (我这有二个SQL节点)
PS:我认为,二个SQL节点没有直接的关系.它们也不会进行复制.
2. 如果数据库中有INNODB和NDB两种存储引擎,据我的理解,INNODB的表结构和表空间依然都存放在SQL节点,那么我改变INNODB数据时,需要二个节点都修改吗?(我这有二个SQL节点)
3. 据我的理解,其实NDB的所有数据和表结构都是存放在SQL节点上面的,只是当数据节点连接到管理节点时,管理节点会按某些规则把数据从SQL节点分配到数据节点上面 ? (这不是这样理解对不对)
是数据节点把一部分SQL节点的NDB数据放到数据节点的硬盘上,然后再把这些数据加载到内存中 ?
如果是这样.那么我删除所有的NDB数据节点,重新创建新的数据节点.数据也依然不会丢失吧 ?
4. NDB其实是把数据全部加载到内存中,后来又看到新版本说,现在只需要加载索引和索引数据就可以了.不知道是从哪个版本开始有这个区别的?
如果内存中只有索引和索引数据列,那么我查询非索引字段,怎么办,内存中没有.不会进行全NDB集群的物理扫描吧 ?
如果是这样.那么我在设计的时候,是否要严格按照索引列去查询 ?
5. 如果创建NDB的索引,是否只有创建的那个数据结构会锁表,其余的节点还是可以正常运行?
6. 如果NDB的数据很大,是否能用xtrabackup去备份数据 ?
1.为什么在某一个节点上创建表或ALTER TABLE操作,其他节点不需要修改呢?
我的理解是这样的.如果修改某行数据.它的修改的数据是在数据节点上面的,所有通过任何SQL节点都能看到修改的数据.
但是,例如执行ALTER TABLE添加某个字段或创建MyISAM表之类的,它的表结构是保存到SQL节点的.所以只会在某个SQL
节点上去操作,然而,各个SQL节点并没有任何直接性的关联,请问,它们是怎么通讯,怎么知道的?
2.如果在某个节点上创建INNODB,其他节点是看不到的,那是否我要向INNODB表插入数据,要在每一个SQL节点上操作一遍.
如果是这样,大家通常用什么方案来达到某一个节点插入INNODB数据.所有SQL节点都会有数据.或者说,这种情况大家通常
采用什么方案.
PS: 如果使用主从复制的方案,把INNODB复制到每个节点,但是NDB的数据是否也会经常复制.那不是插入了N次?
3.
a).NDB的数据如果都是存放在数据节点,那么存放在数据节点上是以什么方式存放的.
PS:我在数据节点的数据文件夹里面,看到很多乱七八糟的文件夹,完全看不出什么规则来.
b).NDB把数据加载到内存,为什么第一次要加ndbd –-initial 参数呢? 反正都是把物理文件加载到内存中去,
为什么第一次连接要加--initial,后面不需要加.
4.
a).最新貌似是7.4 的cluster ,是从7.4开始的吗?
6. 如果我用Xtrabackup备份INNODB是没问题的.都放到某个机器的文件夹里面,但是.如果我备份NBD数据.
在SQL节点上,却只有NDB的表结构,NDB的数据,都在数据节点上.这个,能备份进去吗? 貌似不行吧?
PS: 备份NDB,大数据情况下,大家通常用什么方案去备份. 大家别告诉我,在管理节点上使用start backup去
备份数据了.数据大了 .它能备份的出来么?