SQL节点: 给上层应用层提供sql访问。

管理节点(MGM):  管理整个集群。 启动,关闭集群。 通过ndb_mgmd命令启动集群

存储/数据节点: 保存cluster中的数据。  数据节点,可以提供副本。实现数据冗余。

NDB引擎:是一种 “内存中”的存储引擎 , 它具有可用性高和数据一致性好的特点。

缺陷

  • 基于内存,数据库的规模受集群总内存的大小限制
  • 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。
  • 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢

2.2 优点

  • 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
  • 扩展性很好,增加节点即可实现数据库集群的扩展。
  • 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。

Mysql cluster的下载地址:http://dev.mysql.com/downloads/cluster/

在我们做的实验中mysql cluster集群各机器角色如下分配:

mysql管理结点:xuegod63.cn   IP:192.168.31.130

mysql 数据结点:xuegod63.cn   IP:192.168.31.130

mysql 数据结点:xuegod64.cn   IP:192.168.31.131

msyql SQL结点:xuegod63.cn   IP:192.168.31.130

msyql SQL结点:xuegod64.cn   IP:192.168.31.131

将MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar上传到130,131主机

实战:MySQL集群搭建

1.mysql旧版本清除

yum -y remove mysql

rpm -qa | grep mysql*

对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2.mysql cluster版本安装准备

[root@ygy130 ~]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar

[root@yu131 yy]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar

3.创建文件夹

(分如下3个类来创建对应的文件夹)

数据结点存放数据,: [root@ygy130 ~]# mkdir /var/lib/mysql

管理节点: [root@ygy130 ~]# mkdir /var/lib/mysql-cluster     SQL节点:可不用  文件夹授权

进程DIR:     [root@ygy130 ~]# mkdir /var/run/mysqld

[root@yu131 yy]# mkdir /var/run/mysqld

4.安装mysql集群软件包

[root@ygy130 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm

[root@ygy130 ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

[root@yu131 yy]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm

[root@yu131 yy]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中。

5.赋权限

[root@ygy130 ~]# chown mysql:mysql -R /var/lib/mysql

[root@ygy130 ~]#  chown mysql:mysql -R /var/lib/mysql-cluster/

[root@ygy130 ~]# chown mysql:mysql -R  /usr/mysql-cluster/

[root@ygy130 ~]#  chown mysql:mysql -R /var/run/mysqld/

[root@ygy130 ~]# chown mysql:mysql -R /usr/mysql-cluster/

[root@yu131 yy]# chown mysql:mysql -R /var/run/mysqld

 搭建mysql集群

[root@ygy130 ~]# vim /var/lib/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas=2    #数据写入数量。2表示两份
DataMemory=200M
IndexMemory=100M  #索引给100M

[ndb_mgmd]
id=1
datadir=/var/lib/mysql-cluster   # 管理结点的日志

HostName=192.168.31.130    #管理结点的IP地址。本机IP
###### data node options:
[ndbd]
HostName=192.168.31.130
DataDir=/var/lib/mysql          #mysql数据存储路径

id=2
[ndbd]
HostName=192.168.31.131  
DataDir=/var/lib/mysql 
id=3
# SQL node options: #关于SQL结点
[mysqld]
HostName=192.168.31.130
id=4
[mysqld]
HostName=192.168.31.131
id=5

~
数据节点+SQL节点配置文档 + 主从同步

[root@ygy130 ~]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql              #mysql数据存储路径  数据节点(配置要加)

ndbcluster                #启动ndb引擎

ndb-connectstring=192.168.31.130    # 管理节点IP地址

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130       #管理节点IP地址
[mysqld]
log-bin=mysql-bin-master         #配置主从同步
server-id = 10

[root@yu131 yy]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
ndbcluster
ndb-connectstring=192.168.31.130
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130
[mysqld]
log-bin=mysql-bin-slave
server-id = 11
~

MySQL Cluster启动

[root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@ygy130 ~]# ndbd --initial              第一次启动加--initial

[root@yu131 yy]# ndbd --initial

启动SQL结点服务

[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

设置密码及相关mysql设置

[root@ygy130 ~]# cat /home/yy/.mysql_secret

[root@ygy130 ~]# mysql_secure_installation

[root@yu131 yy]# cat  /root/.mysql_secret

[root@yu131 yy]# mysql_secure_installation

查看mysql 集群状态:

[root@ygy130 ~]# ndb_mgm

130

mysql> grant replication slave on *.* to slave@192.168.31.131 identified by "123456";

mysql> flush privileges;

131

mysql>change master to master_host='192.168.31.130',master_user='slave',master_password='123456';

mysql> start slave;

mysql> show slave status\G  查看状态

130

mysql> create database yy;

mysql> use yy

mysql> create table tt(id int);

mysql> insert into tt values(11);

131

mysql> use yy

mysql> select * from tt;

关闭服务

[root@ygy130 ~]#  ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> shutdown

ndb_mgm> exit

[root@ygy130 ~]# ps -axu | grep  ndbd           #查看不到,说明数据节点已经被关

[root@ygy130 ~]# kill -9 pid号

[root@yu131 yy]# ps -axu | grep  ndbd           #查看不到,说明数据节点已经被关

[root@yu131 yy]# kill -9 pid号

启动服务

[root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@ygy130 ~]# ndbd

[root@yu131 yy]#  ndbd

[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf  &

[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf  &

备注:集群做了数据库的同步,没有做数据库表的同步,具体还是没有理解这样做的意义,如果集群不能主从同步,那么之前画的那个图就不准确。

  因此这里自定义加的数据库表的同步:采用主从同步的方式。

  后期做成M-s s-M,这样无论修改哪一边的数据,都能同步了。

mysql 集群+主从同步的更多相关文章

  1. mysql 集群 数据同步

    mysql集群配置在网站负载均衡中是必不可少的: 首先说下我个人准备的负载均衡方式: 1.通过nginx方向代理来将服务器压力分散到各个服务器上: 2.每个服务器中代码逻辑一样: 3.通过使用redi ...

  2. 关于mysql集群主从服务器搭建

    在高并发流量下,数据库往往是服务端的瓶颈,由于数据库数据需要确保落地,同时保证数据同步,数据即时性,有效性的问题,导致数据库不能像平常后端程序一样负载均衡. 那么在大并发下,该如何缓解数据库的压力呢? ...

  3. LINUX学习-Mysql集群-主从服务器备份

    一.Mysql主从集群备份. 1.准备两台主机 主服务器:192.168.88.20和从服务器:192.168.88.30 2.分别安装mysql yum -y -install mysql mysq ...

  4. 高可用性、负载均衡的mysql集群解决方案

    高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...

  5. MySql集群FAQ----mysql主从配置与集群区别、集群中需要多少台计算机呢?为什么? 等

    抽取一部分显示在这里,如下, What's the difference in using Clustervs using replication? 在复制系统中,一个MySQL主服务器会更新一个或多 ...

  6. Mysql集群搭建(多实例、主从)

    1 MySQL多实例 一 .MySQL多实例介绍 1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通 ...

  7. 浅谈mysql集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  8. MySQL集群(二)之主主复制

    前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点.接下来我将详细的给大家介绍,怎么去配置主主复制! 一.主从复制中的问题 1.1.从节 ...

  9. MySQL集群PXC的搭建

    MySQL集群PXC的搭建 最近公司某客户要求我们的数据库搭建PXC集群以保证他们的系统高性能和搞稳定性 以后花费了一些时间去搭建和测试,也踩过一些坑,准备分享出来 系统:centos6.6PXC:5 ...

随机推荐

  1. laravel 的DB::raw() 语法使用

    z之前在项目中遇到一个问题,复杂的sql查询,用laravel的查询构造器,非常的不方便,各种查询条件拼接一长串拼得脑瓜疼:然后想使用原生的sql语句来查询,然后又使用不了laravel的pagina ...

  2. 213. String Compression【LintCode java】

    Description Implement a method to perform basic string compression using the counts of repeated char ...

  3. JSP页面中文乱码问题

    $.get()方法到服务器端中文乱码 在jsp页面使用encodeURI(“中文”),在服务器端进行解码 String name = req.getParameter("name" ...

  4. EF中如何为表添加新的字段和映射

    首先先了解一下ef生成的模型edmx的代码,传送门:http://www.cnblogs.com/yushengbo/p/4807715.html 一.添加新的字段 例子就用我现在项目的这个吧,首先在 ...

  5. 从零开始的Python学习Episode 4——列表

    一.列表 列表与数组相似,定义一个列表 a=[1,2,3,4,5] 1.基本操作 a=[1,2,3,4] #切片 范围取值时,包括第一项但不包括最后一项,顾头不顾尾 print(a[0:]) #从头到 ...

  6. 使用HTML5制作loading图

    昨天发了一篇使用HTML5 canvas写的时钟的文章,今天发一篇关于使用HTML5制作loading图的文章. <!DOCTYPE html> <html> <head ...

  7. SOA是什么为什么要面向服务编程

    SOA(面向服务的架构),Service-Oriented Architecture,面向服务的体系结构. 也就是以服务为核心的架构.这里需要理解什么是服务. 比如你有一个读取通知的方法: publi ...

  8. Java常用类之StringBuffer

    StringBuffer 类: 1. java.lang.StringBuffer 代表可变的字符序列: 2. StringBuffer 和 String 类似,但是 StringBuffer 可以对 ...

  9. 项目UML设计--日不落战队

    [团队信息] 团队项目: 小葵日记--主打记录与分享模式的日记app 队名:日不落战队 队员信息及贡献分比例: 短学号 名 本次作业博客链接 此次作业任务 贡献分配 备注 501 安琪 http:// ...

  10. FineCMS介绍

      产品简介 FineCMS(简称免费版.企业版.公益版)是一款基于PHP+MySql+CI框架开发的高效简洁的中小型内容管理系统,面向多终端包括Pc端网页和移动端网页,支持自定义内容模型和会员模型, ...