zoukankan      html  css  js  c++  java
  • linux MySQL Cluster MySQL集群

    原文:http://lizhenliang.blog.51cto.com/7876557/1290451

     官方下载地址

    http://dev.mysql.com/downloads/cluster/

    Linux最新版本7.3.2

    文件大小md5
    mysqlcluster-7.3.2-linux-x32.tar.gz 431.0MB 03093541b6416fc93935750d614d875b
    mysqlcluster-7.3.2-linux-x64.tar.gz 441.8MB 330c71a87fbf8f0468ec9c5e0ad6e794

     

    Window最新版本7.3.2

    文件大小md5
    mysqlcluster-7.3.2-windows-x32.msi 100.2MB 9d25735d7e8af1a2e805f9a1fecc3a1f
    mysqlcluster-7.3.2-windows-x64.msi 95.5MB 6fe30e2045f074f471761cb17f0c3d1c

    基本概念:

    “NDB” 是一种“内存中”的存储引擎,也是事务型存储引擎,具备ACID属性。

    管理(MGM)节点:负责管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。

    数据节点:用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。数据节点是用命令“ndbd”启动的。

    SQL节点:用来访问 Cluster数据的节点。也就是Mysql服务,可以使用service mysqld start启动。

    管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。

    090506799.jpg

    集群配置概述:

    安装版本:mysql cluster 7.3.2

    操作系统 :centos6.3(X64)

    软件名称 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)

    管理节点IP:192.168.0.202

    数据节点-SQL节点IP:192.168.0.203

    数据节点-SQL节点IP:192.168.0.204

    安装依赖包:yum install -y glibc perl libaio-devel

    x32位系统要安装兼容库组:yum groupinstall “Compatibility libraries”

    一、管理节点安装配置

    1、安装mysql-cluster

    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    tar -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz
    mv mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 /usr/local/mysql-cluster
    chown -R root.mysql /usr/local/mysql/
    chown -R mysql.mysql /usr/local/mysql/data/
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql &  #初始化数据库
    cp -rf /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ #复制ndb节点管理命令到本地,方便使用
     

    2、修改mysql主配置文件

    vi /etc/my.cnf
    [MYSQLD]
     user = mysql
     socket = /tmp/mysql.sock
     basedir = /usr/local/mysql #安装目录
     datadir = /usr/local/mysql/data #数据库存放目录
     character-set-server=UTF8
     ndbcluster #运行NDB存储引擎
     ndb-connectstring=192.168.0.202
     lower_case_table_names=1 #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
    [MYSQL_CLUSTER]
    ndb-connectstring=192.168.0.202 #Mysql Cluster管理节点IP
     

    3、创建mysql集群配置文件

    mkdir /var/lib/mysql-cluster
    vi /var/lib/mysql-cluster/config.ini
    [ndbd default]
    NoOfReplicas=2 #定义在Cluster环境中相同数据的份数,最大为4
    DataMemory=256M #分配的数据内存大小,根据本机服务器内存适量来分配
    IndexMemory=256M #设定用于存放索引(非主键)数据的内存段大小
    #一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
    [ndb_mgmd]
    nodeid=1
    hostname=192.168.0.202
    datadir=/var/lib/mysql-cluster/
    [ndbd]
    nodeid=2
    hostname=192.168.0.203
    datadir=/usr/local/mysql/data
    [ndbd]
    nodeid=3
    hostname=192.168.0.204
    datadir=/usr/local/mysql/data
    [mysqld]
    nodeid=4
    hostname=192.168.0.203
    [mysqld]
    nodeid=5
    hostname=192.168.0.204
    保存退出!
    chown mysql.mysql /var/lib/mysql-cluster/config.ini
     

    二、两台数据节点和SQL节点配置相同

    1、安装mysql-cluster

    tar -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz
    mv mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 /usr/local/mysql
    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    chown -R root.mysql /usr/local/mysql
    chown -R mysql.mysql /usr/local/mysql/data
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql & #初始化数据库
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    cp /usr/local/mysql/support-files/medium.cnf /etc/my.cnf
    chmod +x/etc/init.d/mysqld

    2、修改mysql配置文件

    vi /etc/my.cnf
    [MYSQLD]
    user=mysql
    character_set_server=utf8
    ndbcluster
    ndb-connectstring=192.168.0.202
    default-storage-engine=ndbcluster #设置默认是NDB存储引擎
    datadir=/usr/local/mysql/data
    basedir=/usr/local/mysql
    [MYSQL_CLUSTER]
    ndb-connectstring=192.168.0.202 #mysql cluster 管理节点IP

    三、测试(先关闭三台服务器的防火墙(IPTABLES)与 Selinux)

    1、启动管理节点

    ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
    netstat -tuplna | grep 1186 #默认连接端口1186,启动成功
    tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369/ndb_mgmd

    #--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时。

    如果启动出现报错:把config.ini里设置的nodeid都给删除即可!

    151716979.jpg

    2、启动两台数据节点和SQL节点

    数据节点:/usr/local/mysql/bin/ndbd --initial

    SQL节点:bin/mysqld_safe --user=mysql & 或 service mysqld start

    3、查看集群状态

    ndb_mgm -e show #显示管理节点和数据节点则配置成功

    4、创建一个数据库验证是否同步

    mysql -u root -p
    Mysql>create database test;
    Mysql>use test;
    Mysql>create table abc (id int) engine=ndbcluster;#指定数据库表的引擎为NDB,否则同步失败
    Mysql>Insert into abc ()values (1);
    Mysql>select * from abc;

    #此时看两个数据是否数据一致,如果一致说明集群已经成功!

    注意事项:

    1.在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
    2.NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
    3.Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。

    四、管理和维护命令

    关闭mysql集群:ndb_mgm -e shutdown

    重启mysql集群:ndb_mgmd -f /var/lib/mysql-cluster/config.ini

    重启数据节点:/usr/local/mysql/bin/ndbd

    启动SQL节点:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart

    查看mysql状态:ndb_mgm -e show

    启动顺序:

    管理节点 -> 数据节点 -> SQL节点

    关闭顺序:

    SQL节点 -> 数据节点 -> 管理节点

  • 相关阅读:
    洛谷 PT2 First Step (ファーストステップ)
    Mask-D、绮梦与空谷幽兰
    僕らの手には何もないけど、
    魔都蹭课、观光、酱油记
    竞赛计划
    糖果
    点名
    数字对
    字符串哈希
    负环
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6064460.html
Copyright © 2011-2022 走看看