MySQL-Cluster 初识

数据节点(ndb):
- [root@client119 ~]# vim /etc/hosts
- 192.168.1.118 client118.kongzhong.com client118
- 192.168.1.119 client119.kongzhong.com client119
- 192.168.1.120 client120.kongzhong.com client120
- 192.168.1.121 client121.kongzhong.com client121
- 192.168.1.122 client122.kongzhong.com client122
- 192.168.1.123 client123.kongzhong.com client123
- 192.168.1.124 client124.kongzhong.com client124
- 192.168.1.125 client125.kongzhong.com client125
- 192.168.1.126 client126.kongzhong.com client126
3.mysql-cluster 管理节点配置:
(1).在管理节点[192.168.1.118]上建立一个存放cluster配置文件的目录
- [root@client118 ~]# mkdir /var/lib/mysql-cluster
- [root@client118 ~]# cd /var/lib/mysql-cluster/
(2).编写配置文件
- [root@client118 mysql-cluster]# vim configure.ini
- [配置文件内容如下]
- # [ndbd default]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项
- [ndbd default]
- # 每个数据节点的镜像数量(即复制成员的个数)
- NoOfReplicas=2
- # 为数据存储分配的内存
- DataMemory=80M
- # 为索引存储分配的内存
- IndexMemory=18M
- [ndb_mgmd]
- # 定义管理节点的ip地址或者主机名
- hostname=192.168.1.118
- # 管理节点数据(日志)目录
- datadir=/var/lib/mysql-cluster
- # 定义数据节点的ip地址,数据存放目录
- [ndbd]
- hostname=192.168.1.122
- datadir=/usr/local/mysql
- [ndbd]
- hostname=192.168.1.119
- datadir=/usr/local/mysql
- [ndbd]
- hostname=192.168.1.120
- datadir=/usr/local/mysql
- [ndbd]
- hostname=192.168.1.121
- datadir=/usr/local/mysql
- # 定义sql节点
- [mysqld]
- hostname=192.168.1.125
- [mysqld]
- hostname=192.168.1.123
- [mysqld]
- hostname=192.168.1.124
- # 留一个空的[mysqld],以备扩展用, 否则会出现Failed to allocate nodeid No free node id found for ndbd(NDB)错误
- [mysqld]
- [mysqld]
(3).解压mysql-cluster压缩包
- [root@client118 ~]# tar -xf mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
- [root@client118 ~]# cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64
- # 将管理节点用到的两个ndb_mgm*命令复制到/usr/local/bin/下
- [root@client118 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# cp bin/ndb_mgm* /usr/local/bin/
- [root@client118 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# cd /usr/local/bin/
- # 将上述命令赋予执行权限
- [root@client118 bin]# chmod +x ndb_mgm*
- # 建立mysql目录
- [root@client118 bin]# mkdir /usr/local/mysql
4.配置数据节点和sql节点:
# 我在数据节点和sql节点都初始化了系统数据库,个人觉得数据节点可以不初始化系统数据库,大家可以这样试一下
(1).在每个sql节点和数据节点配置my.cnf
- [root@client123 ~]# vim /etc/my.cnf
- [client]
- socket=/usr/local/mysql/sock/mysql.sock
- [mysqld]
- ndbcluster
- datadir=/usr/local/mysql
- socket=/usr/local/mysql/sock/mysql.sock
- port=3306
- # 指定管理节点ip地址
- ndb-connectstring=192.168.1.118
- old_passwords=1
- [mysql_cluster]
- # 指定管理节点ip地址
- ndb-connectstring=192.168.1.118
(2).在每个sql节点创建mysql用户和组[可以仅在sql节点执行建立mysql用户,数据节点可建可不建]
- [root@client120 ~]# groupadd mysql
- [root@client120 ~]# useradd -g mysql mysql
- # 建立mysql目录
- [root@client123 ~]# mkdir /usr/local/mysql
- [root@client123 ~]# mkdir /usr/local/mysql/sock
(3).在sql节点和数据节点都执行如下操作[数据节点如果在/usr/local没有mysql目录,建立此目录]
- [root@client123 ~]# tar -xf mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
- [root@client123 ~]# cd /usr/local/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64
- # 将解压的内容移动到 /usr/local/mysql目录下
- [root@client124 mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64]# mv ./* ../mysql
(4).在sql节点初始化系统数据库,并修改相应目录权限和开机启动
- # 初始化系统数据库
- [root@client124 mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
- [root@client123 mysql]# chown -R mysql.mysql /usr/local/mysql/data
- [root@client123 mysql]# chown -R mysql.mysql /usr/local/mysql/sock
- [root@client123 mysql]# chown -R mysql .
- [root@client123 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
- [root@client123 mysql]# chmod +x /etc/init.d/mysqld
- [root@client123 mysql]# chkconfig --add mysqld
5.cluster环境的启动
注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点。
关闭顺序:先关闭sql节点,再关闭管理节点[ndb_mgm> shutdown]
(1).管理节点启动
- [root@client118 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
- # 启用ndb_mgm来监听客户端,如下:
- [root@client118 ~]# ndb_mgm
- # 输入show,查看集群状况
- ndb_mgm> show
(2).启动数据(ndb)节点
- # 首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。
- # 在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件[在备份、恢复或配置变化后重启时除外]
- [root@client119 ~]# /usr/local/mysql/bin/ndbd --initial
- 如果不是首次启动,则执行下面的命令。
- [root@client119 ~]# /usr/local/mysql/bin/ndbd
(3).sql节点启动
- # sql节点可以执行如下命令
- [root@client123 ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
- # 如果将mysql的启动脚本已经复制到/etc/init.d下,可以执行如下:
- [root@client123 ~]# /etc/init.d/mysqld start
(4).现在再到管理节点,使用show命令看,是不是数据节点和sql节点都连上了
- ndb_mgm> show
- Cluster Configuration
- ---------------------
- [ndbd(NDB)] 4 node(s)
- id=2 @192.168.1.122 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
- id=3 @192.168.1.119 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
- id=4 @192.168.1.120 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)
- id=5 @192.168.1.121 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)
- [ndb_mgmd(MGM)] 1 node(s)
- id=1 @192.168.1.118 (mysql-5.6.14 ndb-7.3.3)
- [mysqld(API)] 5 node(s)
- id=6 @192.168.1.125 (mysql-5.6.14 ndb-7.3.3)
- id=7 @192.168.1.123 (mysql-5.6.14 ndb-7.3.3)
- id=8 @192.168.1.124 (mysql-5.6.14 ndb-7.3.3)
- id=9 (not connected, accepting connect from any host)
- id=10 (not connected, accepting connect from any host)
6.测试
(1).在任意sql节点创建测试数据
- # 为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:
- [root@client123 ~]# mysql
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 2
- Server version: 5.6.14-ndb-7.3.3-cluster-gpl MySQL Cluster Community Server (GPL)
- Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> create database xcg;
- mysql>use xcg
- mysql>create table teacher(t_id int) engine=ndb;
- # 如果是一个已经存在的表,用alter table修改表的引擎。
- mysql>alter table student engine=ndb;
- # 插入一条数据:
- mysql>insert into teacher values(133);
- # 然后用另外一个sql节点登陆,查询数据,看是否能看到
- mysql>select * from teacher;
- # 两个节点数据保持一致,说明测试成功!
(2).模拟某一个数据(ndb)节点节点宕掉
# 在任意一个数据节点上终止掉NDB进程,然后再分别通过SQL节点去访问teacher表,查看是否可以正常访问,数据是否一致。
# 这里就不演示了,各位自行测试,ndb进程使用kill -9 杀掉进程
(3).模拟sql节点宕掉,原理同上,不演示
注意:
(1).在测试过程中,遇到ndb节点莫名重启,有点纳闷,待解!
(2).每次修改config.ini文件,重启ndb_mgmd时,需要删除mysql-cluster文件下的ndb_1_config.bin.1文件,
因为他默认调用此文件
(3).mysql-cluster主要配置选项:管理节点配置configure.ini,sql和数据节点配置/etc/my.cnf
MySQL-Cluster 初识的更多相关文章
- MySQL Cluster 集群简介
简介 MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)系统里应用内存数据库集群的技术.这种无共享的架构可以使得系统使用低廉的硬件获取高的可扩展性. My ...
- MySQL Cluster 数据分布(分区、分组)
数据分布 1.MySQL Cluster自动分区数据表(也可能使用用户自定义分区),将数据分布到分区中: 2.一个数据表被划分到多个Data Node分区中,数据在分区中被”striped”: 3.主 ...
- MySQL Cluster 7.3.5 集群配置实例(入门篇)
一.环境说明: CentOS6.3(32位) + MySQL Cluster 7.3.5,规划5台机器,资料如下: 节点分布情况: MGM:192.168.137. NDBD1:192.168.137 ...
- MySQL Cluster 7.3.5 集群配置参数优化(优化篇)
按照前面的教程:MySQL Cluster 7.3.5 集群配置实例(入门篇),可快速搭建起基础版的MySQL Cluster集群,但是在生成环境中,还是有很多问题的,即配置参数需要优化下, 当前生产 ...
- 【推荐】MySQL Cluster报错及解决方法(不断更新中)
排查问题技巧: MySQL Cluster 自带了一个错误代码的查看的小程序.通过这个小东西我们可以方便的定位问题的原因. 这个程序就是 perror 在MYSQL安装目录的bin下面. 如报错:ER ...
- MySQL Cluster搭建与测试
MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和Oracle Real Cluster Ap ...
- MySQL Cluster 配置文件(config.ini)详解
MySQL Cluster 配置文件(config.ini)详解 ################################################################### ...
- MySQL Cluster 配置详细介绍
在上篇文章已经详细说明了MySQL Cluster搭建与测试,现在来说说详细的配置参数.在MySQL Cluster 环境的配置文件 config.ini 里面,每一类节点都有两个(或以上)的相应配置 ...
- mysql集群 MySQL Cluster
<?php /* 郑重说明2015年6月11日16:28:14,目前为止MySQL Cluster 社区版不支持INNODB,商业版支持,但是授权价格20W左右,so看此文档之前,考虑下钱 My ...
- How to use kingshard building a MySQL cluster
How to use kingshard building a MySQL cluster https://github.com/flike/kingshard/blob/master/doc/Kin ...
随机推荐
- Zookeeper简介(五)
1.定义 Zookeeper:是一个分布式的,开发源码的分布式应用程序协调服务,是hadoop的子项. 2. 特点 具有高可靠性,可扩展性,分布式,可配置的协调机制. 3. 作用 3.1 数据发布与订 ...
- 货币兑换问题(贪心法)——Python实现
# 贪心算法求解货币兑换问题 # 货币系统有 n 种硬币,面值为 v1,v2,v3...vn,其中 v1=1,使用总值money与之兑换,求如何使硬币的数目最少,即 x1,x2,x3...xn 之 ...
- SQL SERVER 按时间计算每天某值的平均值
在报表需求中,有针对求每天按时间分配数据的平均值,在经过查找后,找到一种方法,供参考. 1.新建视图 2.编写语句 SELECT TOP (100) PERCENT AVG(dbo.漕盈日运行.CO ...
- Elsevier(爱思唯尔)期刊模板的使用
1.爱思唯尔(Elsevier)期刊模板的使用 2.sci论文(以Elsevier为例) latex文件从小白到投稿 3.初次使用爱斯维尔(Elsevier)论文模板遇到的坑 4.latex学习 da ...
- 快速上手 Rook,入门云原生存储编排
Rook 是一个开源 cloud-native storage orchestrator(云原生存储编排器),为各种存储解决方案提供平台.框架和支持,以与云原生环境进行原生集成. Rook 将存储软件 ...
- openresty——yum安装 配置 使用 错误处理 docker方式安装
yum方式安装 wget https://openresty.org/package/centos/openresty.repo mv openresty.repo /etc/yum.repos.d/ ...
- 攻防世界Web区部分题解
攻防世界Web区部分题解 前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...
- C++//菱形继承 //俩个派生类继承同一个基类 //又有某个类同时继承俩个派生类 //成为 菱形继承 或者 钻石 继承//+解决
1 //菱形继承 2 //俩个派生类继承同一个基类 3 //又有某个类同时继承俩个派生类 4 //成为 菱形继承 或者 钻石 继承 5 6 #include <iostream> 7 #i ...
- C# 10 完整特性介绍
前言 开头防杠:.NET 的基础库.语言.运行时团队从来都是相互独立各自更新的,.NET 6 在基础库.运行时上同样做了非常多的改进,不过本文仅仅介绍语言部分. 距离上次介绍 C# 10 的特性已经有 ...
- scrapy爬虫框架使用
一.scrapy框架 1.什么是scrapy: 爬虫中封装好的一个明星框架.功能:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式. 2.使用方法: 安装: 下载tiwisted,此处位下 ...