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节点 -> 数据节点 -> 管理节点

  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6064460.html
Copyright © 2011-2022 走看看