zoukankan      html  css  js  c++  java
  • 搭建mysql cluster

    虚拟机搭建Mysql Cluster

    参考文档:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html

    http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

    需要三台服务器。一个管理节点服务器。另外两个均充当数据节点和sql节点。

    这里选用ubuntu64位操作系统。mysql cluster 对应也必须是64位的。去官方站点下载mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64。

    (注:当在虚拟机操作时,vmware下,可以只先操作一个sql节点,然后虚拟机有克隆功能,直接整一份,这样另一个sql节点就基本搞定了,只需要更改下ip即可。在虚拟机实验下,最好整快照或克隆。

      我这里,管理节点ip是192.168.1.232

      另两个机器,既充当数据节点也是sql节点。ip是192.168.1.210 ;  192.168.1.219   

    安装ubuntu操作系统后,更改ip,dns配置。

    切换用户 sudo passwd root,然后创建个root用户密码。

    su root后,输入root密码。

     以下操作利用root用户进行。

    对每个机器的ip配置:

    vim /etc/network/interfaces

    改内容如下:

    auto eth0

    iface eth0 inet static  #这里没用dhcp动态,取静态ip

    address 192.168.1.219     #ip地址

    gateway 192.168.1.1    #网关地址

    netmask 255.255.255.0    #子网掩码

    dns-nameservers 192.168.1.1  #dns解析

    重启网络设置:

    sudo /etc/init.d/networking restart  

      

    一. 对数据节点和sql节点的操作

    1. 创建组,用户

             groupadd mysql 

             useradd -g mysql mysql

    2. 下载mysql cluster64。传这个文件到某个目录下。这里直接上传到/usr/local(如果利用文件上传服务器,则需要赋给权限如chmod 766 /usr/local)

    解压: tar -xvf mysql.tar.gz

    改名: mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64  mysql

    3. 修改mysql目录权限

    cd mysql 

    chown -R root . 

    chown -R mysql data 

    chgrp -R mysql .

    4. 安装mysql初始库

    在mysql目录下: 

    scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

    5. 把mysql设置为开机自启

    可以把mysql服务开机自启。不整也行。

    6.这里设置mysql配置文件,这里缺省了mysql配置的性能方面参数。

    vim /etc/my.cnf

    [client]

    socket=/usr/local/mysql/sock/mysql.sock

    [mysqld]

    ndbcluster

    datadir=/usr/local/mysql/data

    socket=/usr/local/mysql/sock/mysql.sock

    ndb-connectstring=192.168.1.232       #这个是管理节点的ip

    old_passwords=1

    default-storage-engine=ndbcluster       #可以省略建表的引擎语句(只有引擎是ndb的才可以起到集群的作用)

    [mysql_cluster]

    ndb-connectstring=192.168.1.232  #这里配置的是管理节点服务器地址

    7. 此时不必启动mysql服务。

    以上的操作,需要在多台数据节点和sql节点机器上进行(要是虚拟机,就克隆就好了,然后改下ip)。

    二. 对管理节点的操作

    管理节点不需要安装mysql服务。只需要mysql-cluster解压后的两个文件,分别是

    sql节点服务器上:/usr/local/mysql/bin/ndb_mgmd 和 /usr/local/mysql/bin/ndb_mgm

    ndb_mgmd 是管理节点的服务

    ndb_mgm  是管理节点的客户端查看用

    1. 把sql节点上的这两个文件拷贝到管理节点的/usr/local/bin目录下。(我使用filezilla传过去的)

    2. 在管理节点上,确保这两个文件可执行。

      cd /usr/local/bin

      chmod +x ndb_mgm*

    3. 在/usr/local下创建mysql文件夹,确保数据节点打开服务时,可以生成log文件

      mkdir /usr/local/mysql

    4. 创建一个管理节点的配置文件

      mkdir /var/lib/mysql-cluster

      cd /var/lib/mysql-cluster

      vim config.ini

     

    [NDBD DEFAULT]

    NoOfReplicas=2

    MaxNoOfTables = 1024                      #所有ndbcluster引擎的表数量最大数

    MaxNoOfAttributes = 7000                #所有ndbcluster引擎的表的所有字段数量最大数

    MaxNoOfOrderedIndexes = 10000

    [TCP DEFAULT]

    portnumber=22202

    [NDB_MGMD]

    hostname=192.168.1.232                 #管理节点

    datadir=/var/lib/mysql-cluster/

    [NDBD]

    hostname=192.168.1.210                 #数据节点

    datadir=/usr/local/mysql/data/

    [NDBD]

    hostname=192.168.1.219                 #数据节点

    datadir=/usr/local/mysql/data/

    [MYSQLD]

    # 这里配置sql节点,最好留空。

    [MYSQLD]

      

    三、启动mysql cluster

    注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点,这里数据节点和sql节点是同一个机器。

    1.  ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

    第一次启动时,再加--initial参数,或者在更改config.ini节点时加

    (启动时可能会报个WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,这个不用管就是端口号不建议使用了,warning的级别不如error。可以正常工作的。)

    此时使用ndb_mgm来监听客户端

    2.  数据节点

    /usr/local/mysql/bin/ndbd

    首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。(如果报错:日志文件不能生成,则手动创建这个目录) 

    此时,在管理节点上,ndb_mgm,使用show命令时,可以看到数据节点连接上了(多台数据节点都需要这样操作)

    3.  sql节点

    /usr/local/mysql/bin/mysqld_safe --user=mysql & 

    如果报错说某套接字连不上mysql,那么尝试下再次创建系统数据库,方法如下:

    在mysql目录下 

     scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

     再次启动

     /usr/local/mysql/bin/mysqld_safe --user=mysql &

    查看管理节点。此时sql节点也应该连接上了。

      

    四、测试

    1、常规测试:

    在一个节点比如A节点,上面:

    为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:

    mysql>use test

    mysql>create table teacher(t_id int) engine=ndb;(这里引擎须要是ndb,而不是innodb或其他)

      

    如果是一个已经存在的表,用alter table修改表的引擎。

    mysql>alter table teacher engine=ndb;

    插入一条数据:

    mysql>insert into teacher values(133); 

    然后在B节点上查看:

    mysql>select * from teacher;

      

    A、B两个节点数据保持一致,那就测试成功了哈哈,遇到什么问题网上查一下资料什么的!

      

    模拟NDB节点Crash

     这个测试,基本参照文档:

      http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

    =================================================================================

    备注给需要的童鞋:

    1 查看某机器下,该系统支持的存储引擎

        show engines; 

    2 查看表使用的存储引擎 

        show table status from db_name where name='table_name'; 

    3. 更改表引擎 

      alter table student engine=ndb;

    =================================================================================

     如果你想连接你的mysql的时候发生这个错误:


    ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

    解决方法:
    1. 授权法。 
    如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    ================================================================================= 

    当需要关闭数据节点或sql节点下的某服务,如关闭ndbd服务或mysql服务

    可以这样

    ps aux | grep mysql

    ps aux | grep ndbd

    然后找到进程号,

    利用  kill -9 pid(进程号)

  • 相关阅读:
    jquery+NHibernate3.3.3+MVC的分页效果
    An exception occurred during configuration of persistence layer.
    StringHelpers
    发送带有认证信息的HTTP请求并取回响应
    script的defer和async
    location.origin兼容
    写法导致的兼容性问题
    正则表达式应用收集
    列表数字对齐布局
    轮盘赌算法
  • 原文地址:https://www.cnblogs.com/firstForEver/p/4344831.html
Copyright © 2011-2022 走看看