• MySQL Cluster在线添加数据节点


    增加或减少数据节点的数量和 NoOfReplicas(即副本数,通过管理节点的config.ini配置文件来设置)有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。首先必须确保新加入的数据节点作为新的group加入,默认2个node为1个group,Group数量 = NDB节点总数 / NoOfReplicas数

    1、修改管理节点的config.ini配置文件 ,添加如下一段:

    [ndbd]
    NodeId = 13
    HostName = 192.168.137.106

    [ndbd]
    NodeId = 14
    HostName =  192.168.137.107

    这里的NodeId不能跟已有的NodeId重复

    2、配置节点

    # 拷贝文件

    cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

    # 修改配置文件

    vim /etc/my.cnf

    # my.cnf内容如下:

    [mysqld]
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data

    ndbcluster
    ndb-connectstring = 192.168.137.101

    [mysql_cluster]
    ndb-connectstring = 192.168.137.101

    3、关闭管理节点,用reload方式启动管理节点:

    #执行ndb_mgm进入管理命令界面

    #找到管理节点的id,然后执行 管理节点id stop,退出

    /usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/etc/config.ini --reload    #加上reload参数,使得修改过的config.ini生效

    启动成功后用show查看,可以 看到新加入的数据节点,并且处于未连接状态。

    4、滚动重启旧的数据存储节点服务(滚动重启,不能所有节点同时重启,如果同时停止,数据库前端查询就会出现错误)

    ndb_mgm> 11 restart

    Node 11: Node shutdown initiated

    Node 11: Node shutdown completed, restarting, no start.

    Node 11 is being restarted

    ndb_mgm> Node 11: Start initiated (version 7.3.5)

    Node 11: Started (version 7.3.5)

    ndb_mgm> 12 restart

    Node 12: Node shutdown initiated

    Node 12: Node shutdown completed, restarting, no start.

    Node 12 is being restarted

    ndb_mgm> Node 12: Start initiated (version 7.3.5)

    ndb_mgm> Node 12: Started (version 7.3.5)

    5、滚动重启所有的数据查询节点服务

    service mysqld restart

    6、以初如化方式 启动新增加的数据存储节点

    /usr/local/mysql/bin/ndbd --initial

    启动后在管理节点上用show命令查看可以 看到新加入的节点已经启动并处于未分组状态

    id=13 @192.168.137.106 (5.6.17-ndb-7.3.5, no nodegroup)
    id=14 @192.168.137.107 (5.6.17-ndb-7.3.5, no nodegroup)

    7、为新节点增加分组,在管理节点上ndb_mgm下输入以下命令:

    ndb_mgm> create nodegroup 13,14

    这时在管理节点上show,可以看到新节点已经分组。

    ndb_mgm> show
    Connected to Management Server at: localhost:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)] 4 node(s)
    id=11 @192.168.137.102 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, Master)
    id=12 @192.168.137.103 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0)
    id=13 @192.168.137.106 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)
    id=14 @192.168.137.107 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)

    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @192.168.137.101 (mysql-5.6.17 ndb-7.3.5)

    [mysqld(API)] 2 node(s)
    id=81 @192.168.137.104 (mysql-5.6.17 ndb-7.3.5)
    id=82 @192.168.137.105 (mysql-5.6.17 ndb-7.3.5)

    8、重新分配集群数据(数据量表比较大时,会出现很多问题;我当时表里数据量为三千万条,一直报错,报错解决后提示成功,但数据没有迁移过去,最后没有弄,直接把表数据删除了……

    现把网上找到的方法贴到下面:

    SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'NDBCLUSTER';

    ALTER ONLINE TABLE table_name REORGANIZE PARTITION

    然后通过show命令或者使用ndb_desc命令查看

    ndb_desc -c 192.168.137.101 -d tuge datasource -p

    -c后面跟管理节点的ip,-d跟数据库的名字,datasource为表名,-p输出分区的详细信息

    迁移之后空间还没有释放出来,需要通过optimize命令优化表,释放迁移走的空间(当optimize一个ndb大表的时候很慢,很容易出问题)

    表的数据量很多的时候,最好自己编写脚本,实现数据的重新分区和优化。

    参考:

    http://blog.csdn.net/chenxingzhen001/article/details/7598509

  • 相关阅读:
    最新 蓝鲸人java校招面经 (含整理过的面试题大全)
    最新 上海轻轻java校招面经 (含整理过的面试题大全)
    最新 苏州朗动java校招面经 (含整理过的面试题大全)
    最新 医渡云java校招面经 (含整理过的面试题大全)
    变量的自动类型转换和强制类型转换(day01_10)
    java的数据类型(day01_09)
    常用的dos命令操作(day01_03)
    1.镜像-虚拟光驱-光驱
    Spring基于配置文件的方式来配置AOP
    Spring-AOP(切面的优先级&&&重用切点表达式)
  • 原文地址:https://www.cnblogs.com/52php/p/5675398.html
Copyright © 2020-2023  润新知